有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JaCoCo报告在Jenkins:java中失败。lang.ArrayIndexOutOfBoundsException

我一直在本地使用JaCoCo,没有问题

在远程服务器上运行Jenkins作业时,该作业生成良好,并生成JaCoCo覆盖率报告(即,它出现在我的workspace/report文件夹中),但尝试在Jenkins上发布报告时生成失败

我使用的是Jenkins 1.460和JaCoCo 5.0.0

我已为Jenkins配置了:

  • exec文件的路径:**/**.exec
  • 类的路径:**/dist/validation/WEB-INF/classes
  • 源代码的路径:**/src(我也尝试了**/Validation/src,并明确地包括**/**.class和排除其他文件类型)

这是配置问题还是兼容性错误

[编辑:如果它对其他人有帮助,其他论坛说JaCoCo需要ASM 5.+来管理Java 8类分析。我已经在使用ASM 5.0.1。]

BUILD SUCCESSFUL
Total time: 4 minutes 57 seconds
Archiving artifacts
Recording test results
[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] **/**.exec;**/dist/validation/WEB-INF/classes;**/Validation/src; locations are configured
[JaCoCo plugin] Number of found exec files for pattern **/**.exec: 1
[JaCoCo plugin] Saving matched execfiles:  E:\Jenkins\jobs\Validation - Test Cases\workspace\Validation\jacoco.exec
[JaCoCo plugin] Saving matched class directories for class-pattern: **/dist/validation/WEB-INF/classes:  E:\Jenkins\jobs\Validation - Test Cases\workspace\Validation\dist\validation\WEB-INF\classes
[JaCoCo plugin] Saving matched source directories for source-pattern: **/Validation/src:  E:\Jenkins\jobs\Validation - Test Cases\workspace\Validation\src
[JaCoCo plugin] Loading inclusions files..
[JaCoCo plugin] inclusions: []
[JaCoCo plugin] exclusions: []
ERROR: Publisher hudson.plugins.jacoco.JacocoPublisher aborted due to exception
java.io.IOException: Error while analyzing class E:\Jenkins\jobs\Validation - Test Cases\builds\2015-02-23_15-59-44\jacoco\classes\org\gosh\validation\filters\ModifiedFileListFilter.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:19)
    at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:705)
    at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:680)
    at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:658)
    at hudson.model.Build$RunnerImpl.post2(Build.java:162)
    at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:627)
    at hudson.model.Run.run(Run.java:1446)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:238)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 7
    at org.jacoco.core.internal.analysis.MethodAnalyzer.addProbe(MethodAnalyzer.java:288)
    at org.jacoco.core.internal.analysis.MethodAnalyzer.visitInsnWithProbe(MethodAnalyzer.java:224)
    at org.jacoco.core.internal.flow.MethodProbesAdapter.visitInsn(MethodProbesAdapter.java:76)
    at org.objectweb.asm.tree.InsnNode.accept(InsnNode.java:80)
    at org.objectweb.asm.tree.InsnList.accept(InsnList.java:162)
    at org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:815)
    at org.jacoco.core.internal.flow.ClassProbesAdapter$1.visitEnd(ClassProbesAdapter.java:124)
    at org.objectweb.asm.ClassReader.b(Unknown Source)
    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:107)
    at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:142)
    ... 18 more
Finished: FAILURE

[更新-解决方案]

我使用this answer在本地驱动器上安装了最近发布的JaCoCo-0.7.4(请参阅eclemma.org/jacoco)。此版本包含issue 27088的修复程序。我还必须删除并重新安装Jenkins JaCoCo插件(我使用了Jenkins插件管理器)


共 (2) 个答案

  1. # 2 楼答案

    两件事: 在JaCoCo后期构建操作的Jenkins项目配置中,确保设置includes字段。类似于*/*。课堂应该是有效的。同时从上面的表达式中删除第二个星号(*)。把它们做成*/*。执行官,*/dist/等

    今天,我在Jacoco插件中遇到了类似的ArrayIndexOutOfBounds异常,但它只发生在Jenkins中,而不是在从命令行运行maven构建时。谷歌搜索表明Jacoco插件包含和排除字段语法会导致人员问题。我尝试了两种不同的格式来处理这些字段,但都没有效果,所以我选择了cobertura插件,它很容易使用:https://wiki.jenkins-ci.org/display/JENKINS/Cobertura+Plugin#CoberturaPlugin-ConfiguringtheCoberturaPlugin