-
Bug
-
Resolution: Cannot Reproduce
-
Major
-
None
The JaCoCo plugin seems to not handle JaCoCo modules correctly in some places. During collecting the data, files are saved per-module:
ls /opt/jenkins/builds/job1/2012-10-04_21-58-03/jacoco/
module0 Modules.properties
However when I open the "JaCoCo Coverage Report", the chart is not displayed. The logfile shows the following, which indicates that it tries to access the "classes" directory underneath "jacoco", however it can be found underneath "jacoco/module0"
Caused by: java.lang.IllegalStateException: basedir /opt/jenkins/builds/job1/2012-10-04_21-58-03/jacoco/classes does not exist
at org.codehaus.plexus.util.DirectoryScanner.scan(DirectoryScanner.java:550)
at org.codehaus.plexus.util.FileUtils.getFileAndDirectoryNames(FileUtils.java:1717)
at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1645)
at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1627)
at org.codehaus.plexus.util.FileUtils.getFiles(FileUtils.java:1601)
at org.codehaus.plexus.util.FileUtils.getFiles(FileUtils.java:1584)
at hudson.plugins.jacoco.ExecutionFileLoader.analyzeStructure(ExecutionFileLoader.java:129)
at hudson.plugins.jacoco.ExecutionFileLoader.loadBundleCoverage(ExecutionFileLoader.java:138)
at hudson.plugins.jacoco.JacocoReportDir.parse(JacocoReportDir.java:102)
at hudson.plugins.jacoco.JacocoBuildAction.getResult(JacocoBuildAction.java:217)
at hudson.plugins.jacoco.report.CoverageReport.getPreviousResult(CoverageReport.java:153)
at hudson.plugins.jacoco.report.CoverageReport.getPreviousResult(CoverageReport.java:37)
at hudson.plugins.jacoco.model.CoverageObject$1.createDataSet(CoverageObject.java:428)
at hudson.plugins.jacoco.model.CoverageObject$GraphImpl.createGraph(CoverageObject.java:466)
at hudson.util.Graph.render(Graph.java:87)
at hudson.util.Graph.doPng(Graph.java:98)
at hudson.plugins.jacoco.model.CoverageObject.doGraph(CoverageObject.java:422)
at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:297)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:160)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:95)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:684)
... 66 more
the build.xml for the job contains one named "structure"
<jacoco:report>
...
<structure name="commons-dost">
<classfiles>
..
</structure>
Output of the Publisher is as follows
[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] *.exec;build/ant;src; locations are configured
[JaCoCo plugin] Number of found exec files: 1
[JaCoCo plugin] Saving matched execfiles: /opt/job1/jacoco.exec
[JaCoCo plugin] Saving matched class directories: /opt/job1/build/ant
[JaCoCo plugin] Saving matched source directories: /opt/job1/src
[JaCoCo plugin] Loading inclusions files..
[JaCoCo plugin] inclusions: []
[JaCoCo plugin] exclusions: []
[JaCoCo plugin] Thresholds: JacocoHealthReportThresholds [minClass=0, maxClass=100, minMethod=0, maxMethod=70, minLine=0, maxLine=80, minBranch=0, maxBranch=80, minInstruction=0, maxInstruction=80, minComplexity=0, maxComplexity=80]
[JaCoCo plugin] Publishing the results..
[JaCoCo plugin] Loading packages..
[JaCoCo plugin] Done.