Multi Vitamin & Mineral

Multi Vitamin & Mineral です。プログラムに関することを書いております。

IntelliJ IDEA に CheckStyle と PMD と SpotBugs を導入してコードを自動でチェックしてもらう

IntelliJ IDEA で Java 開発をするにあたり、コードチェックを自動で行いたいと思います。そのためのツールの導入と簡単な実行までを記載しました。

チーム開発での運用や、CIと絡めた話までは手を出していません。今回は簡単に使ってみるところまでのお話となります。

尚、当該記事の内容は、バージョン 2020.03 を基にしています。

導入するプラグイン

Java で開発をするのに辺り、以下の3つのプラグインを導入したいと思います。(個人的には、 CheckStyle と FindBugs (SpotBugs の前身) の知名度が高そうって思ってましたがどうなんでしょう?)

  • CheckStyle : ソースコードの静的の解析をします。コーディング規約違反などを検出します。
  • PMD : ソースコードの静的の解析をします。コーディング規約違反などを検出します。
  • SpotBugs : バイトコードの解析をします。親クラスやアノテーションの情報も含めて解析した不正を検出します。

いずれもソースコードの検査をするためのプラグインです。

CheckStyle と PMD は似ていますが、チェック内容が被っていない部分もあるため、両方動かすようにします。

SpotBugs は FindBugs のフォークです。現在 FindBugs の開発が止まってしまったためこちらを利用します。

※ FindBuds の管理者が権限を移管しないままプロジェクトを離脱。1年以上応答がなく、停止したそうですね。 SpotBugs が後継とのこと。って下記リンク先にて説明がありました。 FindBugs って名称が商標で都合が悪かったなんて話も聞きましたが、単に名称変更しただけではないようですね。

blog.kengo-toda.jp

チェックルールは変更&共有できる

いずれのプラグインでも、チェックルールは変更できますし、チーム内での共有も可能です。ですが、この記事ではデフォルトのチェック内容を導入するまでに留めています。

導入方法と利用方法はどれも同じようなモノ

さて、以下にそれぞれの導入方法を記載しましたが、いずれもほぼ同じ内容です。さっと流して読んでいただきたいと思います。

また、チェック結果が画面下部ペインに表示されるのも同じです。似たような動きをするものと思って読んでください。

CheckStyle

導入

  1. Settings を開きます。
    • [File] > [Settings...]( Ctrl + Alt + S )です。
    • Shift *2 で何でも検索。そこで setti ... と入力したらサジェストされるので、そこから選択してもOKです。
  2. 左ペインの「Plugins」を選択します。
  3. 「Marketplace」が選択されている状態で checkstyleで検索し、「CheckStyle-IDEA」を選びます。
  4. 「Install」ボタンをクリックし、しばし待ちます。(画像ではインストール済みなので「Installed」と表示されちゃってますが、インストール前はココが押せるようになってます。)
  5. Settings の左ペインに [Tools] > [CheckStyle] が増えていたらOKです。

最後のメニューの増加は、Settings ダイアログで「OK」を押して再度 Settings を開くと反映されていると思います。調子が悪ければ IntelliJ IDEA を再起動してみてください。

CheckStyle の導入
CheckStyle の導入

CheckStyle の導入後
CheckStyle の導入後

利用

  1. Settings の左ペインより「Tools」>「CheckStyle」を選択します。
  2. 「Configuration File」より、チェックする方法を選択します。「Sun Checks」でも「Google Checkes」でもどちらでも結構ですし、独自に作成してももちろんOKです。
    • 他にもチェック対象を Test 以外にする等々の設定もありますが、ここでは省きます。
  3. ソースコードの検査は自動で行われ、問題のある箇所には赤い下線が表示されます。マウスカーソルを合わせると問題となった内容の説明が表示されます。
  4. 検査結果は、画面下部ペインにも表示されます。「Checkstyle」を選び、左側のフォルダアイコンをクリックするとプロジェクト全体のチェックが実行されます。

CheckStyle の設定
CheckStyle の設定

CheckStyle のコード上の結果表示
CheckStyle のコード上の結果表示

下部ペインでの CheckStyle の表示
下部ペインでの CheckStyle の表示

「Sun Checks」と「Google Checkes」の違いは調べてまとめてくれる方もいらっしゃいます。リンクを載せておきます。

※「Google Checkes」はちょっと癖があるように思いますので、取り敢えずチェックをかけるのであれば「Sun Checks」でよいと思います。

qiita.com

PMD

導入

  1. Settings を開きます。
    • [File] > [Settings...]( Ctrl + Alt + S )です。
    • Shift *2 で何でも検索。そこで setti ... と入力したらサジェストされるので、そこから選択してもOKです。
  2. 左ペインの「Plugins」を選択します。
  3. 「Marketplace」が選択されている状態で pmdで検索し、「PMDPlugin」を選びます。
  4. 「Install」ボタンをクリックし、しばし待ちます。(画像ではインストール済みなので「Installed」と表示されちゃってますが、インストール前はココが押せるようになってます。)
  5. Settings の左ペインに [Other Settings] > [PMD] が増えていたらOKです。

最後のメニューの増加は、Settings ダイアログで「OK」を押して再度 Settings を開くと反映されていると思います。調子が悪ければ IntelliJ IDEA を再起動してみてください。

PMD の導入
PMD の導入

PMD の導入後
PMD の導入後

利用

  1. プロジェクト、パッケージ、ソースコードファイルなどを右クリックし、「Run PMD」を選択します。「Run PMD」>「Pre Defined」>「All」とすると、予め用意されているチェックがすべて実行されます。
  2. 検査結果は、画面下部ペインに表示されます。

PMD の実行
PMD の実行

下部ペインでの PMD の表示
下部ペインでの PMD の表示

SpotBugs の導入

FindBugs のフォークです。 FindBugs は管理者権限を持っているリーダーである Bill Pugh が連絡が取れない状態にあり、仕方なく SpotBugs としてフォークして開発を続けています。(参考 : FindBugsコミュニティにおける例の件の顛末、そしてSpotBugsとは何か - Kengo's blog

2020年時点では、 IntelliJ IDEA での FindBugs の利用は困難ですので、 SpotBugs を利用するのが素直でしょう。

導入

  1. Settings を開きます。
    • [File] > [Settings...]( Ctrl + Alt + S )です。
    • Shift *2 で何でも検索。そこで setti ... と入力したらサジェストされるので、そこから選択してもOKです。
  2. 左ペインの「Plugins」を選択します。
  3. 「Marketplace」が選択されている状態で spotbugsで検索し、「SpotBugs」を選びます。
  4. 「Install」ボタンをクリックし、しばし待ちます。(画像ではインストール済みなので「Installed」と表示されちゃってますが、インストール前はココが押せるようになってます。)
  5. Settings の左ペインに [Tools] > [SpotBugs] が増えていたらOKです。

最後のメニューの増加は、Settings ダイアログで「OK」を押して再度 Settings を開くと反映されていると思います。調子が悪ければ IntelliJ IDEA を再起動してみてください。

SpotBugs の導入
SpotBugs の導入

SpotBugs の導入後
SpotBugs の導入後

利用

  1. プロジェクト、パッケージ、ソースコードファイルなどを右クリックし、「SpotBugs」を選択します。チェックしたい対象にしたがって [Analyze ...] の中からどれかを選択するとチェックが実行されます。
  2. 問題のある箇所には赤い下線が表示されます。マウスカーソルを合わせると問題となった内容の説明が表示されます。
  3. 検査は結果は画面下部ペインから実行することもできます。検査結果もこの下部ペイン上に表示されます。

SpotBugs の実行
SpotBugs の実行

SpotBugs のコード上の結果表示
SpotBugs のコード上の結果表示

下部ペインでの SpotBugs の表示
下部ペインでの SpotBugs の表示