0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

循環的複雑度を計算してみよう

Posted at

コードの品質が気になる年頃です。

循環的複雑度

M = E − N + 2P
ここで
M = 循環的複雑度
E = グラフのエッジ数
N = グラフのノード数
P = 連結成分の個数

Wikipedia によると、循環的複雑度は上記のように定義されるようです。連結成分内に分岐なしのとき、その連結成分の寄与は 1 になります。制御フロー上に辺が増えるごとに値は 1 増えていきます。

つまり、これはフロー上の全辺被覆テストをする際に必要な最小の試行回数に等しいです。

計ってみよう

ちょうどいいライブラリがあります。pip で簡単にインストールでき、シェルや python から使えます。
https://github.com/terryyin/lizard

pip install lizard
lizard {計測してみたいプログラムのパス}

閾値を設定してあげると、循環的複雑度が閾値を超えたらプログラムが失敗するようになります。デフォルト閾値は 15 です。

注意点

node_modules ディレクトリは除くようにしましょう。ありえないほど時間がかかります。

lizard -x "{node_modules のパス}/*"

上記のような形で除外パスの指定ができます。

おわり

CI に入れたら捗るかも!?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?