首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins jacoco集成

Jenkins jacoco集成
EN

Stack Overflow用户
提问于 2015-07-29 08:28:26
回答 1查看 4.6K关注 0票数 2

我正试图通过jenkins和jacoco插件获得代码覆盖。

我在执行测试的机器上有一个加考剂jar。然后,我检索转储并尝试获取jenkins上的代码覆盖率。

不管怎么说,我总是犯以下错误,

代码语言:javascript
复制
[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] \**/coverage/jacoco.exec;\**/coverage/classes-cov;\**/application/; locations are configured
[JaCoCo plugin] Number of found exec files for pattern \**/coverage/jacoco.exec: 1
[JaCoCo plugin] Saving matched execfiles:  /home/ec2-user/slave/workspace/Automation_Code_Coverage_POMS/coverage/jacoco.exec
[JaCoCo plugin] Saving matched class directories for class-pattern: \**/coverage/classes-cov:  /home/ec2-user/slave/workspace/Automation_Code_Coverage_POMS/coverage/classes-cov
[JaCoCo plugin] Saving matched source directories for source-pattern: \**/application/: 
[JaCoCo plugin] Loading inclusions files..
[JaCoCo plugin] inclusions: [\**/com/test/poms/\**]
[JaCoCo plugin] exclusions: [\**/poms/convertors/\**:\**/poms/scheduler/\**]
ERROR: Publisher 'Record JaCoCo coverage report' aborted due to exception: 
java.io.IOException: Error while analyzing class /home/ec2-user/.jenkins/jobs/Automation_Code_Coverage_POMS/builds/43/jacoco/classes/com/test/poms/convertors/DtoToSroConverter.83f57acb46d004b5.class.
    at org.jacoco.core.analysis.Analyzer.analyzerError(Analyzer.java:150)
    at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:144)
    at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:175)
    at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:208)
    at hudson.plugins.jacoco.ExecutionFileLoader.analyzeStructure(ExecutionFileLoader.java:126)
    at hudson.plugins.jacoco.ExecutionFileLoader.loadBundleCoverage(ExecutionFileLoader.java:133)
    at hudson.plugins.jacoco.JacocoReportDir.parse(JacocoReportDir.java:102)
    at hudson.plugins.jacoco.JacocoBuildAction.loadRatios(JacocoBuildAction.java:291)
    at hudson.plugins.jacoco.JacocoBuildAction.load(JacocoBuildAction.java:273)
    at hudson.plugins.jacoco.JacocoPublisher.perform(JacocoPublisher.java:371)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:726)
    at hudson.model.Build$BuildExecution.post2(Build.java:185)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:671)
    at hudson.model.Run.execute(Run.java:1769)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:374)
    Caused by: java.lang.IllegalStateException: Can't add different class with same name: com/test/poms/convertors/DtoToSroConverter
    at org.jacoco.core.analysis.CoverageBuilder.visitCoverage(CoverageBuilder.java:106)
    at org.jacoco.core.analysis.Analyzer$1.visitEnd(Analyzer.java:92)
    at org.objectweb.asm.ClassVisitor.visitEnd(ClassVisitor.java:317)
    at org.jacoco.core.internal.flow.ClassProbesAdapter.visitEnd(ClassProbesAdapter.java:98)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:697)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:506)
    at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:107)
    at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:142)
    ... 17 more
Notifying upstream projects of job completion

JaCoCo Can't add different class with same name: org/hamcrest/BaseDescription上面的链接建议排除这些文件,但是如果您查看上面的日志,它们已经被排除了,但是我仍然看到了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 17:01:36

在我的例子中,请参阅: Jenkins中的12:35:12 [JaCoCo plugin] exclusions: [**/*koba*.class]日志,Jenkins插件执行分析。与你所得到的相比没有反斜杠。

其次,您所得到的错误是由以下两个原因之一造成的:

  1. 您有..java/..groovy文件,编译后创建.class文件。似乎有类文件(在您的例子中用于ex: abc.java或abc.java),它存在于您在插件的“源代码”字段中提到的源文件夹中。
  2. 如果要创建任何类文件(源中没有.java/.groovy文件) (src/main/java或src/main/groovy或src/test/java、src/test/groovy、src/xxx/java或src/xxx/groovy文件夹),则jacoco分析将出现相同的错误,即它将无法为它分析的.class文件找到相应的源文件(.java/.groovy)。

检查一下,项目中有多少名以: DtoToSroConverter开头的文件。

然后,确保在Jenkins的Jacoco插件中提到的值如下所示。注意:源代码不应包含任何测试(单元/非单元测试源)文件夹。

在我的例子中,我是说,处理所有的.exec文件(在构建/测试/jacoco进程完成后,在我的项目工作区中的任何地方),即*..exec*

然后,类目录的路径应该总是只提到主源类文件(而不是单元/非单元类型的测试类),即我只使用"build/classes/main“,因为这些类是根据我的源代码(src/ MAIN /java或src/java)生成的。此值是仅包含主源代码类的文件夹。

“源目录路径”字段应该始终包含实际主源代码存在的文件夹(而不是包含任何测试源代码),即我使用了"src/java“。我可以使用"src/ main /java“,这是主源代码的Gradle/Maven标准文件夹结构。在我的例子中,我的主要源代码在src/java文件夹中。

检查是否正确设置了源目录路径字段和类目录路径?如果是,是否有多个文件名为:DtoToSroConverter

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31695176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档