コードレビュー

コードレビューとは?

コードレビューとは、ソフトウェア品質の向上を目的とした、ソフトウェアソースコードを体系的に検査し不具合を特定する作業です。組み込みシステムの開発における重要なタスクであり、特に、認証取得が必要な場合、欠かせない作業です。

通常、コードレビューはチームで行い、モデレータ、品質エンジニアかマネージャー、ソフトウェア開発者や、その他のメンバーから成るレビュアーとレビュイーで構成されます。主にチェックリストに基づき、設計仕様や、コード複雑性の評価や、MISRA-C/C++等のコーディング規約への準拠の確認など、系統的にソフトウェアをレビューします。

コードレビューに重要な観点

効果的なコードレビューとは、設計仕様の達成度の確認、仕様抜け漏れのチェック、設計アーキテクチャやインターフェースなど、設計部分に注力してレビューします。

再現性に乏しいランタイムエラーや、単純な欠陥の検出を目視で識別することは非常に困難であり、コードレビューでは効果的ではありません。また、プログラム制御を含む複雑な数式演算によるオーバーフローやアンダーフローは見逃されやすく、こうした典型的なバグやセキュリティホールは、コードレビュー前に、コードレビュー支援ツールを使うことで、作業を大幅に自動化、効率化することができます。

コードレビュー支援ツールのメリット

Polyspace®などのコードレビュー支援ツールを使うことで、以下のようなメリットがあります。

  • 目視での発見が困難な、ランタイムエラー、並列処理問題、セキュリティ脆弱性およびその他の欠陥の検出
  • MISRA®、JSF++等のコーディング規約への準拠により、コーディングスタイルの一貫性を保ち、コードの可読性や保全性を向上
  • 制御フロー及びデータフローの詳細情報や、関数コール図表や、データディクショナリーによる変数の書き込み・読み取りの追跡により、ソフトウェア実行時の振舞いを理解可能
  • コード メトリクスの生成とソフトウェア品質の監視

これにより、コードレビュー前に欠陥を発見、修正でき、テスト工数が削減されるため、エンジニアは重要な設計や要求仕様の改善に注力することができます。

Polyspace検証結果による実行時の振る舞いの表示

Polyspace検証結果による実行時の振る舞いの表示

目視ではなくツールを使用するメリットの一つとして、対象のコードが数百行でも、数十万行でも、同じように解析可能という点が挙げられます。また、ランタイムエラーが発生する可能性のあるコードと、ランタイムエラーがないことが証明されたコードを特定したレポートも自動生成可能であり、コードレビュープロセスでの成果物として利用することができます。

Polyspaceによるランタイムエラーに対する安全性を評価

Polyspaceによるランタイムエラーに対する安全性を評価

バグの早期発見による投資対効果

テスト段階で発見されたバグは、コーディング段階で発見されたバグよりも、修正に10倍多くコストがかかります。さらに、量産段階でバグが発見されると、100倍コストがかかると言われています。2015年には、全世界で5,000万台以上の自動車がリコール対象となり、これによる自動車業界の損失額は計り知れません。このため、開発の初期段階でバグを発見することが非常に重要です。

Polyspaceによる開発初期段階でのバグ検出

Polyspaceを使用すると、テスト工数を20%削減、コードレビューの時間を40%削減することができます。さらに、ソースコードにランタイムエラーがないことを証明できるため、コードレビュー前での活用により、コードの安全性の確認の負荷を低減でき、目視のコードレビューの前に多くの欠陥を指摘、修正することができます。

詳しくは、Polyspace の製品ページをご覧ください。

参考: 静的解析, ランタイムエラー, 形式手法 / 形式検証, 組み込みシステム, 検証とテスト