質問

職場では、いくつかのツールを使用して、いくつかのメトリック(主にCyclomaticの複雑さとLCOM)をキャプチャしています。それらを使用して、警告フラグを取得し、先制的なリファクタリングの取り組みを導きます。コードの品質の向上に非常に有益でした。

ただし、プロセスはビルドプロセスに関連付けられていません。別々に行われます。さらに、私はソースコードに固有のものにすることができるものを探しています(外部プロセスとは対照的に実行されました。)

コンパイラから実行できる注釈と構成可能な注釈プロセッサのグループを知っている人はいませんか?また、コードがしきい値Cyclomatic/LCOMメトリックに準拠していない場合、ビルドが失敗するのは誰ですか?

Maven/AntからCKJM、CheckStyle、PMDを実行できると思いますが、ソースコードで作業するものもあれば、ByteCodeで動作するものもあります。コンパイルが開始される前に、ソースコードで動作する1つの統合ツールがあると便利です。

もう1つのことは、これを促進できる注釈のセットがある場合は、コーナーケースに必然的に必要になるカスタマイズを許可するために、それは素晴らしいことです。)

@LCOM3(Threshold=1.5)
public class SomeDumbPojo {... buch of gets/sets...}

// by default would be measured against a strict LCOM3
public class ActualBizClass
{
   @CYCLOMATIC_COMPLEXITY(Threshold=15)
   public void someFatIrreducibleMethod(){...}
}

次に、ツールを実行すると、デフォルトでは、よりリラックスしたしきい値が注釈が付けられたアーティファクトを除き、デフォルトで厳格な(および構成可能な)メトリックしきい値を適用します。削減できない/すべきではないいくつかの方法では、緩和された環状複雑さが理にかなっています。動作を備えたプレーンポジョスの場合、LCOMはリラックスする必要があります...などなど。

見て、グーグルで見ているかもしれませんが、私は何も見つけることができませんでした(うまくいけばオープンソース)。しかし、誰かがそのようなことを知っている場合に備えて、ここで聞いてもいいでしょう。

ありがとう。

役に立ちましたか?

解決

コンパイルが開始される前に、ソースコードで動作する1つの統合ツールがあると便利です。

コードをコンパイルする必要があるため、これが何を意味するのかよくわかりません なにか 静的分析が機能するため。これらのツールはすべて、コードをバイトコードまたはある種の構文ツリーのいずれかにコンパイルできる必要があります。

シンプルに保つことをお勧めします。サイクロマティックな複雑さまたは他のメトリックの警告が特定のしきい値を超える場合、PMDを構成するようにビルドに障害に障害を故障します。許容複雑さでメソッドを注釈する代わりに(受け入れられた価値をどのように導き出しますか?複雑さを12から15に偶然増加させて注釈を上げるだけで妨げないようにする人を導きます)。

@SuppressWarnings("PMD.CyclomaticComplexity")
public void someFatIrreducibleMethod() { ... }

次に、定期的にコードベースを検索して、削除してリファクタリングする可能性のある警告を抑制されたメソッドを検索できます。

あるいは、PMDには、特定の構文のコードにコメントを残すことをサポートして、誰が警告を監査したか、いつ、何らかのトレーサビリティを提供したい場合にマークします。

他のヒント

SD Javaメトリック ツールは、ほとんどの基本的なメトリック(LCOMではなく、確かに環状複雑さ)を計算し、コマンドラインから実行します。

XML出力ファイルを生成し、その上の階層のメソッドとロールアップの要約(クラス、パッケージ、サブシステム)の詳細なメトリックを備えています。 XLST(またはawkまたはperlまたは...)を使用すると、完全な概要または個々の方法で必要なメトリックを抽出し、しきい値を確認するのは非常に簡単です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top