Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

OpenClover 4.5.0リリース

Javaのコードカバレッジ取得ツールOpenCloverの新バージョン 4.5.0が2023年10月4日にリリースされました。

OpenClover - Java, Groovy and AspectJ code coverage tool

OpenCloverのいいところは以下の記事にも書いたとおり、ソースコードレベルのC1カバレッジを正しく認識してくれること。

satob.hatenablog.com

なので、たとえばセキュリティデューデリジェンスの関係で「開発したソースコードのC1カバレッジは原則100%とすること」みたいなルールが定められていた場合、JaCocoだと「この部分のC1カバレッジが100%になっていないのはこれこれこういう理由で……」と記録しておく必要がある一方、OpenCloverだとそのような手間をとらずに済む可能性がある*1

また、.NETとJavaが混在する開発環境においてコードカバレッジの取得に関する基準を揃えられるという利点もある。OpenCover*2ではソースコードレベルのC1カバレッジを取得するので、JaCoCoのようなバイトコードレベルでのC1カバレッジを取得するツールを使うとJavaと.NETとで必要なテストケースのラインナップが変わってしまう。

OpenClover 4.5.0では私が対処したアノテーション関連のバグ修正がいくつか入っているのだが、他にも試験的にJava 17の文法に対応している。たとえばテキストブロック(ヒアドキュメント)やRecordクラスへの対応が含まれている。

一方で対応していない文法もあって、たとえばリリースノートにあるSwitch式には対応していない。リリースノートに書かれていないけれど、ほかにもSealedクラスとか、instanceofのパターンマッチングにも対応していないんじゃないかな……?

*1:もっとも逆に、コンパイル済みバイトコードのレベルで100%のC1テストカバレッジを達成しようとした場合はJaCoCoの方が適切になる。言語は違うが、たとえばSQLiteのように。参考: https://www.sqlite.org/testing.html

*2:今はAltCover?