プロジェクトには、次のようなユーティリティ クラスがあります。
public final class Util {
private Util() {}
public static String method1(InputStream in) {...}
public static String method2(BufferedReader in) {...}
public static String method3(File file) {...}
}
このクラスは、メソッドのみstatic
を含むという意味でユーティリティ クラスです。したがって、それは宣言されfinal
、そのコンストラクターはprivate
です。インスタンスを作成したり、サブクラスを派生させたりしても、まったく意味がありません。
プロジェクトをテストする一連の単体テストがあります。IntelliJ IDEAを使用してテストを実行し、コード カバレッジを測定して視覚化しています。Utility のコンストラクターは、class Util
カバレッジを下げるようになりました。100% の論理カバレッジで 100% を見たいと思います。Utility クラスのプライベート コンストラクターのようなコードは、カバレッジを低下させます。
そのようなコードをカバレッジ レポートから除外して 100% のカバレッジを表示するために、できれば注釈を使用して、メソッドまたはコンストラクターをコード カバレッジに関連しないものとしてマークする可能性はありますか?
一般に、カバレッジ レポートからコードを非表示にすることは、あなた自身の不利益になることを知っています。レポートに「無視されたアイテム」のリストが含まれていてもかまいません。実際には、誰かが無視してはならないものを無視しているかどうかを確認するのに適しています。要点は、Utility クラスのプライベート コンストラクターのように、カバレッジが意味をなさないコードについてです。
annotations.jar
候補が含まれているかどうかを調べてみました。遠くからでもそれができるかのように見える唯一の注釈は でしたがTestOnly
、それはこの目的を果たしません。私も覗いてみたplugins/coverage/lib/*.jar
のですが、候補が見つからなかったのですが、もしかしたら見落としていたのでしょうか?
更新 この質問は現在廃止されています。一方、IntelliJ IDEA と Jacoco は、呼び出し元を持たないプライベート コンストラクターのカバレッジを無視する方法を学びました。カバレッジ レポートから除外するための会話を引き起こす Java の意図的に到達不能なコードの例を他に知りません。
更新 2 この質問は、Java レコード クラスのアクセサーに関連するものになる可能性があります。