可以通过类文件过滤 Jacoco CLI 报告吗

Can Jacoco CLI report be filtered via classfiles

是否可以仅报告 1 个或从 jar 文件中选择性 class(es),例如 *.exec 是为应用程序记录的,但只需要报告 1 class,现在在 --classfiles 中,我们可以指定一个 JAR 文件,例如 /path/trial.jar,但不能超出 /path/trial.jar/pkg1/class,是否有一些选项可以做到这一点。

<path> in --classfiles <path> 递归扫描,所有找到的 class 文件都用于生成报告,因此它不仅可以指向 JAR 文件,还可以指向包含以下内容的目录JAR 文件和 class 文件,也可以指向单个 class 文件。

例如编译后 Example.java

class Example {

  class Inner {
  }

  public static void main(String[] args) {
  }

}

进入目录classes

javac Example.java -d classes

将生成两个 class 文件,如命令 ls classes

所示
'Example$Inner.class'   Example.class

生成后jacoco.exec

java -cp classes -javaagent:jacoco-0.8.0/lib/jacocoagent.jar Example

可以使用命令

为整个 classes 目录生成报告
java -jar jacoco-0.8.0/lib/jacococli.jar report jacoco.exec --classfiles classes

将分析两个 class 个文件

[INFO] Loading execution data file /tmp/example/jacoco.exec.
[INFO] Analyzing 2 classes.

或使用命令

为单个 Example.class 生成报告
java -jar jacoco-0.8.0/lib/jacococli.jar report jacoco.exec --classfiles classes/Example.class

而且只有这个class会被分析

[INFO] Loading execution data file /tmp/example/jacoco.exec.
[INFO] Analyzing 1 classes.

因此您可以将 JAR 文件解压到目录中并单独分析其中的任何内容。