Checkstyle、PMD、FindBugsのSonarQubeの置き換えですか?


105

私たちは最初からWebプロジェクトに取り組んでおり、次の静的コード分析ツールを検討しています。

  • 規約(Checkstyle)
  • 悪い習慣(PMD)
  • 潜在的なバグ(FindBugs)

プロジェクトはMaven上に構築されています。目的のために複数のツールを使用する代わりに、単一の柔軟なソリューションを探していて、SonarQubeに出会いました。

SonarQubeでCheckstyle、PMD、Findbugsの結果を達成できるのは本当ですか?

回答:


99

Sonarは、CheckStyle、FindBugs、PMD、およびJavaプロジェクトのデフォルトでCobertura(コードカバレッジ)などの他のいくつかの「プラグイン」を実行します。ただし、主な付加価値は、履歴をデータベースに保存することです。その後、傾向を確認できます。コードベースを改善していますか、それとも反対ですか?メモリを備えたツールだけがそれを教えてくれます。

CIシステムでSonarを実行して、実行に時間がかかるもの(CPD-コピーペースト検出器など)でも実行できるようにする必要があります。そして、あなたにはあなたの歴史があります。たとえば、Eclipseプラグインを使用すると、違反をより早く検出できます(これは素晴らしいことです)が、実行に時間がかかりすぎたり、「品質の高いプラグイン」(CPDのスキップやコードカバレッジ分析をスキップします)。そして、あなたには歴史がありません。

また、ソナーは「ダッシュボード」スタイルのビジュアルレポートを生成します。これは非常に把握しやすくします。JenkinsのSonarを使用すると、開発者と管理者に、過去数週間と数か月にわたってコードベースの品質に対して実行された作業の影響を示すことができます。


ブラウンフィールドプロジェクトのコンテキストでこれらの利点に同意します。欠陥ゼロのポリシーを持つグリーンフィールドプロジェクトは、そのメモリを必要としません。コードベースを常に100%クリーンに保つだけです。
Christian Hujer

48

Sonarはこれら3つのツールをプラグインとして使用し、これら3つのツールからのデータを集約して、これらのツールからグラフなどを表示することで付加価値を提供します。したがって、それらはソナーを補完します。


1
yupソナーは3つすべてを使用します
フラペチーノ

27
これはバージョン3.xまで当てはまりましたが、Sonar 4.xは、独自の内部Squidアナライザーを優先して、少なくともPMDおよびCheckStyleを使用することをやめています。これにより、ルールセットを拡張し、以前からあった問題を修正する自由度が高まります。しばらくの間、これらのプロジェクトを悩ませています。たとえば、150を超えるPMDルールはすでに廃止されており、最終的には完全に削除されます。
ヘイレム2014年

1
彼らがこれらのルールを廃止した理由についての興味深い投稿:sonarqube.org/…
Jhack、2014

33

はいといいえ。他の回答に加えて。

SonarQubeは現在、PMD、Checkstyle、およびFindbugsを廃止し、独自のテクノロジーを使用してJavaコード(SonarJavaと呼ばれる)を分析する方法にあります。たとえば、古いライブラリを使用するライブラリ(Java 8など)の修正、アップグレード(またはそれを待つ)に時間を費やしたくないので、彼らはそれを行います。

また、SonarLintと呼ばれる個人用IDE用の新しいプラグインセットも取得しました。


8

ソナーは素晴らしいですが、上記のツールを個別に使用し、それでも素晴らしいグラフを残したい場合は、Jenkins CIビルドの一部としてAnalysis Collectorプラグインを使用できます。これのわずかな利点は、PMD / Findbugs / Checkstyle構成をSCMにチェックインして、別のSonarサーバーに依存するのではなく、Mavenビルドに統合できることです。


5

ソナーは、これらのツールだけの場合をはるかに超えています。最大の利点はGUIで、何でも簡単に構成できます。それが提供する統計は非常に詳細です(コード行など)。そしてそれはテストカバレッジなどのための素晴らしいサポートも提供します:)

ここでよく見ることができます:http : //nemo.sonarsource.org/


3

誰かがルールに違反した場合、Mavenビルドに失敗する可能性があるため、ソナーに加えてこれらのツールを引き続き使用します。ここでソナーはより遡及的です。


3

...数年後:いいえ、そうではありません!SonarQubeは、独自のアナライザーですべてのルールをカバーできると想定していますが、SonarQubeでカバーされていないPMDまたはCheckStyleからのルールがまだあります。たとえば、PMD ReturnFromFinallyBlockを参照してください。


また、PMD違反がないようです:デフォルトのパッケージプライベートレベルの代わりに明示的なスコープを使用しますか?
user7294900 2018年


2

少なくとも、SonarQube 6.3以降では、Findbugsは(現時点では)プラグインとしてサポートされなくなったようです。Sonarsourceは、独自のJavaプラグインによるFindbugsルールの置き換えに取り組んでいます。

各ルールの置換ステータスのリストもここにあります:http : //dist.sonarsource.com/reports/coverage/findbugs.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.