ステキな一日

IT技術やトレンディな話題を中心に個人的なメモを書き綴っていきます。

サイクロマティック複雑度で、外注したプログラムのソースコードの品質を判定する方法

サイクロマティック複雑度をご存知でしょうか。この記事でご紹介するのは、サイクロマティック複雑度を使った、ソースコードの品質測定についてです。

たとえば、取引先に製造を依頼したプログラムの品質を判定するには、このサイクロマティック複雑度と他の管理手法とを組み合わせると良いでしょう。

【広告】  

サイクロマティック複雑度(循環的複雑度)とは

プログラム中の、IF、for、switchのcaseなどの分岐経路の数を数えることで、プログラムの複雑度を計測する方法です。

この方法で導き出された複雑度は、プログラムの可読性についての指標ともなります。

また、計測した複雑度から以下のように判定する目安もあります。

循環的複雑度 複雑さの状態 バグ混入確率
10以下 非常に良い構造 25%
30以上 構造的なリスクあり 40%
50以上 テスト不可能 70%
75以上 いかなる変更も誤修正を生む 98%

出典:https://jp.mathworks.com

 詳しくはWikiで確認してください。

循環的複雑度 - Wikipedia

 サイクロマティック複雑度の計測ツール

フリーソフトの lizard というものがあります。

lizardは、python上で実行できるフリーのツールです。

インストールなどは以下の記事に詳しく説明があります。ただしMacOS向けの内容ですので、Windowsの場合は少し異なる部分があります。

qiita.com

 

ソースコードの品質判定

最近のシステムは大規模なものが多く、全てのソースコードを目視確認するわけには行きません。 上記で説明したサイクロマティック複雑度を用いて、ある範囲のコードに絞りこんで目視検査します。

ツールを使って、複雑度が25を越えるようなソースがあれば、そのソースコードを目視確認する。という判定でよいかと思います。

単純な方法ですが、これは有効なものです。

 

以上、「サイクロマティック複雑度で、外注したプログラムのソースコードの品質を判定する方法 」でした。

【広告】