コード品質, MISRA, CI/CD

Zephyrにおける静的コード解析:IAR C-STATを活用し、安全かつ高品質なコードを実現

<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >Zephyrにおける静的コード解析:IAR C-STATを活用し、安全かつ高品質なコードを実現</span>

組込みソフトウェアの出荷は、単に「コンパイルできる」という問題に留まりません。安全性、セキュリティ、そしてコンプライアンスが重要です。

生産段階で入り込むバグは、エンジニアリングの時間を浪費し、信頼を損ないます。脆弱性は接続されたデバイスを危険に晒します。また、規制市場においては、MISRAやCERTのチェック漏れがリリースを遅らせる可能性があります。問題を早期に発見すればするほど、修正にかかるコストは安価になり、安全性も高まります。

静的コード解析(SCA)が役立つのはこの点です。SCAは、欠陥やコンプライアンス違反を、最も安価に修正できる早い段階で検出します。Zephyrでは、SCAを回り道をすることなく、そのままビルドプロセスに組み込むことができます。

ZephyrのWestフローに組み込まれた静的解析

組み込みチームにとって最大の課題の一つは、静的解析ツールを、それ向けに設計されていないビルドプロセスに無理に追加しようとすることです。Zephyrは、静的解析ツールをwestベースのビルドシステムに直接プラグインできるようにすることで、複雑なスクリプトや脆い回避策を不要にし、この問題を解決します。

解析ツールを選択するには、ZEPHYR_SCA_VARIANTビルド設定を使用するだけです。

これはCMakeの引数または環境変数として設定できます:
west build -b <ボード名> <アプリケーションパス> -- -DZEPHYR_SCA_VARIANT=<ツール名>

IAR C-STATのネイティブサポート

コード品質を証明し、安全/セキュリティ基準を満たす必要がある場合、ZephyrはIARプラットフォームの一部であるIAR C-STATのネイティブサポートにより、これまで以上に簡単にそれを実現します。

C-STATは、CおよびC++のための包括的な静的解析ツールで、以下の多くのコーディング標準や既知のセキュリティ脆弱性に対してコードをチェックします:

  • MISRA C / MISRA C++

  • CERT C / CERT C++

  • CWEとセキュリティのベスト・プラクティス

  • 信頼性と保守性のチェック

ZephyrでC-STATを有効にするのは簡単です。通常と同じようにビルドする際に、ZephyrのSCAバリアントツールとしてIAR C-STATを選択する追加のパラメーターを追加するだけです:

west build -b stm32f429ii_aca samples/basic/blinky -- -DZEPHYR_SCA_VARIANT=iar_c_stat

解析の微調整

厳密な安全コンプライアンスから軽量なセキュリティチェックまで、チームによってニーズはさまざまです。C-STATは柔軟で、ワークフローに合わせて解析を構成できます:

  • CSTAT_RULESET — ルールセットの選択(例:allcertmisrac2012misrac++2008stdcheckssecurity

  • CSTAT_ANALYZE_THREADS — 使用するスレッド数

  • CSTAT_ANALYZE_OPTS — 追加の解析フラグ(例:--timeout=900;--deterministic;--fpe

  • CSTAT_DB — SQLiteデータベースへのパス

  • CSTAT_CLEANUP — 解析前にデータベースをクリーンアップする

例えば、MISRA C:2012とCERTチェックを組み合わせる場合:

west build -b stm32f429ii_aca samples/basic/blinky -- \ -DZEPHYR_SCA_VARIANT=iar_c_stat \ -DCSTAT_RULESET=misrac2012,cert

ZephyrでSCAを採用する理由

静的解析は単なるコンプライアンスではなく、より良いソフトウェアをより速く構築するためのものです。SCAをZephyrのワークフローに直接組み込むことで、チームは次のことが可能になります:

  • 欠陥の早期発見 - NULL参照解除、バッファオーバーラン、未初期化データなど。

  • 標準への早期対応 - MISRAとCERTチェックをビルドに統合。

  • レビューの集中 - ツールが違反にフラグを立てるため、人間は設計に集中できる。

  • 信頼性の向上 - 監査や顧客向けにコードの健全性を継続的に証明。

ZephyrのSCAインフラストラクチャとネイティブのIAR C-STATサポートにより、ローカル、CI/CDパイプライン、コンテナのいずれでも、セキュリティ、安全性、コンプライアンスのチェックをすべてのビルドに統合できます。これにより、チームは問題を早期に発見し、後になって問題が発覚するのを回避し、よりクリーンで安全な、標準に準拠したコードを自信を持って出荷することができます。

詳細については、IAR C-STATによる静的コード解析に関するZephyrの公式ドキュメントを参照してください。その他のリソースや資料については、IARのコード品質とコンプライアンスソリューションもご覧ください。