どのコード解析ツールの使い分けのためのJavaプです[定休日]
-
08-06-2019 - |
質問
どのコード解析ツールを使用していまごJavaプロジェクト?
私は全ての種類
- 静的コード解析ツール(FindBugs,PMD、その他)
- コード-カバレッジツール(Cobertura Emmaは、その他)
- その他の計測ツール
- 何について知っておきましょ情報を見落とさないよう
該当する場合、またようなビルドツールを使用するかなどにこれらのツールをごIdeを構築ツールです。
場合にツールは特定の方法としては、IDEプラグイン、ください"と言っていたら、ビルドツールプラグイン)情報にも注目に値する。
解決
静的解析ツールをよく利用"CPD, PMD, FindBugs, は、 Checkstyle.
"CPDは、弊社"コピー/ペースト検出器"ツールです。使用したPMDなる前に気付いたので、 が持つ"重複コード"のリンク の 弊社ウェブページ.
いるこれらのツールできる場合がありますので、必ずその"out-of-the-box"のセット。ないオープンソースできるように書き換えます。これらのツールと用途又は"フック"の機会を提供すると延長することができます。例えば、弊社の "デザイナーの"ツール を作成することができる新しいルールまた、Checkstyleの DescendantToken ることを確認して特性を大幅にカスタマイズ.
私はこれらのツール 覚系の構築.ることができるようにリンクいろいろと教えてもらい説を設定します。
に加え、シンプルな統合を構築しでも設定を行うツールについては"統合"のカップルすることはいたしません。すなわちポートの生成および警告を抑制均一性があります。私はそれらを制する為には重要なポイントとな議論するべきなのは"静的解析"tag):どう設定のこれらのツールをまとめた"統一的な"ソリューション?(私はとても良いタイミングでの質問は別途 こちらの)
最初に、特別警報告書、変換の出力それぞれの警告は、簡単なフォーマット:
/absolute-path/filename:line-number:column-number: warning(tool-name): message
このとして、"Emacsフォーマット"ものでない場合をEmacsで合理的な形式のため、均質。例えば:
/project/src/com/example/Foo.java:425:9: warning(Checkstyle):Missing a Javadoc comment.
私の警告形式変換を行っている私のAntスクリプトAnt filterchains.
第二の"統合"という警告を出す答えできる体制を整えておりますデフォルトでは、各ツール対応のコメントまたはアノテーション(または両方)できる場所コードへの静寂の警告したいは無視します。これらの様々な警告を抑制要請していない一貫性を見ても少しお届けがん抑制するための警告だけを抑制する警告なく"SuppressWarning
?"
例えば、弊社のデフォルトの設定を抑制警告代を担う世代に向けた行のコードは、文字列"NOPMD
"とコメントとなります。また、弊社の支援Javaの @SuppressWarnings
アノテーションを期待で私の設定PMD使用のコメントを含む"SuppressWarning(PMD.
"の代わりに NOPMD
そのPMD suppressionsします。私は、特定の規則に違反した場合利用の場合はコメントのスタイルの抑制:
// SuppressWarnings(PMD.PreserveStackTrace) justification: (false positive) exceptions are chained
のみ"SuppressWarnings(PMD.
"部等に対する理解を深めコメントでは弊社の支援のための @SuppressWarning
注釈を認識し個別にルール違反による名:
@SuppressWarnings("PMD.CompareObjectsWithEquals") // justification: identity comparision intended
同様に、Checkstyleを抑制警告発生とペアでのコメント(注釈がない支援はご利用いただけます。デフォルトでは、コメントをCheckstyleのブランドを含む文字列 CHECKSTYLE:OFF
や CHECKSTYLE:ON
, ます。この構成の変化(Checkstyleの"SuppressionCommentFilter利用の文字列"BEGIN SuppressWarnings(CheckStyle.
"および"END SuppressWarnings(CheckStyle.
"このようにしPMD:
// BEGIN SuppressWarnings(Checkstyle.HiddenField) justification: "Effective Java," 2nd ed., Bloch, Item 2
// END SuppressWarnings(Checkstyle.HiddenField)
とCheckstyleのコメントは、特定のチェック違反(HiddenField
) は 重要なのでチェック独自の"BEGIN/END
"コメントのペアです。
FindBugsにも対応警報の発生抑制と @SuppressWarnings
アノテーションなのでさらに構成を達成に必要な程度の均一性その他のツールです。残念ながら、Findbugsサポートしているカスタム @SuppressWarnings
注釈のためのJava @SuppressWarnings
アノテーションを、 SOURCE
保持の政策ではない強いを保持するのに十分なアノテーションのクラスファイルがFindBugsもそれを必要としています。私は完全に適FindBugs警告suppressionsうぶつJavaの @SuppressWarnings
注釈:
@edu.umd.cs.findbugs.annotations.SuppressWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
これらの技術をものを合理的に一致します。るので注意されている情報を利用することの警告を抑制を含む文字列"SuppressWarnings
"も走りやすい簡単な検索をすべてのインスタンスのためのツールはすべての世界"のドラインをサポートしています。
他のヒント
を使用してい組み合わせCobertura,Checkstyle,(Ecl)Emma Findbugs.
EclEmma は カ Eclipseプラグインを示すコード-カバレッジによる着色のjavaソースのエディタ(スクリーンショット の範囲で発生するある程度php,c#,dにテストです。これは本当に有用できそうとしていることをラインは、特定のクラスのロードしていただけるラインを共有されていなかった。これはユーザーに優しいは発生の報告とその後の報告されているクラスが低い。
のCheckstyleとFindbugs Eclipseのプラグインをもと、警告を編集しています。
Maven2は報告書のプラグインの上ツールのレポートを作成で構築。ここにプロジェクト全体の報告がありますが、い集ます。このように変化し、運用 連続体.
以下の全てを使用していま統合easiyの両方にMaven2.x築Eclipse/RAD7:
- 試験-JUnit/TestNG
- コードの解析-FindBugs,PMD
- コード-カバレッジ-クローバー
また、当社のMavenのビルドした:
- JDepend
- タグチェッカー(TODO、FIXMEなど)
また、使用している場合は、Maven2.x,CodeHausコレクションをお手軽Mavenプラグインを Mojoプロジェクト.
注意:クローバーのボックスとの統合に竹CIサーバ(うAtlassian製品)また竹のプラグインのためのFindBugs,PMD、CheckStyleですが、においては、上述のとおり、無料のハドソンCIサーバが含ます。
を使って静的解析に組み込IntelliJ IDEA.完璧に統合しました。
を利用したいコード-カバレッジに内蔵Intellij IDEA(EMMA).再度、統合しました。
この統合型ソリューションの信頼性、さらに強力で、使いやすいと比べてピアとツールから各種ベンダー
Checkstyle でも私は使用前の会社で...くためのスタイルの確認が可能であり、これまでのようにいくつかの静的解析す。また、 クローバー のためのコードカバレッジが、ご了承い無料ツールです。
しFindBugsとCheckstyleとクローバーコードします。
と思いをたてることが重要であるかのような静的解析を支援です。残念なことでも広く普及するこれらのツールは重要です。
を使用していまFindBugsとJDepend統合Ant.を使用していまJUnitしんで使うのを取材します。
私はどちらかといえば必要である統合的に合理的な開発者にウェブアプリケーション(IDEを使用している開発J2EEアプリ)が好きだからいかに綺麗に見える実際のjavacのWindowsソフトである。P
った新しい環境でも、頑張って下さCobertura.このコードカバレッジツールで実行できるおantスクリプトの一環として通常の構築に統合することができますハドソン
当チームでの利用弊社は、Cobertura、実際に弊社のプロジェクトmavenプロジェクトやが非常に簡単にプラグインのためのコードの解析.実際の疑問に思うのは特定のプロジェクト解析を使用する必要があり、私はこのせんでしたが、少し足を延ばせば同じプラグインのためのものです。
当プロジェクトを使用していまSonarフcheckstyle扱....とともに、CI(竹、ハドソン)までも歴史のソース品質やかに演出します。いソーナーですが、ひとつの中央ツールはCIスタックとはできます簡単にカスタマイズのルールです。
構造101 ですのでコードの解析と環状のパッケージの依存関係.
い多くの回答についてもツール集この知識は一つの質問に対して/スレッドようになる1真の答えます。
私の答えを自分の問題であると:
- Findbugsみよくある誤りの悪い/コーディングランからのプロトコルを簡単にEclipse
- Cobertura当社のカバレポート-からmaven
ハドソンまたはタスク-スキャナのプラグインが表示カウントのTODOやFIXMEsなどのショーでは、ソースファイルです。
すべて統合させることで、最終的にMaven1.xの場合には、使ったハドソンは、当社をチェックインと余分なものを夜間と週替わりです。ハドソンのトレンドグラフを当社の程度php,c#,dに試験、findbugsルとしての業務です。もありHudsonプラグインする報告やグラフ当社のコンパイルの下方修正を発表している。また複数の性能試験を自分のグラフの性能、メモリ使用時は、ハドソンプロットプラグインです。