| I have a pipeline that does the following:
recordIssues(
healthy: 1,
qualityGates: [[threshold: 40, type: 'TOTAL', unstable: true]],
tools: [msBuild(), fxcop(pattern: 'fxcop.xml'), styleCop(pattern: '**/StyleCopViolations.xml')],
unhealthy: 39)
recordIssues(
tools: [taskScanner(highTags: 'HACK,FIXME', includePattern: '**/*.cs,**/app/**/*.js', normalTags: 'TODO')])
This is done in order to use the unhealthy threshold only for the MSBuild/FxCop/StyleCop issues, and allow the TaskScanner portion to produce any number of "issues" without running into a threshold. Prior to 8.0.0, this worked fine, but now the second recordIssues generates this:
java.lang.NullPointerException
at edu.hm.hafner.analysis.Report.addAll(Report.java:166)
at edu.hm.hafner.analysis.Report.copyIssuesAndProperties(Report.java:639)
at edu.hm.hafner.analysis.Report.addAll(Report.java:186)
at io.jenkins.plugins.analysis.core.model.AnalysisResult.getIssues(AnalysisResult.java:413)
at java.util.Optional.map(Optional.java:215)
at io.jenkins.plugins.analysis.core.model.AnalysisHistory.getIssues(AnalysisHistory.java:142)
at io.jenkins.plugins.analysis.core.model.DeltaReport.<init>(DeltaReport.java:48)
at io.jenkins.plugins.analysis.core.steps.IssuesPublisher.attachAction(IssuesPublisher.java:110)
at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.publishResult(IssuesRecorder.java:706)
at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.record(IssuesRecorder.java:636)
at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.perform(IssuesRecorder.java:602)
at io.jenkins.plugins.analysis.core.steps.RecordIssuesStep$Execution.run(RecordIssuesStep.java:1007)
at io.jenkins.plugins.analysis.core.steps.RecordIssuesStep$Execution.run(RecordIssuesStep.java:969)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Is there a different 8.0-compatible way to accomplish this behavior, or is this just a legitimate bug? |