複雑度インデックスメトリック

Klocwork の複雑度インデックスは、過剰に複雑なソースコードの開発と保守に関係するリスクを定量化します。複雑度によるリスクを評価することで、次を実行することができます。

  • テスト計画と検査計画のコストの削減。
  • 全体的なコード品質と信頼性を評価します。
  • 開発およびその後の保守取り組みの見積もりに対する追加情報の提供。

複雑度を測定する方法

インデックスは、複雑度特性を使用して計算される統計的尺度で、リスクの重大さを予測します。これらの特性を以下に示します。
  • 独立したパスの数

    パス数が大きいことは、テスト容易性の潜在的問題、または、ブランチ化の高い度合いを示し、どちらも潜在的な欠陥に関連があります。

  • 最大ネスティングレベル

    ネスティングの度合いが高いことは、多くの場合大きい状態空間および認知オーバーロードに関連しています。この条件におけるコードの変更は、多くの場合危険です。

  • ファイルインクルード

    過度なインクルードの数は、タイプおよびマクロの進化、宣言、イベントの順番など、依存関係に関連する問題の重大な潜在的可能性があることを示します。

  • オペランドの数

    オペランドの数が多いことは、ソフトウェアのアップデート時や変更時に正確さを妨げます。このことは、不適切なパラメーター操作と記号参照、複雑なステートメントの誤った解釈、定数の不適切なコーディングなどによります。また、オペランドの数は定数誤りの密度と仮定して、一般的な欠陥を予測する全体的なサイズを示します。

  • 関数の数

    関数の数は全体的なサイズを示し、オペランドの数と同様に、欠陥を予測します。低い結合 (ソースコード関連性の尺度) を伴う大きな値は、強いカップリングなどの、不適切なプログラミング方法を示す場合があります。

これらの特性は、それぞれ、許容される頻度に従ってスケーリングされ (例えば、より多くのオペランドはインクルードファイルよりは許容されます)、全体的な複雑度リスクの可能性に加算されます。

アプリケーション

Klocwork の複雑度リスクインデックスは、ファイルレベルで ID = 34、および、メトリックコード = 「Risks」を使用して報告されます。計算された可能性は、1 未満であれば低いと考えられ、3 を超えれば高いと考えられます。すべてのメトリックスと同様に、レポート作成のしきい値は調整できます。