新たなプロジェクトCrap4Jのゴールは明確である。
コードが使い物になるかどうかを見極めるのに、100%正確で客観性のある方法なんて存在しないのです。しかしながら無駄に複雑で込み入った、または他の誰かによって記述されたコードが”これは使い物にならない!”という一言を誘い出すものであることを、私たちの施設はリサーチ結果と実証済みの証拠で裏付けています。そして、もしコードを見ているその人がそのコードの実行を維持しなければいけないのなら、その一言は”全くなんて代物だ!!”というものに変わるのは良くあることです。
最初の反応を幅広く見るともっと正確な調査が必要になってくる。Crap4jは複雑性とテストコード範囲を統合した単一の数字を提供する。
Javaメソッドmが与えられると、mのCRAPは下記のように算出されます。
CRAP(m) = comp(m)^2 * (1 cov(m)/100)^3 + comp(m)
comp(m)がメソッドmのサイクロマティック複雑性であり、cov(m)が自動テストに提供されたテストコード範囲であるところです(例:マニュアルQAではなくJUnitテスト)。サイクロマティック複雑性は良く知られたものであり、またメトリックとメソッド内の1つ以上の独特の判定に関する計算に広く使われます。コードをカバーするために、我々は基礎的なパス範囲を使います。
メトリックと同様にこの数字を扱うときにはやみくもではなく最善の注意を払わなければならないが、それは変化を促進するための出発点ともっとアップデートが必要なコードの場所を指摘する方法を提供する。
低レベルのCRAP数字はそれは複雑すぎないので、またもしくは自動で反復可能なテストによって十分に保護されているので、比較的低変化、低メンテナンスリスクのコードを表します。高レベルのCRAP数字は高複雑と低複雑の有害なコンビネーションのために変更が危険であるコードを表します。
Crap4はhttp://www.junitfactory.com/crap4j/update/からダウンロード可能であり、現在はEclipseのプラグインとなっている。更なる詳細に関してはJUnitFactoryが導入記事(source)を提供している。