hijikitaroのブログ

しがないSIerとして、日々プロジェクトを管理し、システムを育て、日々お子を見守り育てる中での出来事や学びを淡々と書いています。

bat で 指定ディレクトリ分 FindBugs を繰り返す

最新技術を磨くぞ、と意気込んで転職したわけだったんですが、隔離されたインターネットもつなげない環境にいるため、

ちまちまAnt作ったり、bat作ったりと昔ながらのやり方でいろいろ自動化?を試みているのですが、

そのためにちょろっと作ったものをせっかくなので残しておこうと思います。

(5年前ぐらいに同じことをやったものの当時はブログも何もしていなかったので、今回は忘れないように・・・残します。)

やりたいこと

  • 対象のディレクトリごとに FindBugs を自動で実行する。(実際には1000個ぐらいのJavaプロジェクトがあるので、Eclipse でちまちまやりたくない)
    • 対象ディレクトリは機能のカテゴリで頭文字が決まっている。
    • 対象ディレクトリ配下のクラスファイルの配置場所は同じ。

やったこと

以下が作成した bat 。

REM FindBugsを指定フォルダ分実行
@setlocal enabledelayedexpansion

set DIR_CATEGORY=ant fin test

REM アプリカテゴリ単位にfindbugsを実行
for %%f in (%DIR_CATEGORY%) do (
    echo %%f
    REM ディレクトリ = ant
    for /D %%A in (%%f*) do (
        echo %%A
        
        REM findbugs実行
        REM param:
        REM   -textui          テキストユーザインターフェース
        REM   -projectName  プロジェクト名
        REM   -low          すべてのバグランクを対象
        REM   -effort:max   精度が高く、より多くのバグを検出する
        REM   -output       アウトプットパス(batファイルと同じディレクトリ)
        REM   -xml:withMessages       出力形式XML、かつ、日本語メッセージあり
        REM   最後のパラメータは解析対象フォルダパス
        findbugs -textui -projectName %%A -low -effort:max -output f_%%A.xml -xml:withMessages %%A"\target"
    )
)

おわりに

FindBugsコマンドラインのオプションが何となくわかったので、やれてよかったと思います。 ただ、CI/CDを学びながらDevOpsを理解し、開発者がより生産的で知的な開発が行える文化や環境を作っていきたいと思っていたのに、そのための技術が世の中にはたくさんあるというのに・・・

実務ではこんなレベルのことしかできない状況に若干悲しみを覚え始めている今日この頃。

というわけで、CI/CDやDevOpsに関係する勉強会に参加し、社外や今のPJ以外のコミュニティに入り、心の平穏を保っていこうと思いました。