この記事でご紹介するのは、サイクロマティック複雑度を使った、ソースコードの品質測定についてです。
たとえば、取引先に製造を依頼したプログラムのソースコードをすべてレビューして品質を検査するのは、ものすごく時間が掛かりますので、骨の折れる作業です。
低コスト&短納期が求められる現代のソフトウェア開発で、そのような作業は少しでも効率化したいものです。
外注したプログラムのソースコードの品質を判定するには、このサイクロマティック複雑度と他の管理手法とを組み合わせると良いでしょう。
目次
サイクロマティック複雑度(循環的複雑度)とは
プログラム中の、IF、for、switchのcaseなどの分岐経路の数を数えることで、プログラムの複雑度を計測する方法です。
この方法で導き出された複雑度は、プログラムの可読性についての指標ともなります。
また、計測した複雑度から以下のように判定する目安もあります。
循環的複雑度 複雑さの状態 バグ混入確率 10以下 非常に良い構造 25% 30以上 構造的なリスクあり 40% 50以上 テスト不可能 70% 75以上 いかなる変更も誤修正を生む 98%
詳しくはWikiで確認してください。
サイクロマティック複雑度の計測ツール
フリーソフトの lizard というものがあります。
lizardは、python上で実行できるフリーのツールです。
インストールなどは以下の記事に詳しく説明があります。ただしMacOS向けの内容ですので、Windowsの場合は少し異なる部分があります。
ソースコードの品質判定
最近のシステムは大規模なものが多く、全てのソースコードを目視確認するわけには行きません。 上記で説明したサイクロマティック複雑度を用いて、ある範囲のコードに絞りこんで目視検査します。
ツールを使って、複雑度が25を越えるようなソースがあれば、そのソースコードを目視確認する。という判定方法でよいかと思います。
単純な方法ですが、これは有効なものです。
以上、「サイクロマティック複雑度で、外注したプログラムのソースコードの品質を判定する方法 」でした。