JavaScriptコードのメトリクス測定
以前、Perlにおけるコードメトリクスの測定について書きましたが、JavaScriptについても調べたところjsmeterが良さそうです。
なお、循環的複雑度等のコードメトリクスはあくまでも定量的な目安であり、絶対的な品質を表すものではありません。コードレビューやリファクタリングの対象を選ぶ際などに活用するといいと思います。
インストール
npmコマンドでインストールしてください。ちなみにnpmにある最新版は1.0.1ですがjsmeter.jsがバグってるので1.0.0を使います。(もしくは、1.0.1のjsmeter.jsの47行目の"start();"を削除する)
npm install -g jsmeter@1.0.0
コマンドとして実行
以下のスクリプトをパスの通った場所におきます。
そして実行。
$ jsmeter /path/to/source lib/Foo.js line start: 1 lines: 308 statements: 282 comments: 17 complexity: 1 M.I.: 75.795 lib/Foo.js hoge line start: 23 lines: 2 statements: 7 comments: 0 complexity: 2 M.I.: 147.83 lib/Foo.js fuga line start: 27 lines: 17 statements: 18 comments: 1 complexity: 3 M.I.: 106.59 ...
メトリクスの測定をテストに取り入れる
jsmeterをテストで使えるようにするモジュールを書いてみました。
現時点では循環的複雑度についてのテストのみ実装しています。メソッド毎の行数のしきい値テストなども需要ありますかね?
GitHub - hideo55/node-test-metrics: Test for Node.js code metrics