JaCoCo 未根据源文件生成覆盖率报告 - 方法名称不可点击

Pav*_*mar 6 java maven jacoco jacoco-maven-plugin

我有一个 Maven 多模块项目,其中 JaCoCo 没有根据源文件生成报告。

通常,如果MyService是正在测试的类,它将以两种方式报告,一种通过MyService.html基于适当包的位置中的文件名和方法列表,以数字和图表的形式提供覆盖范围的整体图 - 列出所有方法在类中,每个方法都有一个指向另一个 html 的可点击链接,MyService.java.html其中包含带有红色/绿色/黄色背景的源代码以显示覆盖状态。

在我的场景中,只MyService.html生成而不是MyService.java.html和 方法在前者中列出并包含覆盖详细信息,但没有指向其他报告的超链接,如下所示。

在此处输入图片说明

问题在这里变得更有趣,我的 Maven 配置未在此模块中配置,但在父模块和其他子模块中能够正确生成报告。下面是maven插件配置供参考。

父 POM:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${jacoco.version}</version>
  <configuration>
     <destFile>${project.basedir}/target/jacoco-unit.exec</destFile>
     <dataFile>${project.basedir}/target/jacoco-unit.exec</dataFile>
     <append>true</append>
  </configuration>
  <executions>
     <execution>
        <id>jacoco-initialize</id>
        <goals>
           <goal>prepare-agent</goal>
        </goals>
     </execution>
     <execution>
        <id>jacoco-site</id>
        <phase>package</phase>
        <goals>
           <goal>report</goal>
        </goals>
     </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

子POM:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

尝试切换 JaCoCo 版本,但没有任何帮助,现在坚持使用最新的 0.8.2。Maven 是最新的 - 3.6.0。除此之外,子 pom 中配置的另一个插件是 PMD——它的存在与否对报告没有任何影响。

类似问题:Gradle JaCoCo 插件 - 报告中不可点击的类和方法名称

God*_*din 5

如果没有完整演示重现困难的步骤的最小、完整和可验证示例,只能引用JaCoCo 常见问题解答

为什么覆盖率报告不显示突出显示的源代码?

确保满足以下先决条件才能在 JaCoCo 覆盖率报告中突出显示源代码:

  • 必须使用调试信息编译类文件以包含行号。
  • 必须在报告生成时正确提供源文件。

关于第一点看到-g的选项javacdebugdebuglevelMaven的编译器插件的选项。

对于第二点,请确保源文件Example.java具有

package org.example;
Run Code Online (Sandbox Code Playgroud)

位于 src/main/java/org/example/Example.java