Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Configured context lines and fixed broken imports
Browse files Browse the repository at this point in the history
Jay-oao committed Jan 31, 2025

Unverified

This user has not yet uploaded their public signing key.
1 parent f93deb5 commit ebfe64e
Showing 19 changed files with 58 additions and 36 deletions.
6 changes: 3 additions & 3 deletions plugin/pom.xml
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
<parent>
<groupId>org.jvnet.hudson.plugins</groupId>
<artifactId>analysis-pom</artifactId>
<version>9.0.0</version>
<version>10.0.0</version>
<relativePath />
</parent>

@@ -47,8 +47,8 @@
<changelist>-SNAPSHOT</changelist>
<module.name>${project.groupId}.warnings.ng</module.name>

<analysis-model-api.version>12.9.1</analysis-model-api.version>
<analysis-model-tests.version>${analysis-model-api.version}</analysis-model-tests.version>
<analysis-model-api.version>13.0.0-rc853.93e9b_716371e</analysis-model-api.version>
<analysis-model-tests.version>13.0.0-rc6003.203a_5b_4fdf93</analysis-model-tests.version>
<pull-request-monitoring.version>335.v525cd64ec76b_</pull-request-monitoring.version>

<eclipse-collections.version>9.2.0</eclipse-collections.version>
Original file line number Diff line number Diff line change
@@ -49,7 +49,7 @@ public IssueReportScanner(final String filePattern, final String encoding,
@Override
protected Optional<Report> 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)",
Original file line number Diff line number Diff line change
@@ -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) {
Original file line number Diff line number Diff line change
@@ -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,15 +90,15 @@ 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);

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";
Original file line number Diff line number Diff line change
@@ -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<String> getPermittedSourceDirectories() {
@@ -260,11 +266,12 @@ private static class ReportPostProcessor extends MasterToSlaveFileCallable<Annot
private final Set<String> requestedSourceDirectories;

Check warning on line 266 in plugin/src/main/java/io/jenkins/plugins/analysis/core/steps/IssuesScanner.java

ci.jenkins.io / Java Compiler

compiler:compile

NORMAL: non-transient instance field of a serializable class declared with a non-serializable type
private final PostProcessingMode postProcessingMode;
private final List<RegexpFilter> filters;

Check warning on line 268 in plugin/src/main/java/io/jenkins/plugins/analysis/core/steps/IssuesScanner.java

ci.jenkins.io / Java Compiler

compiler:compile

NORMAL: non-transient instance field of a serializable class declared with a non-serializable type
private final int linesLookAhead;

@SuppressWarnings("checkstyle:ParameterNumber")
ReportPostProcessor(final String id, final Report report, final String sourceCodeEncoding,
final Blamer blamer, final List<RegexpFilter> filters, final Set<String> permittedSourceDirectories,
final Set<String> requestedSourceDirectories, final PostProcessingMode postProcessingMode) {
final Blamer blamer, final List<RegexpFilter> filters, final Set<String> permittedSourceDirectories,
final Set<String> requestedSourceDirectories, final PostProcessingMode postProcessingMode, final int linesLookAhead) {
super();

this.id = id;
@@ -275,6 +282,7 @@ private static class ReportPostProcessor extends MasterToSlaveFileCallable<Annot
this.permittedSourceDirectories = permittedSourceDirectories;
this.requestedSourceDirectories = requestedSourceDirectories;
this.postProcessingMode = postProcessingMode;
this.linesLookAhead = linesLookAhead;
}

@Override
@@ -335,11 +343,11 @@ private void resolveModuleNames(final Report report, final File workspace) {
report.logInfo("Resolving module names from module definitions (build.xml, pom.xml, or Manifest.mf files)");

try {
ModuleResolver resolver = new ModuleResolver();
resolver.run(report, new ModuleDetector(workspace.toPath(), new DefaultFileSystem()));
ModuleResolver resolver = new ModuleResolver(new ModuleDetectorRunner(workspace.toPath(), new DefaultFileSystem()));
resolver.run(report);
}
catch (InvalidPathException exception) {
report.logException(exception, "Resolving of modul names aborted");
report.logException(exception, "Resolving of module names aborted");
}
}

@@ -363,23 +371,28 @@ private void createFingerprints(final Report report) {
report.logInfo("Creating fingerprints for all affected code blocks to track issues over different builds");

FingerprintGenerator generator = new FingerprintGenerator();
generator.run(new FullTextFingerprint(), report, getCharset());
if (linesLookAhead < 0) {
generator.run(new FullTextFingerprint(), report, getCharset());
}
else {
generator.run(new FullTextFingerprint(linesLookAhead), report, getCharset());
}
}
}

/**
* Provides file system operations using real IO.
*/
private static final class DefaultFileSystem implements FileSystem {
private static final class DefaultFileSystem implements FileSystemFacade {
@MustBeClosed
@Override
public InputStream open(final String fileName) throws IOException {
return Files.newInputStream(Paths.get(fileName));
}

@Override
public String[] find(final Path root, final String pattern) {
return new FileFinder(pattern).find(root.toFile());
public List<String> find(final Path root, final String pattern) {
return Arrays.asList(new FileFinder(pattern).find(root.toFile()));
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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");

Original file line number Diff line number Diff line change
@@ -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;

Original file line number Diff line number Diff line change
@@ -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;
Original file line number Diff line number Diff line change
@@ -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}.
*
* <p>
* These tests work on several pom.xml, build.xml and MANIFEST.MF files that will be copied to the workspace for each

0 comments on commit ebfe64e

Please sign in to comment.