351.PMD(1)
初回:2024/02/14
PMDは、静的ソース コード アナライザーです。今回はこれを使用して、Javaのソースコードをチェックしたいと思います。
P子「今回は、Javaなの?」※1
PMDのドキュメントによると、16言語に対応していますが、Pythonは含まれていません。他の言語でのチェックは行っていませんが、やはりJavaの解析が一番進んでいるように思います。
今回の使い方の説明は、Windows上でコマンドラインで実行する方法です。
1.ダウンロードとインストール
まずは、PMDのページに行きます。
Latest Version: 7.0.0-rc4 ですが、とりあえず最新のを入れておきます。
P子「正式版でなくても良いの?」
まず、PMDの使い方としては『すべての警告を無くす』のではなく『プロジェクトごとに必要な分だけ確認する』というスタンスで良いと思います。また、解析ツールのポリシーによって、正反対の結果を出す場合もあります。
P子「それぞれにこだわりがあるのね」
まあ、開発者ってそれぞれにこだわりがあるので、ほっておくと好き勝手にコーディングします。なのでコーディング規約とかソースチェック系のツールを使ってできるだけ制限を加えることになります。
P子「その手のツールも、何を選ぶかでまた揉めるのよね」
PMDは、そのあたりのカスタマイズができるのが非常に良いと思います。
先に進みます。先のPMDのページを見ると、Download ボタンから、pmd-dist-7.0.0-rc4-bin.zip をダウンロードします。
後は、ZIPファイルを展開するだけで、インストールは完了です。
2.実行
先ほどのPMDのページの下にある、QuickStart から、Windowsタブをクリックすると、簡単な説明が出てきます。
コマンドラインとしては、
pmd.bat check -d c:\src -R rulesets/java/quickstart.xml -f text
というのが、基本となります。
pmd.bat check -h
で、help が表示されます。
-d, --dir=<inputPaths>[,<inputPaths>...]...
-R, --rulesets=<rulesets>[,<rulesets>...]...
-f, --format=<format> Report format.
-r, --report-file=<reportFile>
-f text は初期値なので、今回は指定なしでも構いません。
チェック結果は、標準出力に表示されるので、-r, --report-file 指定でファイルに書き込んでおくと便利です。
オプションが多いと、毎回手打ちというのも効率が悪いのでバッチファイルに記述して置いてダブルクリックで実行すると思います。
私は、複数のJavaを使用しているので、Javaのパスを通してから、チェック対象のソースパスを記載して、起動しています。
call 《独自にJavaの環境設定を行うbatファイル》
set SRC_PATH=c:\src
call bin\pmd.bat check --dir=%SRC_PATH% --rulesets=rulesets/java/quickstart.xml --report-file=pmd_check.txt
バッチファイルに記述してダブルクリックで実行するので、--dir や --rulesets の様に見てわかるオプション文字列で記述しています。また、普通に実行すると DOS窓(今風に言うと、コマンドプロンプト)に pause を入れても閉じてしまうので、bin\pmd.bat を call で呼び出しています。
このあたりは、ある程度Windwos のバッチをご存じの人であれば問題ないでしょう。
3.ルール
ルールは、先のPMDのページの Documentation から見ることができます。
https://docs.pmd-code.org/latest/
左メニューの Rule Reference から Java Rules の Index を開きます。
https://docs.pmd-code.org/latest/pmd_rules_java.html
先のコマンドラインのサンプルの rulesets/java/quickstart.xml は、右側の Table of Contents の下 Additional rulesets からだいぶ下の方にスクロールした所に書かれています。
P子「ほとんど、Deprecated になっていて、quickstart.xml だけ残っている感じね」
最初に簡単に実行する場合は、quickstart.xml で良いと思いますが、自部門に合わせた設定をするなら、これをカスタマイズして使う事になると思います。
4.まとめ
今回は、環境構築から動作確認まで出来れば、OK としたいと思います。
次回より、もう少し実用的はお話をしていきたいと思っています。
P子「Maven や、Ant task のお話もあるの?」
残念ながら、コマンドラインでの使用のみです。
ほな、さいなら
======= <<注釈>>=======
※1 P子「今回は、Javaなの?」
P子とは、私があこがれているツンデレPythonの仮想女性の心の声です。