diff --git a/plugin/pom.xml b/plugin/pom.xml index 0558d64d4e..6ad600ee42 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -5,7 +5,7 @@ org.jvnet.hudson.plugins analysis-pom - 9.0.0 + 10.0.0 @@ -47,8 +47,8 @@ -SNAPSHOT ${project.groupId}.warnings.ng - 12.9.1 - ${analysis-model-api.version} + 13.0.0-rc853.93e9b_716371e + 13.0.0-rc6003.203a_5b_4fdf93 335.v525cd64ec76b_ 9.2.0 diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/IssueReportScanner.java b/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/IssueReportScanner.java index 69a3ff020c..c41e4f2162 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/IssueReportScanner.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/IssueReportScanner.java @@ -49,7 +49,7 @@ public IssueReportScanner(final String filePattern, final String encoding, @Override protected Optional processFile(final Path file, final Charset charset, final FilteredLog log) { try { - Report fileReport = parser.parseFile(new FileReaderFactory(file, charset)); + Report fileReport = parser.parse(new FileReaderFactory(file, charset)); log.logInfo("Successfully parsed file %s", file); log.logInfo("-> found %s (skipped %s)", diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/ReportScanningTool.java b/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/ReportScanningTool.java index e1ff88b725..33b4f71250 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/ReportScanningTool.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/ReportScanningTool.java @@ -52,6 +52,7 @@ public abstract class ReportScanningTool extends Tool { private String reportEncoding = StringUtils.EMPTY; // Use negative case to allow defaulting to false and defaulting to existing behaviour. private boolean skipSymbolicLinks = false; + private int linesLookAhead = 3; /** * Sets the Ant file-set pattern of files to work with. If the pattern is undefined then the console log is @@ -134,6 +135,15 @@ public String getReportEncoding() { return reportEncoding; } + @DataBoundSetter + public void setLinesLookAhead(final int linesLookAhead) { + this.linesLookAhead = linesLookAhead; + } + + public int getLinesLookAhead() { + return linesLookAhead; + } + @Override public Report scan(final Run run, final FilePath workspace, final Charset sourceCodeEncoding, final LogHandler logger) { diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/StaticAnalysisLabelProvider.java b/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/StaticAnalysisLabelProvider.java index ca35d63022..c7f844382d 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/StaticAnalysisLabelProvider.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/StaticAnalysisLabelProvider.java @@ -7,8 +7,7 @@ import edu.hm.hafner.analysis.Issue; import edu.hm.hafner.analysis.Report; -import edu.hm.hafner.analysis.registry.ParserDescriptor; -import edu.hm.hafner.analysis.registry.ParserDescriptor.Type; +import edu.hm.hafner.analysis.Report.IssueType; import edu.hm.hafner.util.Generated; import edu.hm.hafner.util.VisibleForTesting; import edu.umd.cs.findbugs.annotations.CheckForNull; @@ -75,7 +74,7 @@ public StaticAnalysisLabelProvider(final String id, @CheckForNull final String n */ public StaticAnalysisLabelProvider(final String id, @CheckForNull final String name, final DescriptionProvider descriptionProvider) { - this(id, name, descriptionProvider, Type.WARNING); + this(id, name, descriptionProvider, IssueType.WARNING); } /** @@ -91,7 +90,7 @@ public StaticAnalysisLabelProvider(final String id, @CheckForNull final String n * the type of the parser */ public StaticAnalysisLabelProvider(final String id, @CheckForNull final String name, - final DescriptionProvider descriptionProvider, final ParserDescriptor.Type type) { + final DescriptionProvider descriptionProvider, final Report.IssueType type) { this.id = id; this.descriptionProvider = descriptionProvider; this.icon = getIcon(type); @@ -99,7 +98,7 @@ public StaticAnalysisLabelProvider(final String id, @CheckForNull final String n changeName(name); } - private String getIcon(final ParserDescriptor.Type type) { + private String getIcon(final Report.IssueType type) { switch (type) { case BUG: return "symbol-solid/bug plugin-font-awesome-api"; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/core/steps/IssuesScanner.java b/plugin/src/main/java/io/jenkins/plugins/analysis/core/steps/IssuesScanner.java index e49b1f37d7..9adfe448c6 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/core/steps/IssuesScanner.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/core/steps/IssuesScanner.java @@ -9,6 +9,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -20,8 +21,8 @@ import edu.hm.hafner.analysis.FileNameResolver; import edu.hm.hafner.analysis.FingerprintGenerator; import edu.hm.hafner.analysis.FullTextFingerprint; -import edu.hm.hafner.analysis.ModuleDetector; -import edu.hm.hafner.analysis.ModuleDetector.FileSystem; +import edu.hm.hafner.analysis.ModuleDetectorRunner; +import edu.hm.hafner.analysis.ModuleDetectorRunner.FileSystemFacade; import edu.hm.hafner.analysis.ModuleResolver; import edu.hm.hafner.analysis.PackageNameResolver; import edu.hm.hafner.analysis.Report; @@ -37,6 +38,7 @@ import io.jenkins.plugins.analysis.core.filter.RegexpFilter; import io.jenkins.plugins.analysis.core.model.ReportLocations; +import io.jenkins.plugins.analysis.core.model.ReportScanningTool; import io.jenkins.plugins.analysis.core.model.Tool; import io.jenkins.plugins.analysis.core.util.AffectedFilesResolver; import io.jenkins.plugins.analysis.core.util.ConsoleLogHandler; @@ -147,9 +149,13 @@ private AnnotatedReport postProcessReport(final Report report) throws IOExceptio } private ReportPostProcessor createPostProcessor(final Report report) { + int linesLookAhead = 0; + if (tool instanceof ReportScanningTool) { + linesLookAhead = ((ReportScanningTool) tool).getLinesLookAhead(); + } return new ReportPostProcessor(tool.getActualId(), report, sourceCodeEncoding.name(), createBlamer(report), filters, getPermittedSourceDirectories(), sourceDirectories, - postProcessingMode); + postProcessingMode, linesLookAhead); } private Set getPermittedSourceDirectories() { @@ -260,11 +266,12 @@ private static class ReportPostProcessor extends MasterToSlaveFileCallable requestedSourceDirectories; private final PostProcessingMode postProcessingMode; private final List filters; + private final int linesLookAhead; @SuppressWarnings("checkstyle:ParameterNumber") ReportPostProcessor(final String id, final Report report, final String sourceCodeEncoding, - final Blamer blamer, final List filters, final Set permittedSourceDirectories, - final Set requestedSourceDirectories, final PostProcessingMode postProcessingMode) { + final Blamer blamer, final List filters, final Set permittedSourceDirectories, + final Set requestedSourceDirectories, final PostProcessingMode postProcessingMode, final int linesLookAhead) { super(); this.id = id; @@ -275,6 +282,7 @@ private static class ReportPostProcessor extends MasterToSlaveFileCallable find(final Path root, final String pattern) { + return Arrays.asList(new FileFinder(pattern).find(root.toFile())); } } } diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Detekt.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Detekt.java index a15e5f292b..9696c40c09 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Detekt.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Detekt.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/EsLint.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/EsLint.java index 6db05107d7..78c51684bf 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/EsLint.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/EsLint.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/IbLinter.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/IbLinter.java index ed60f1f896..60fc55b3de 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/IbLinter.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/IbLinter.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Infer.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Infer.java index 1add1652f6..275e48ecbf 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Infer.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/Infer.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.pmd.PmdParser; +import edu.hm.hafner.analysis.parser.PmdParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/KtLint.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/KtLint.java index 821070ba4f..2592074149 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/KtLint.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/KtLint.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpCodeSniffer.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpCodeSniffer.java index ec478e5cd6..b66afe88bf 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpCodeSniffer.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpCodeSniffer.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpStan.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpStan.java index e63d1905ee..d99b4c8b75 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpStan.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/PhpStan.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/StyleLint.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/StyleLint.java index 8670154611..1cd9c770ff 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/StyleLint.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/StyleLint.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/SwiftLint.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/SwiftLint.java index 5dd55a3212..29229aab02 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/SwiftLint.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/SwiftLint.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/TsLint.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/TsLint.java index 101015e8fe..0a35bf0962 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/TsLint.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/TsLint.java @@ -1,6 +1,6 @@ package io.jenkins.plugins.analysis.warnings; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import org.kohsuke.stapler.DataBoundConstructor; import org.jenkinsci.Symbol; diff --git a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/groovy/DynamicDocumentParser.java b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/groovy/DynamicDocumentParser.java index 776744cd94..b928a2594d 100644 --- a/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/groovy/DynamicDocumentParser.java +++ b/plugin/src/main/java/io/jenkins/plugins/analysis/warnings/groovy/DynamicDocumentParser.java @@ -39,7 +39,7 @@ class DynamicDocumentParser extends IssueParser { @Override @SuppressWarnings("PMD.DoNotUseThreads") - public Report parse(final ReaderFactory reader) throws ParsingException { + public Report parseReport(final ReaderFactory reader) throws ParsingException { Report report = new Report(); Matcher matcher = pattern.matcher(reader.readString() + "\n"); diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/RegisteredParserTest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/RegisteredParserTest.java index 93527a42cf..21c3b7fce1 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/RegisteredParserTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/RegisteredParserTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import edu.hm.hafner.analysis.parser.checkstyle.CheckStyleParser; +import edu.hm.hafner.analysis.parser.CheckStyleParser; import jenkins.model.Jenkins; diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/MiscIssuesRecorderITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/MiscIssuesRecorderITest.java index 7798791f0c..fbe83d9b11 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/MiscIssuesRecorderITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/MiscIssuesRecorderITest.java @@ -15,7 +15,7 @@ import edu.hm.hafner.analysis.Issue; import edu.hm.hafner.analysis.Report; import edu.hm.hafner.analysis.Severity; -import edu.hm.hafner.analysis.parser.findbugs.FindBugsParser.PriorityProperty; +import edu.hm.hafner.analysis.parser.FindBugsParser.PriorityProperty; import hudson.model.FreeStyleProject; import hudson.model.Result; diff --git a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/ModuleDetectorITest.java b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/ModuleDetectorITest.java index 20c4a7a089..24bb11c9fb 100644 --- a/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/ModuleDetectorITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/analysis/warnings/steps/ModuleDetectorITest.java @@ -10,7 +10,7 @@ import org.junit.jupiter.api.Test; -import edu.hm.hafner.analysis.ModuleDetector; +import edu.hm.hafner.analysis.ModuleDetectorRunner; import hudson.FilePath; import hudson.model.FreeStyleProject; @@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.*; /** - * Integration test for the {@link ModuleDetector}. + * Integration test for the {@link ModuleDetectorRunner}. * *

* These tests work on several pom.xml, build.xml and MANIFEST.MF files that will be copied to the workspace for each