我一直在本地使用JaCoCo,沒有任何問題。JaCoCo報告在Jenkins中失敗:java.lang.ArrayIndexOutOfBoundsException
在遠程服務器上運行Jenkins作業時,作業生成良好並生成JaCoCo覆蓋報告(即,它出現在我的workspace/report
文件夾中),但在嘗試在Jenkins上發佈報告時生成失敗。
我使用的是Jenkins 1.460和JaCoCo 5.0.0。
我與配置詹金斯:
- 路徑exec的文件:
**/**.exec
- 路徑類:
**/dist/validation/WEB-INF/classes
- 路徑來源:
**/src
(我自己也嘗試**/Validation/src
,並明確包括**/**.class
和排除其他文件類型)
這是一個配置問題,還是一個comp適應性錯誤?
[編輯:如果它可以幫助其他人,其他論壇說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插件管理器)。
謝謝 - 請您進一步解釋我如何解決這種不兼容問題?我曾嘗試手動安裝JaCoCo,並通過Jenkins的插件管理器進行安裝。自動安裝程序給了我JaCoCo'1.0.18'和所有其他模塊('org.jacoco.agent','jacoco-maven-plugin','org.jacoco.report'和'org.jacoco.core')版本'0.7.1.201405082137' - 實際上是一個名爲'$ {jacoco.version}'的屬性。我如何管理這些依賴關係? – 2015-02-24 13:06:52
...如果確實版本'0.7.1.201405082137'也是不兼容的... – 2015-02-24 13:07:23
更新 - 我創建了一個框架作業,確認我的JaCoCo和Jenkins版本是兼容的,所以這不是問題。 – 2015-02-24 14:33:46