静的コード解析と検証
静的解析は、ソースコードを実行せずに検査を行うもので、テストや統合の段階で不具合が表面化するのではなく、不具合が発生した時点でそれを特定します。規制対象業界における組み込みCおよびC++開発において、プロジェクトの初期段階から継続的に静的解析を実行することで、コードベース全体に不具合の種類が蓄積されるのを防ぎ、認証取得前に解決すべき不具合の数を削減することができます。
静的解析の役割
静的解析ツールは、ソースコードを体系的に解析し、ルールセットを適用することで、テストだけでは発見が困難、あるいは不可能な問題を特定します。動的テストとは異なり、結果はテスト入力やランタイム条件によって変動することはありません。つまり、同じコードであれば、実行するたびに同じ結果が得られます。
主な手法には、以下のものが挙げられます:
- コーディング標準のルールに対するパターンマッチングを行い、違反や疑わしい構文をフラグ付けする
- 実行パス全体にわたって変数の値をモニタリングし、無効な状態を検出するための値追跡
- 変数が想定された値の範囲内に収まっていることを検証するための境界値チェック
- コントロールフローおよびデータフローの抽象解釈を行い、依存関係や到達可能性の問題を特定すること
静的解析で何が判明するか
静的解析によって確実に検出される欠陥の種類には、以下が含まれますが、これらに限定されるわけではありません:
- ヌルポインタの参照および配列の範囲外アクセス
- 初期化されていない変数および不適切な型変換
- MISRA C:2025、MISRA C:2023、MISRA C++:2023、AUTOSAR C++、およびCERT-Cを含むコーディング標準への違反
- CWE分類(CWE Top 25およびTop 10 KEVリストを含む)に対するセキュリティ上の脆弱性のマッピング
- 到達不可能なコード、論理エラー、およびリソースリーク
- レースコンディションや不適切な操作シーケンスを含む並行処理上の問題
PC-lint Plus
PC-lint Plusは、ベクター社が提供するCおよびC++ソースコード用の静的解析ツールです。exida社により、IEC 61508(SIL 1~3)、ISO 26262(ASIL A~D)、IEC 62304、およびEN 50716への準拠が認証されており、CWEとの互換性も認証されています。
PC-lint Plusは、MISRA C:2025、MISRA C:2023、MISRA C:2012(修正第1~4号)、MISRA C++:2023、MISRA C++:2008、AUTOSAR C++、CERT-C、およびCWEを標準でサポートしています。 事実上あらゆるビルドチェーンや開発環境に統合可能で、テレメトリやインターネット接続を必要とせずにローカルで実行でき、並列処理により大規模なコードベースでも効率的にスケーリングします。抑制管理は完全にトレーサブルです。すべての抑制が記録され、ルールレベルでクエリベースの例外を定義でき、未使用の抑制は自動的にフラグが立てられます。