gpt4 book ai didi

java - 如何从 jacoco 报告(Instrumentation offline)中正确排除和包含类、包和 jar 类、lib

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:05:17 53 4
gpt4 key购买 nike

我正在使用 JaCoCo 代码覆盖率,但报告包括来自 jar、lib 的类。 (离线检测,Maven)

我解决了离线配置的问题,因为“aspectj-maven-plugin”正在更改类文件,而且现在我成功地排除了 target/classes 之外的包。 -> src .感谢 stackoverflow 中的这个答案.但是现在我正在从报告中的 jar、lib 获取类,然后我不知道如何排除。我在下面显示我的配置和示例

我也试过这个解决方案Exclude classes of jar files from jacoco coverage report但这对我不起作用。 <exclude>**/lib/*</exclude>

我的jacoco离线配置:

<properties>
<jacoco.version>0.8.4</jacoco.version>
<argLine></argLine>
</properties>


<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.agent</artifactId>
<classifier>runtime</classifier>
<version>${jacoco.version}</version>
</dependency>

<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<goals>
<goal>instrument</goal>
<goal>restore-instrumented-classes</goal>
<goal>report</goal>
</goals>
<configuration>
<!-- this configuration affects all goals -->
<excludes>
<exclude>*</exclude>
<exclude>com/company/rrPackage/**/*.class</exclude>
<exclude>org/**/*.class</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>

surefire 插件

            <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<testNGArtifactName>...</testNGArtifactName>
<suiteXmlFiles>
<suiteXmlFile>...</suiteXmlFile>
</suiteXmlFiles>
<skip>${skip.test}</skip>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
<properties>
...
</properties>
</configuration>
</plugin>

以及我认为我从 de jacoco:report 中的 jar 中获取类的原因。在我的 pom.xml 中,我有以下依赖项:

<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.9</version>
</dependency>

我的类中也有一些像这样的导入

import org.hsqldb.lib.StringUtil;

例如:这与 pom.xml 没有依赖关系,但在其中一个项目类中使用,并且 jacoco 在报告中显示了它

import javax.mail.internet.AddressException;

我有其他情况具有相同的行为导致相同的问题:Jacoco 在报告中显示来自 jar 的那些类,如图所示

enter image description here enter image description here

最佳答案

尝试使用 includes 而不是 excludes。请注意,最后需要 .class。尝试这样的事情:

<configuration>
<includes>
<include>com/company/package/**/*.class</include>
</includes>
</configuration>

基于你的例子:

           <plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<goals>
<goal>instrument</goal>
<goal>restore-instrumented-classes</goal>
<goal>report</goal>
</goals>
<configuration>
<!-- this configuration affects all goals -->
<includes>
<include>com/company/packageToInclude/**/*.class</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>

关于java - 如何从 jacoco 报告(Instrumentation offline)中正确排除和包含类、包和 jar 类、lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58224968/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com