web-dev-qa-db-ja.com

SonarQubeはCheckstyle、PMD、FindBugsの代替品ですか?

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

  • 規則(チェックスタイル)
  • 悪い習慣(PMD)
  • 潜在的なバグ(FindBugs)

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

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

100
Johnny

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

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

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

94

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

45
MeBigFatGuy

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

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

彼らはあなたの個人用の新しいプラグインのセットも手に入れましたIDEと呼ばれる SonarLint

30
keiki

Sonarは優れていますが、前述のツールを個別に使用し、ナイスグラフを保持したい場合は、Jenkins CIビルドの一部として Analysis Collector Plugin を使用できます。これのわずかな利点は、PMD/Findbugs/Checkstyle構成をSCMにチェックインして、別のSonarサーバーに依存するのではなく、Mavenビルドに統合できることです。

7
artbristol

ソナーはこれらのツールだけではありません。最大の利点はguiです。これにより、何でも簡単に設定できます。それが提供する統計は非常に詳細です(コード行など)。そして、それはテストカバレッジなどの素晴らしいサポートさえ提供します:)

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

5
oers

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

3
deamon

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

3
Usman Ismail

少なくともSonarQube 6.3+以降、Findbugsは(現時点では)プラグインとしてサポートされていないようです。 Sonarsourceは、Findbugs-rulesを独自のJavaプラグインに置き換える作業を行っています。

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

2
Markus