コードレビューとは?
コードレビューとは、ソフトウェア品質の向上を目的とした、ソフトウェアソースコードを体系的に検査し不具合を特定する作業です。組み込みシステムの開発における重要なタスクであり、特に、認証取得が必要な場合、欠かせない作業です。
通常、コードレビューはチームで行い、モデレータ、品質エンジニアかマネージャー、ソフトウェア開発者や、その他のメンバーから成るレビュアーとレビュイーで構成されます。主にチェックリストに基づき、設計仕様や、コード複雑性の評価や、MISRA-C/C++等のコーディング規約への準拠の確認など、系統的にソフトウェアをレビューします。
コードレビューに重要な観点
効果的なコードレビューとは、設計仕様の達成度の確認、仕様抜け漏れのチェック、設計アーキテクチャやインターフェースなど、設計部分に注力してレビューします。
再現性に乏しいランタイムエラーや、単純な欠陥の検出を目視で識別することは非常に困難であり、コードレビューでは効果的ではありません。また、プログラム制御を含む複雑な数式演算によるオーバーフローやアンダーフローは見逃されやすく、こうした典型的なバグやセキュリティホールは、コードレビュー前に、コードレビュー支援ツールを使うことで、作業を大幅に自動化、効率化することができます。
コードレビュー支援ツールのメリット
Polyspace®などのコードレビュー支援ツールを使うことで、以下のようなメリットがあります。
- 目視での発見が困難な、ランタイムエラー、並列処理問題、セキュリティ脆弱性およびその他の欠陥の検出
- MISRA®、JSF++等のコーディング規約への準拠により、コーディングスタイルの一貫性を保ち、コードの可読性や保全性を向上
- 制御フロー及びデータフローの詳細情報や、関数コール図表や、データディクショナリーによる変数の書き込み・読み取りの追跡により、ソフトウェア実行時の振舞いを理解可能
- コード メトリクスの生成とソフトウェア品質の監視
これにより、コードレビュー前に欠陥を発見、修正でき、テスト工数が削減されるため、エンジニアは重要な設計や要求仕様の改善に注力することができます。
Polyspace検証結果による実行時の振る舞いの表示
目視ではなくツールを使用するメリットの一つとして、対象のコードが数百行でも、数十万行でも、同じように解析可能という点が挙げられます。また、ランタイムエラーが発生する可能性のあるコードと、ランタイムエラーがないことが証明されたコードを特定したレポートも自動生成可能であり、コードレビュープロセスでの成果物として利用することができます。
Polyspaceによるランタイムエラーに対する安全性を評価
バグの早期発見による投資対効果
テスト段階で発見されたバグは、コーディング段階で発見されたバグよりも、修正に10倍多くコストがかかります。さらに、量産段階でバグが発見されると、100倍コストがかかると言われています。2015年には、全世界で5,000万台以上の自動車がリコール対象となり、これによる自動車業界の損失額は計り知れません。このため、開発の初期段階でバグを発見することが非常に重要です。
Polyspaceによる開発初期段階でのバグ検出
Polyspaceを使用すると、テスト工数を20%削減、コードレビューの時間を40%削減することができます。さらに、ソースコードにランタイムエラーがないことを証明できるため、コードレビュー前での活用により、コードの安全性の確認の負荷を低減でき、目視のコードレビューの前に多くの欠陥を指摘、修正することができます。
詳しくは、Polyspace の製品ページをご覧ください。
コードレビュー関連資料
コードレビューに関するよくある質問
コードレビューは、コードの問題を特定しソフトウェア品質を向上させるために行うピアレビューのプロセスで、特に組み込みシステムの開発や認証において重要です。
コードレビューチームは通常、モデレーター、品質エンジニアまたはマネージャー、および同僚のソフトウェア開発者で構成されます。
レビューはコーディングエラーを早期に検出し、コーディング規約への準拠を検証し、コードの複雑度を低減し、論理やアーキテクチャの問題を特定し、チームの所有意識を促進し、若手エンジニアのメンター役を果たします。
レビュー時間は60分未満、または一度に約400行のコードに制限して、レビュアーの集中力を維持してください。
コードレビューのチェックリストはレビュアーに体系的なガイドラインを提供し、コードが品質基準を満たしていることを確認し、ソフトウェアの関連する側面がすべてレビューされるようにします。
静的解析はプログラミングエラーを迅速に検出し、コーディングルールへの準拠を確保するため、レビュアーは論理や設計上の問題の検出など、より複雑な側面に集中できるようになります。
Polyspace の静的解析製品は形式手法を用いてソースコードのコーディング規約違反、コード欠陥、セキュリティ脆弱性を検査し、重大な実行時エラーが存在しないことを証明することができます。
はい。Polyspace は Visual Studio、Visual Studio Code、Eclipse のような IDE や、Review Board や Gerrit といったコードレビュー ツールと統合して、コード提出時に静的解析を自動化できます。
参考: 検証、妥当性確認、テスト, 組み込みシステム, 静的解析, ランタイムエラー, 形式手法 / 形式検証, 組み込みシステム, 検証とテスト