JaCoCo是一个覆盖率分析工具。它作为JVM代理运行,因此不需要脱机检测。
尝试将 Hilt 添加到当前已运行 Jacoco 的项目中。 我看到下面的错误日志(代码已编译并运行正常。) 引起原因:java.lang.IllegalStateException:无法处理仪器...
使用maven升级到Java 11、sonarqube、jacoco会导致错误
将 Java 从 8 升级到 11 后。声纳:声纳无法工作并出现异常 到底。 Java 1.8 在 Sonarqube 7.7 上运行良好,现在在 java 11 和 sonarqube 7.8 上却失败了,除了......
JaCoCo 无法添加具有相同名称的不同类:org/hamcrest/BaseDescription
嗨,我在运行 JaCoCo 覆盖范围时遇到以下异常: org.jacoco jacoco-maven-插件 嗨,我在运行 JaCoCo 覆盖范围时遇到以下异常: <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.5.8.201207111220</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>prepare-package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> Error while creating report: Can't add different class with same name: org/hamcrest/BaseDescription java.lang.IllegalStateException: Can't add different class with same name: org/hamcrest/BaseDescription at org.jacoco.core.analysis.CoverageBuilder.visitCoverage(CoverageBuilder.java:89) at org.jacoco.core.analysis.Analyzer$1.visitEnd(Analyzer.java:79) at org.objectweb.asm.ClassAdapter.visitEnd(Unknown Source) at org.jacoco.core.internal.flow.ClassProbesAdapter.visitEnd(ClassProbesAdapter.java:128) at org.objectweb.asm.ClassReader.accept(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:94) at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:115) at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:155) at org.jacoco.core.analysis.Analyzer.analyzeArchive(Analyzer.java:135) at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:158) at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:183) at org.jacoco.maven.ReportMojo.createBundle(ReportMojo.java:280) at org.jacoco.maven.ReportMojo.createReport(ReportMojo.java:256) at org.jacoco.maven.ReportMojo.executeReport(ReportMojo.java:230) at org.jacoco.maven.ReportMojo.execute(ReportMojo.java:208) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 有两种方法可以避免这种情况: 1)重命名其中一个重复项:当涉及到 Maven 项目时,我经常看到这个问题。 即使这两个类位于两个不同的模块中,两个不同的类具有相同的名称也不是一个好主意。 2)排除其中之一:请参阅thisSO线程以获取更多信息。 target文件夹中的某些 jar 或项目文件通常会导致此问题。这就是解决我们 Maven 项目中的问题的方法(参见 Sanjay 的回答 for gradle): <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.7</version> <configuration> <excludes>**/*.jar</excludes> </configuration> </plugin> 请注意,这是适用于我们特定项目的最简单的解决方案。如果您需要进行其他排除,请包装多个 <exclude> 命令,如下所示: <configuration> <excludes> <exclude>**/*.jar</exclude> <exclude>naughty-dependency/**/*.class</exclude> </excludes> </configuration> NB. 此配置部分不会故意将 JaCoCo 附加到任何 <execution> 目标。这样,当 JaCoCo 摔倒时,默认的打包过程就不会中断,而且运行速度也会稍快一些。仅当发出 mvn org.jacoco:jacoco-maven-plugin:prepare-agent test jacoco:report 时才会生成报告,例如我们在 gitlab CI 管道中执行的操作。 我同意rb512。可能出现此错误的另一种情况/区域是,在编译过程中,如果我们使用 JIBX/WST 等或创建动态类文件(在编译时)的类似其他步骤/过程,即我们没有任何有效的对应文件工作区中的源文件(.java/.groovy 等)。 在这种情况下,您的工作区将有额外的类文件,并且当 jacoco 尝试生成报告时,它会因重复的类而出现相同的错误。如果您由于这种情况发现此错误,则必须在运行 jacoco reports 之前删除所有类文件 如果您使用 Gradle(对于 Maven,请在 Maven pom .xml 文件中执行相同操作),请参阅下面的 doFirst 块,该块正在执行此操作。 jacocoTestReport { //cleaning up the JiBx classes to jacoco will not cause problems for CareDiscovery doFirst { delete fileTree (dir: "${buildDir}/classes", include: "**/JiBX_*.class") } group = "Reporting" description = "Generate Jacoco coverage reports after running tests." executionData = fileTree(dir: 'build/jacoco', include: '**/*.exec') reports { xml{ enabled true //Following value is a file destination "${buildDir}/reports/jacoco/xml/jacoco.xml" } csv.enabled false html { enabled true //Following value is a folder destination "${buildDir}/reports/jacoco/html" } } sourceDirectories = files(['src/java','src/main/java', 'src/main/groovy']) classDirectories = files('build/classes/main') } 我遇到了和你一样的问题。事实证明,我的项目文件夹中有两个 jar 包做了同样的事情,尽管只有其中一个位于构建路径中。检查代码中是否有多个 hamcrest jar。 就我而言,问题是由于项目 Jar artefact 中的类而发生的。 Caused by: java.io.IOException: Error while analyzing /opt/jenkins/workspace/MicroService-M_build/microservice/dev/microservice/build/gen/main/resources/uploadassets/myCustomProject.jar@org/apache/commons/beanutils/BasicDynaBean.class. Caused by: java.lang.IllegalStateException: Can't add different class with same name: org/apache/commons/beanutils/BasicDynaBean at org.jacoco.core.analysis.CoverageBuilder.visitCoverage(CoverageBuilder.java:107) 下面是从 jacoco 测试报告中排除自定义 jar 的 gradle 任务 jacocoTestReport { doFirst { delete fileTree (dir: "${buildDir}/gen/main/resources/uploadassets", include: "myCustomProject.jar") } reports { xml.enabled true } } 这解决了我的问题。 删除重复的类并将模块包含到另一个模块,例如: 我有付款和付款合同模块。 我已经在支付模块中注入了支付合同: 实施项目(“:模块:付款:付款合同”)
Android:gradle 升级到 7.0.x 和 jdk 11 后未生成 Jacoco 代码覆盖率
Android:在 testCoverageEnabled true 的情况下 gradle 升级到 7.0.x 和 jdk 11 后,不会生成 Jacoco 代码覆盖率。它与 gradle 4.2.x 和 jdk 8 完美配合。 我尝试删除
所以这个问题可能不是很具体,但我还是要问。 我正在尝试将 JaCoCo 与 IntelliJ 结合使用来收集单元测试的覆盖率报告。然而,我没有任何经验......
我对这个领域很陌生。 我正在尝试获取在完全不同的存储库下编写的自动化测试用例的测试覆盖率,以使用 Jacoco 进行测试。 我想知道是否可以
SonarQube - Maven Jacoco 错误 - 无法导入文件的覆盖范围信息,java.lang.IllegalStateException:第 70 行超出文件范围
我在 SonarQube(版本 -SonarScanner CLI 6.0.0.4432 SonarQube Server 版本 10.6.0.92116)构建中遇到以下错误。 15:06:52.321 INFO 正在导入 10 个报告。将日志置于调试模式...
我正在尝试为我的 Quarkus 应用程序检测代码覆盖率。 运行 mvn clean install 时,一切正常,代码覆盖率按预期显示,并且类被排除。 但是当
我正在使用 Jacoco Maven 插件版本 0.8.1(使用 Java 8 / Maven 3.1.0)。 无法让 Jacoco 使用路径排除。 我想排除这些包: my.package.model 我的.package.
Jacoco @Generated 注释不排除具有匿名类方法的类
我正在使用以下注释从 jacoco 覆盖范围中排除类 @Target({ElementType.TYPE,ElementType.METHOD}) 公共@interface ExcludeFromJacocoGenerateReport { } 我想排除以下...
在 GitLab 15.0 中,设置项目中的测试覆盖率功能将被删除。 GitLab 提供使用 .gitlab-ci.yml 中的覆盖率关键字解析测试覆盖率 满足所有要求: 定义为单q...
Android 项目中的 JaCoCo 和 Coveralls 集成(Github 操作)- 覆盖率报告未出现在 Coveralls.io 上
我正在尝试将代码覆盖率工具Coveralls.io集成到我的Android项目中。我使用 JaCoCo 生成覆盖率报告,并使用 Coveralls Gradle 插件上传它们。我的 GitHub A...
Jacoco Android createDebugCoverageReport 未找到
我想在 Android 应用程序中运行测试并创建覆盖率报告,因此我将 Jacoco 配置添加到我的 build.gradle 文件中,但它不起作用。 应用插件:'com.android.application' 安卓...
使用 Spring Boot 时,使用 JaCoCo 代码覆盖率进行 Gradle 多项目构建失败
从 https://docs.gradle.org/current/samples/sample_jvm_multi_project_with_code_coverage.html 中的示例开始(即此处的代码 https://github.com/gradle/gradle/tree/master/subprojects/。 ..
使用Jacoco Agent远程触发jacoco执行数据转储
我使用官方示例 Socket 服务器来启动 Socket 服务器,供我的 jacocoagent.jar 连接。我这样启动我的目标 jar: java -javaagent:jacocoagent.jar=dumponexit=false,输出=
我遇到一个问题,测试任务间歇性失败(我怀疑是这样,因为 Jacoco 在测试期间触发[生成报告])。 有没有办法在测试期间禁用 jacoco 的运行?...
我在我的 Spring Boot 项目中使用 gradle 和 Jacoco。不幸的是,我的测试没有运行并且低于异常。我的 gradle 版本 https://services.gradle.org/distributions/gradle-8....
目前,在 Quarkus 中运行测试时(./mvnw test)会生成 JacoCo 报告。然而,当打开target/jacoco-report/index.html时,h1标签填充的是第一个测试类......
是否有任何选项可以从 Android Studio 的测试覆盖率报告中排除 Dagger2 类
我正在尝试为多模块项目的单元测试添加聚合覆盖率报告。各个模块的覆盖率报告按预期生成。但汇总报告生成...