1. 概要

FindBugsの紹介では、静的分析ツールとしてのFindBugsの機能と、EclipseやIntelliJIdeaなどのIDEに直接統合する方法について説明しました。

この記事では、Javaの代替静的分析ツールのいくつかと、これらがEclipseおよびIntelliJIDEAとどのように統合されるかについて説明します。

2. PMD

PMDから始めましょう。

この成熟した非常に確立されたツールは、ソースコードを分析して、考えられるバグ、次善のコード、およびその他の悪い慣行を探します。 また、分析するコードベースの循環的複雑度など、より高度なメトリックも調べます。

2.1. Eclipseとの統合

PMDプラグインは、EclipseMarketplaceから直接インストールできます。 プラグインは手動でダウンロードすることもできますここ。 インストールすると、IDE自体から直接PMDチェックを実行できます。

プロジェクトレベルまたは個々のクラスレベルでPMDを実行できることは注目に値します。

結果を以下に示します。重大度の昇順で「警告」から「ブロッカー」までの範囲の検出レベルごとに異なる色を使用しています。

右クリックしてコンテキストメニューから[詳細を表示]を選択すると、各エントリの詳細を詳しく調べることができます。 Eclipseは、問題の簡単な説明と、それを解決するための可能な修正方法を表示します。


PMDスキャンの構成を変更することもできます。メニューの[ウィンドウ]->[設定]->[PMD]で、構成ページを起動できます。 ここでは、スキャンパラメータ、ルールセット、結果表示設定などを構成できます。

プロジェクトの特定のルールを非アクティブ化する必要がある場合は、スキャンからそれらを削除するだけです。

2.2. IntelliJとの統合

もちろん、IntelliJにも同様のPMDプラグインがあり、JetBrainsプラグインストアからダウンロードしてインストールできます。

同様に、IDEでプラグインを実行できます。スキャンする必要のあるソースを右クリックし、コンテキストメニューからPMDスキャンを選択します。

結果はすぐに表示されますが、Eclipseとは異なり、説明を開こうとすると、情報の検索に関する公開Webページを備えたブラウザーが開きます。

PMDプラグインの動作は、設定ページから[ファイル]->[設定]->[その他の設定]->[PMD]に移動して構成ページを表示することで設定できます。 設定ページから、独自のテストルールを使用してカスタムルールセットをロードすることにより、ルールセットを構成できます。

3. JaCoCo

次に進む– JaCoCoはテストカバレッジツールです–コードベースでユニットテストカバレッジを追跡するために使用されます。 簡単に言えば、ツールは、ライン、クラス、メソッドなどのいくつかの戦略を使用してカバレッジを計算します。

3.1. Eclipseとの統合

JaCoCoは、マーケットプレイスからに直接インストールできます。 インストールリンクは、こちらの公式サイトでもホストされています。

ツールは、プロジェクトレベルから個々のメソッドレベルまで実行できます。 Eclipseプラグインは、さまざまな配色を使用して、コードのどの部分がテストケースでカバーされ、何がカバーされていないかを特定します。

このメソッドは、提供された2つの整数パラメーターを除算し、結果を返します。 2番目のパラメーターがゼロの場合、整数データ型の最大値を返します。

このテストケースでは、2番目のパラメーターがゼロであるシナリオのみをテストしています。

この場合、6行目が黄色で表示されていることがわかります。 ‘if’条件の1つのブランチのみがテストされ、単純なテストで実行されます。 したがって、完全にテストされておらず、黄色でマークされていません。

さらに、7行目は緑色です。これは完全にテストされていることを意味します。 最後に、9行目が赤い色で強調表示されています。これは、この行が単体テストでまったくテストされていないことを意味します。

テストカバレッジの概要を見ると、クラスレベルとパッケージレベルの単体テストでカバーされているコードの量が表示されます。

3.2. IntelliJIDEAとの統合

JaCoCoはデフォルトで最新のIntelliJIDEAディストリビューションにバンドルされているため、プラグインを個別にインストールする必要はありません。

単体テストを実行するときに、使用する必要のあるカバレッジランナーを選択できます。 テストケースは、プロジェクトレベルまたはクラスレベルで実行できます。

Eclipseと同様に、JaCoCoはカバレッジにさまざまな配色を使用して結果を表示します。

クラスレベルとパッケージレベルの単体テストでカバーされているコードの量が表示されているテストカバレッジの概要を確認できます。

4. コベルトゥーラ

最後に、Coberturaについて言及する価値があります。これは、コードベースの単体テストカバレッジを追跡するためにも同様に使用されます。

Eclipseの最新バージョンは、執筆時点ではCoberturaプラグインをサポートしていません。 プラグインは以前のEclipseバージョンで動作します。

同様に、IntelliJ IDEAには、Coberturaカバレッジを実行できる公式プラグインがありません。

5. 結論

広く使用されている3つの静的分析ツールについて、EclipseおよびIntelliJIDEAとの統合を検討しました。 FindBugは、以前のFindBugsの紹介で取り上げられました。

このチュートリアルのソースコードは、 GitHubプロジェクトにあります。これはMavenベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。