静的解析(コーディングスタンダード解析)とは
静的解析の利点
- コーディング時という開発の早い段階でエラーを検出できるため、バグ修正コストを抑制できる。
- プロジェクトの共通のコーディングスタイルを推進できるため、コードの可読性や保守性が向上する。
- ツールによって自動化しやすいため、導入が比較的容易。
- 開発者が良いコーディングスタイルを意識するようになる。ベテランの開発者が暗黙のうちに身につけている良いコーディング習慣を経験のない開発者も自然に習得できる。
- 目視によるレビューの効果を高められる。レビューの前に、機械的に指摘できるエラーを摘み取ることが可能なので、レビューでは設計などの高度な問題に集中できる。
静的解析(コーディングスタンダード解析)で検出できる問題
コードの可読性に関する問題- 命名規約違反
- インデントなど書式の問題
エラーが発生しやすいパターン
コンパイルエラーにはならないが、エラーの原因になりやすいために避けるべき実装パターンを指摘できます。これまでの多くの開発者や専門家の経験から、C・C++、Java、C#、VB .NET など、言語の特性に応じた多数の推奨パターン(ベストプラクティス)または避けるべきアンチパターンが蓄積されており、そのようなコーディング作法を解説した書籍が多く出版されています。
また、ソフトウェアの応用分野や目的に応じて、業界団体などが定めたコーディング標準が存在し、規約への準拠が求められる場合もあります。
以下はそのようなコーディング標準の例です。
- MISRA-C、MIRA-C++ 規約
MISRA (Motor Industry Software Reliability Association)が定めたC・C++言語向けのコーディング規約です。元々は自動車関連ソフトウェア向けの規約でしたが、現在は、高い信頼性と安全性が要求される組込み開発分野で広く利用されています。
- PCI DSS
PCI DSS(Payment Card Industry Data Security Standard)は、国際的なクレジット カード会社が共同で策定した、カード会員データを取り扱う事業者が準拠すべきグローバルな基準です。この標準は、「すべてのWebアプリケーションを『Open Web Application Security Project Guide』などの安全なコーディングガイドラインに基づいて開発する」と定めています。OWASP Top Ten Projectは、セキュリティの有識者からなるプロジェクトメンバーが選んだ、Webアプリケーションの最も危険な 10個の脆弱性を発表するものです。
コードの複雑さなどに関する問題(メトリクス解析)
- クラス、メソッド、メソッド引数などの数
- クラス、メソッドの処理の複雑さ
- クラス間の依存関係
規模の大きすぎるコード、複雑すぎるコード、他のモジュールへの依存性が高すぎるコードは保守が難しく、エラーが混入しやすいものです。これらの問題の指標となるメトリクスを継続的に測定し、一定の値を超えたモジュールについてはリファクタリング等で問題を解決して、コードの健全性を保つことが重要です。静的解析ツールには、メトリクス解析機能を持ち、しきい値を超えたモジュールを警告できるものもあります。
静的解析(コーディングスタンダード解析)と機能安全規格コンプライアンス
関連項目
- 検証の種類-単体テスト
- 検証の種類-カバレッジ
- 検証の種類-静的解析
- 検証の種類-フロー解析
静的解析を自動化するツール
- C・C++言語:C++test(C/C++対等自動テストツール)の静的解析
- Java言語:Jtest(Java対応自動テストツール)の静的解析
- .NET:dotTEST(.NET対応自動テストツール)の静的解析
お問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- se-info@techmatrix.co.jp
- HOME
- ソフトウェアの検証の種類
- 静的解析(コーディングスタンダード解析)とは