diff --git a/pom.xml b/pom.xml
index e3ef74a..3139cfe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
org.jenkins-ci.plugins
plugin
- 1.447
+ 2.0
cppcheck
@@ -31,6 +31,10 @@
Michal Turek
mixalturek@users.sf.net
+
+ marcosteffan
+ Marco Steffan
+
@@ -38,18 +42,19 @@
scm:git:git@github.com:jenkinsci/cppcheck-plugin.git
HEAD
-
+
UTF-8
1.6
1.6
2.2.1
2.2.1.1
- 2.1
+ 1.3
5.0
4.8.2
1.8.5
2.0
+ 2.30
@@ -102,6 +107,59 @@
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ [0.5,)
+
+
+ prepare-agent
+
+
+
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ InjectedTest.java
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ InjectedTest.java
+
+
+
+
+
org.codehaus.mojo
@@ -112,9 +170,11 @@
generatedCppcheck1
com.thalesgroup.jenkinsci.plugins.cppcheck.model
-
- ${basedir}/src/main/resources/com/thalesgroup/hudson/plugins/cppcheck/cppcheck-1.0.xsd
-
+ ${basedir}/src/main/resources/com/thalesgroup/hudson/plugins/cppcheck
+
+ cppcheck-1.0.xsd
+ ${project.build.directory}/generated-sources/jaxb/cppcheck1/.staleFlag.
+
false
@@ -125,9 +185,11 @@
generatedCppcheck2
org.jenkinsci.plugins.cppcheck.model
-
- ${basedir}/src/main/resources/org/jenkinsci/plugins/cppcheck/cppcheck-2.0.xsd
-
+ ${basedir}/src/main/resources/org/jenkinsci/plugins/cppcheck
+
+ cppcheck-2.0.xsd
+ ${project.build.directory}/generated-sources/jaxb/cppcheck2/.staleFlag.
+
false
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckAreaRenderer.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckAreaRenderer.java
index a501df5..f7a5b71 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckAreaRenderer.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckAreaRenderer.java
@@ -66,4 +66,30 @@ public final String generateURL(final CategoryDataset dataset, final int row, fi
private NumberOnlyBuildLabel getLabel(final CategoryDataset dataset, final int column) {
return (NumberOnlyBuildLabel) dataset.getColumnKey(column);
}
+
+ /**
+ * Checks this instance for equality with an arbitrary object.
+ *
+ * @param obj the object (null not permitted).
+ *
+ * @return A boolean.
+ */
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof CppcheckAreaRenderer)) {
+ return false;
+ }
+ CppcheckAreaRenderer that = (CppcheckAreaRenderer) obj;
+
+ if (this.url != that.url) {
+ return false;
+ }
+ return super.equals(obj);
+ }
+
+ public int hashCode() {
+ return this.url.hashCode();
+ }
}
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckBuildAction.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckBuildAction.java
index b934bf4..71cf1fa 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckBuildAction.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckBuildAction.java
@@ -30,7 +30,7 @@
import com.thalesgroup.hudson.plugins.cppcheck.model.CppcheckSourceContainer;
import com.thalesgroup.hudson.plugins.cppcheck.util.AbstractCppcheckBuildAction;
import com.thalesgroup.hudson.plugins.cppcheck.util.CppcheckBuildHealthEvaluator;
-import hudson.model.AbstractBuild;
+import hudson.model.Run;
import hudson.model.HealthReport;
import hudson.util.ChartUtil;
import hudson.util.ChartUtil.NumberOnlyBuildLabel;
@@ -52,7 +52,7 @@ public class CppcheckBuildAction extends AbstractCppcheckBuildAction {
private CppcheckResult result;
private CppcheckConfig cppcheckConfig;
- public CppcheckBuildAction(AbstractBuild, ?> owner, CppcheckResult result, CppcheckConfig cppcheckConfig) {
+ public CppcheckBuildAction(Run, ?> owner, CppcheckResult result, CppcheckConfig cppcheckConfig) {
super(owner);
this.result = result;
this.cppcheckConfig = cppcheckConfig;
@@ -78,7 +78,7 @@ public CppcheckResult getResult() {
return this.result;
}
- AbstractBuild, ?> getBuild() {
+ Run, ?> getBuild() {
return this.owner;
}
@@ -139,7 +139,7 @@ public void doGraph(StaplerRequest req, StaplerResponse rsp) throws IOException
// Backward compatibility. Do not remove.
// CPPCHECK:OFF
@Deprecated
- private transient AbstractBuild, ?> build;
+ private transient Run, ?> build;
/**
* Initializes members that were not present in previous versions of this plug-in.
@@ -203,6 +203,6 @@ private Object readResolve() {
return new org.jenkinsci.plugins.cppcheck.CppcheckBuildAction(owner,
- newResult, 100);
+ newResult, newConfig, 100);
}
}
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckParserResult.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckParserResult.java
index 68805fd..5713a55 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckParserResult.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckParserResult.java
@@ -29,10 +29,12 @@
import hudson.Util;
import hudson.model.BuildListener;
import hudson.remoting.VirtualChannel;
+import jenkins.security.Roles;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.selectors.FileSelector;
+import org.jenkinsci.remoting.RoleChecker;
import java.io.File;
import java.io.IOException;
@@ -124,5 +126,9 @@ public boolean isSelected(File basedir, String filename, File file) throws Build
public String getCppcheckReportPattern() {
return cppcheckReportPattern;
}
-
+
+ @Override
+ public void checkRoles(RoleChecker checker) throws SecurityException {
+ checker.check(this, Roles.SLAVE);
+ }
}
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckProjectAction.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckProjectAction.java
index 26fb028..2f36e4f 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckProjectAction.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckProjectAction.java
@@ -24,6 +24,8 @@
package com.thalesgroup.hudson.plugins.cppcheck;
import com.thalesgroup.hudson.plugins.cppcheck.util.AbstractCppcheckProjectAction;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Result;
@@ -48,6 +50,7 @@ public CppcheckProjectAction(final AbstractProject, ?> project) {
}
@SuppressWarnings("unused")
+ @SuppressFBWarnings("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
public final boolean isDisplayGraph() {
//Latest
AbstractBuild, ?> b = getLastFinishedBuild();
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckResult.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckResult.java
index 3c79552..8dfe98a 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckResult.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckResult.java
@@ -57,7 +57,7 @@ public class CppcheckResult implements Serializable {
/**
* The build owner
*/
- private AbstractBuild, ?> owner;
+ private transient AbstractBuild, ?> owner;
public CppcheckResult(CppcheckReport report, CppcheckSourceContainer cppcheckSourceContainer, AbstractBuild, ?> owner) {
this.report = report;
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckSource.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckSource.java
index 5c56fb7..a1b667d 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckSource.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/CppcheckSource.java
@@ -29,13 +29,14 @@
import de.java2html.javasource.JavaSource;
import de.java2html.javasource.JavaSourceParser;
import de.java2html.options.JavaSourceConversionOptions;
-import hudson.model.AbstractBuild;
+import hudson.model.Run;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import java.io.*;
+import java.nio.charset.StandardCharsets;
public class CppcheckSource implements Serializable {
@@ -55,7 +56,7 @@ public class CppcheckSource implements Serializable {
/**
* The current build as owner of this object.
*/
- private final AbstractBuild, ?> owner;
+ private transient final Run, ?> owner;
/**
* The cppcheck source file in the workspace to be shown.
@@ -73,7 +74,7 @@ public class CppcheckSource implements Serializable {
* @param owner the current build as owner of this object
* @param cppcheckWorkspaceFile the abstract workspace file
*/
- public CppcheckSource(final AbstractBuild, ?> owner, CppcheckWorkspaceFile cppcheckWorkspaceFile) {
+ public CppcheckSource(final Run, ?> owner, CppcheckWorkspaceFile cppcheckWorkspaceFile) {
this.owner = owner;
this.cppcheckWorkspaceFile = cppcheckWorkspaceFile;
buildFileContent();
@@ -106,7 +107,7 @@ private void buildFileContent() {
splitSourceFile(highlightSource(is));
} catch (IOException exception) {
- sourceCode = "Can't read file: " + exception.getLocalizedMessage();
+ sourceCode = "Can't read file : " + exception.getLocalizedMessage();
} catch (RuntimeException re) {
sourceCode = "Problem for display the source code content: " + re.getLocalizedMessage();
} finally {
@@ -226,7 +227,7 @@ private void copyLine(final StringBuilder output, final LineIterator lineIterato
*/
public final String highlightSource(final InputStream file) throws IOException {
- JavaSource source = new JavaSourceParser().parse(new InputStreamReader(file));
+ JavaSource source = new JavaSourceParser().parse(new InputStreamReader(file, StandardCharsets.UTF_8));
JavaSource2HTMLConverter converter = new JavaSource2HTMLConverter();
StringWriter writer = new StringWriter();
JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault();
@@ -260,7 +261,7 @@ public CppcheckWorkspaceFile getCppcheckWorkspaceFile() {
*
* @return the build
*/
- public AbstractBuild, ?> getOwner() {
+ public Run, ?> getOwner() {
return owner;
}
}
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/graph/CppcheckGraph.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/graph/CppcheckGraph.java
index e57809a..6019faf 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/graph/CppcheckGraph.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/graph/CppcheckGraph.java
@@ -22,7 +22,7 @@
*******************************************************************************/
package com.thalesgroup.hudson.plugins.cppcheck.graph;
-import hudson.model.AbstractBuild;
+import hudson.model.Run;
import hudson.util.ColorPalette;
import hudson.util.Graph;
import hudson.util.ShiftedCategoryAxis;
@@ -67,7 +67,7 @@ public class CppcheckGraph extends Graph {
private static final List colors = Collections.unmodifiableList(
Arrays.asList(RED, BLUE, GREEN, YELLOW, BROWN, GRAY, VIOLET, PINK));
- public CppcheckGraph(AbstractBuild, ?> owner, CategoryDataset categoryDataset,
+ public CppcheckGraph(Run, ?> owner, CategoryDataset categoryDataset,
String yLabel, int chartWidth, int chartHeight) {
super(owner.getTimestamp(), chartWidth, chartHeight);
this.yLabel = yLabel;
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/model/CppcheckWorkspaceFile.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/model/CppcheckWorkspaceFile.java
index 1b5802d..ce1297d 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/model/CppcheckWorkspaceFile.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/model/CppcheckWorkspaceFile.java
@@ -23,11 +23,13 @@
package com.thalesgroup.hudson.plugins.cppcheck.model;
-import hudson.model.AbstractBuild;
+import hudson.model.Run;
import org.apache.commons.lang.StringUtils;
import org.jenkinsci.plugins.cppcheck.CppcheckDiffState;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
import java.io.File;
import java.io.Serializable;
@@ -57,6 +59,7 @@ public class CppcheckWorkspaceFile implements Serializable {
*/
private transient CppcheckDiffState diffState = null;
+ @SuppressFBWarnings("NP_NULL_ON_SOME_PATH")
public CppcheckWorkspaceFile(File file) {
if (file != null)
this.fileName = file.getAbsolutePath().replace('\\', '/');
@@ -103,10 +106,10 @@ public final String getFileName() {
return fileName;
}
- public String getTempName(final AbstractBuild, ?> owner) {
+ public String getTempName(final Run, ?> owner) {
if (fileName != null) {
- return owner.getRootDir().getAbsolutePath() + "/"
- + DIR_WORKSPACE_FILES + "/"
+ return owner.getRootDir() + "/"
+ + DIR_WORKSPACE_FILES + "/"
+ Integer.toHexString(fileName.hashCode()) + ".tmp";
}
return StringUtils.EMPTY;
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/AbstractCppcheckBuildAction.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/AbstractCppcheckBuildAction.java
index 0e9f326..a77891b 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/AbstractCppcheckBuildAction.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/AbstractCppcheckBuildAction.java
@@ -26,14 +26,14 @@
import org.kohsuke.stapler.StaplerProxy;
public abstract class AbstractCppcheckBuildAction extends Actionable implements Action, HealthReportingAction, StaplerProxy {
- protected AbstractBuild, ?> owner;
+ protected Run, ?> owner;
- protected AbstractCppcheckBuildAction(AbstractBuild, ?> owner) {
+ protected AbstractCppcheckBuildAction(Run, ?> owner) {
this.owner = owner;
}
public T getPreviousResult() {
- AbstractBuild, ?> b = owner;
+ Run, ?> b = owner;
while (true) {
b = b.getPreviousBuild();
if (b == null)
@@ -46,7 +46,7 @@ public T getPreviousResult() {
}
}
- public AbstractBuild, ?> getOwner() {
+ public Run, ?> getOwner() {
return owner;
}
}
diff --git a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/CppcheckUtil.java b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/CppcheckUtil.java
index 5c6131a..1e71204 100644
--- a/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/CppcheckUtil.java
+++ b/src/main/java/com/thalesgroup/hudson/plugins/cppcheck/util/CppcheckUtil.java
@@ -31,9 +31,9 @@ public class CppcheckUtil {
/**
* Gets the number of errors
*
- * @param cppecheckConfig configuration of CppCheck run
- * @param result results of the CPPCheck runs
- * @param checkNewError check is the number of errors is increasing
+ * @param cppecheckConfig
+ * @param result
+ * @param checkNewError
* @return number of errors
*/
public static int getNumberErrors(CppcheckConfig cppecheckConfig, CppcheckResult result, boolean checkNewError) {
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckBuildAction.java b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckBuildAction.java
index bb3f802..f8b00d8 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckBuildAction.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckBuildAction.java
@@ -2,10 +2,15 @@
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import com.thalesgroup.hudson.plugins.cppcheck.util.AbstractCppcheckBuildAction;
-import hudson.model.AbstractBuild;
+import hudson.model.Run;
+import jenkins.tasks.SimpleBuildStep;
+import hudson.model.Action;
import hudson.model.HealthReport;
import org.jenkinsci.plugins.cppcheck.config.CppcheckConfig;
@@ -15,12 +20,13 @@
/**
* @author Gregory Boissinot
*/
-public class CppcheckBuildAction extends AbstractCppcheckBuildAction {
+public class CppcheckBuildAction extends AbstractCppcheckBuildAction implements SimpleBuildStep.LastBuildAction {
public static final String URL_NAME = "cppcheckResult";
private CppcheckResult result;
+ private List projectActions;
/**
* The health report percentage.
*
@@ -28,11 +34,15 @@ public class CppcheckBuildAction extends AbstractCppcheckBuildAction {
*/
private int healthReportPercentage;
- public CppcheckBuildAction(AbstractBuild, ?> owner, CppcheckResult result,
+ public CppcheckBuildAction(Run, ?> owner, CppcheckResult result, CppcheckConfig config,
int healthReportPercentage) {
super(owner);
this.result = result;
this.healthReportPercentage = healthReportPercentage;
+
+ List projectActions = new ArrayList();
+ projectActions.add(new CppcheckProjectAction(owner, config.getConfigGraph()));
+ this.projectActions = projectActions;
}
public String getIconFileName() {
@@ -55,7 +65,7 @@ public CppcheckResult getResult() {
return this.result;
}
- AbstractBuild, ?> getBuild() {
+ Run, ?> getBuild() {
return this.owner;
}
@@ -85,7 +95,7 @@ public static int computeHealthReportPercentage(CppcheckResult result,
// Backward compatibility
@Deprecated
- private transient AbstractBuild, ?> build;
+ private transient Run, ?> build;
/** Backward compatibility with version 1.14 and less. */
@Deprecated
@@ -108,4 +118,9 @@ private Object readResolve() {
return this;
}
+
+ @Override
+ public Collection extends Action> getProjectActions() {
+ return this.projectActions;
+ }
}
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckParserResult.java b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckParserResult.java
index b16c8b6..7573817 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckParserResult.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckParserResult.java
@@ -3,14 +3,16 @@
import hudson.FilePath;
import hudson.Util;
-import hudson.model.BuildListener;
+import hudson.model.TaskListener;
import hudson.remoting.VirtualChannel;
+import jenkins.security.Roles;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.selectors.FileSelector;
import org.jenkinsci.plugins.cppcheck.parser.CppcheckParser;
import org.jenkinsci.plugins.cppcheck.util.CppcheckLogger;
+import org.jenkinsci.remoting.RoleChecker;
import java.io.File;
import java.io.IOException;
@@ -22,7 +24,7 @@ public class CppcheckParserResult implements FilePath.FileCallable project,
+ public CppcheckProjectAction(final Run, ?> run,
CppcheckConfigGraph configGraph) {
- super(project);
+ super(run);
this.configGraph = configGraph;
}
- public AbstractBuild, ?> getLastFinishedBuild() {
- AbstractBuild, ?> lastBuild = project.getLastBuild();
+ public Run, ?> getLastFinishedBuild() {
+ Run, ?> lastBuild = run.getPreviousBuild();
while (lastBuild != null && (lastBuild.isBuilding()
|| lastBuild.getAction(CppcheckBuildAction.class) == null)) {
lastBuild = lastBuild.getPreviousBuild();
@@ -49,13 +48,13 @@ public CppcheckProjectAction(final AbstractProject, ?> project,
* @return the build action or null
*/
public CppcheckBuildAction getLastFinishedBuildAction() {
- AbstractBuild, ?> lastBuild = getLastFinishedBuild();
+ Run, ?> lastBuild = getLastFinishedBuild();
return (lastBuild != null) ? lastBuild.getAction(CppcheckBuildAction.class) : null;
}
- public final boolean isDisplayGraph() {
+ public final boolean isDisplayGraph() {
//Latest
- AbstractBuild, ?> b = getLastFinishedBuild();
+ Run, ?> b = getLastFinishedBuild();
if (b == null) {
return false;
}
@@ -83,7 +82,7 @@ public final boolean isDisplayGraph() {
}
public Integer getLastResultBuild() {
- for (AbstractBuild, ?> b = project.getLastBuild(); b != null; b = b.getPreviousBuiltBuild()) {
+ for (Run, ?> b = run.getPreviousBuild(); b != null; b = b.getPreviousBuiltBuild()) {
CppcheckBuildAction r = b.getAction(CppcheckBuildAction.class);
if (r != null)
return b.getNumber();
@@ -106,7 +105,7 @@ public void doGraph(StaplerRequest req, StaplerResponse rsp) throws IOException
return;
}
- AbstractBuild, ?> lastBuild = getLastFinishedBuild();
+ Run, ?> lastBuild = getLastFinishedBuild();
Calendar timestamp = lastBuild.getTimestamp();
if (req.checkIfModified(timestamp, rsp)) {
@@ -124,7 +123,7 @@ private DataSetBuilder getDataSetBuilder
DataSetBuilder dsb
= new DataSetBuilder();
- AbstractBuild,?> lastBuild = getLastFinishedBuild();
+ Run,?> lastBuild = getLastFinishedBuild();
CppcheckBuildAction lastAction = lastBuild.getAction(CppcheckBuildAction.class);
int numBuilds = 0;
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckPublisher.java b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckPublisher.java
index 895b95c..ed7343f 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckPublisher.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckPublisher.java
@@ -14,13 +14,19 @@
import hudson.tasks.Publisher;
import hudson.tasks.Recorder;
+import jenkins.tasks.SimpleBuildStep;
+
+import org.jenkinsci.plugins.cppcheck.CppcheckResult;
+import org.jenkinsci.plugins.cppcheck.CppcheckBuildAction;
import org.jenkinsci.plugins.cppcheck.config.CppcheckConfig;
import org.jenkinsci.plugins.cppcheck.config.CppcheckConfigGraph;
import org.jenkinsci.plugins.cppcheck.config.CppcheckConfigSeverityEvaluation;
import org.jenkinsci.plugins.cppcheck.util.CppcheckBuildResultEvaluator;
import org.jenkinsci.plugins.cppcheck.util.CppcheckLogger;
import org.kohsuke.stapler.DataBoundConstructor;
+import org.jenkinsci.Symbol;
+import javax.annotation.Nonnull;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -29,7 +35,7 @@
/**
* @author Gregory Boissinot
*/
-public class CppcheckPublisher extends Recorder {
+public class CppcheckPublisher extends Recorder implements SimpleBuildStep {
/**
* XML file with source container data. Lazy loading instead of data in build.xml.
*
@@ -68,7 +74,9 @@ public CppcheckPublisher(String pattern,
cppcheckConfig.setPattern(pattern);
cppcheckConfig.setAllowNoReport(allowNoReport);
cppcheckConfig.setIgnoreBlankFiles(ignoreBlankFiles);
- CppcheckConfigSeverityEvaluation configSeverityEvaluation = new CppcheckConfigSeverityEvaluation(
+
+ cppcheckConfig.setConfigSeverityEvaluation(
+ new CppcheckConfigSeverityEvaluation(
threshold, newThreshold, failureThreshold, newFailureThreshold, healthy, unHealthy,
severityError,
severityWarning,
@@ -76,9 +84,9 @@ public CppcheckPublisher(String pattern,
severityPerformance,
severityInformation,
severityNoCategory,
- severityPortability);
- cppcheckConfig.setConfigSeverityEvaluation(configSeverityEvaluation);
- CppcheckConfigGraph configGraph = new CppcheckConfigGraph(
+ severityPortability));
+
+ cppcheckConfig.setConfigGraph( new CppcheckConfigGraph(
xSize, ySize, numBuildsInGraph,
displayAllErrors,
displayErrorSeverity,
@@ -87,8 +95,7 @@ public CppcheckPublisher(String pattern,
displayPerformanceSeverity,
displayInformationSeverity,
displayNoCategorySeverity,
- displayPortabilitySeverity);
- cppcheckConfig.setConfigGraph(configGraph);
+ displayPortabilitySeverity));
}
@@ -100,11 +107,6 @@ public CppcheckConfig getCppcheckConfig() {
return cppcheckConfig;
}
- @Override
- public Action getProjectAction(AbstractProject, ?> project) {
- return new CppcheckProjectAction(project, cppcheckConfig.getConfigGraph());
- }
-
protected boolean canContinue(final Result result) {
return result != Result.ABORTED && result != Result.FAILURE;
}
@@ -113,6 +115,77 @@ public BuildStepMonitor getRequiredMonitorService() {
return BuildStepMonitor.BUILD;
}
+ @Override
+ public void perform(@Nonnull Run,?> build, @Nonnull FilePath workspace, @Nonnull Launcher launcher,
+ @Nonnull TaskListener listener) throws InterruptedException, IOException {
+
+ System.out.println("perform...");
+
+ if (this.canContinue(build.getResult())) {
+ CppcheckLogger.log(listener, "ccc Starting the cppcheck analysis.");
+
+ EnvVars env = build.getEnvironment(listener);
+ String expandedPattern = env.expand(cppcheckConfig.getPattern());
+
+
+ CppcheckParserResult parser = new CppcheckParserResult(listener,
+ expandedPattern, cppcheckConfig.isIgnoreBlankFiles());
+ CppcheckReport cppcheckReport;
+ try {
+ cppcheckReport = workspace.act(parser);
+
+ } catch (Exception e) {
+ CppcheckLogger.log(listener, "Error on cppcheck analysis: " + e);
+ build.setResult(Result.FAILURE);
+ return;
+ }
+
+ if (cppcheckReport == null) {
+ // Check if we're configured to allow not having a report
+ if (cppcheckConfig.getAllowNoReport()) {
+ return;
+ } else {
+ build.setResult(Result.FAILURE);
+ return;
+ }
+ }
+
+ CppcheckSourceContainer cppcheckSourceContainer
+ = new CppcheckSourceContainer(listener, workspace,
+ workspace, cppcheckReport.getAllErrors());
+
+ CppcheckResult result = new CppcheckResult(cppcheckReport.getStatistics(), build);
+ CppcheckConfigSeverityEvaluation severityEvaluation
+ = cppcheckConfig.getConfigSeverityEvaluation();
+
+ Result buildResult = new CppcheckBuildResultEvaluator().evaluateBuildResult(
+ listener, result.getNumberErrorsAccordingConfiguration(severityEvaluation, false),
+ result.getNumberErrorsAccordingConfiguration(severityEvaluation, true),
+ severityEvaluation);
+
+ if (buildResult != Result.SUCCESS) {
+ build.setResult(buildResult);
+ }
+
+ CppcheckLogger.log(listener, "Starting buildaction.");
+
+ CppcheckBuildAction buildAction = new CppcheckBuildAction(build, result, cppcheckConfig,
+ CppcheckBuildAction.computeHealthReportPercentage(result, severityEvaluation));
+
+ build.addAction(buildAction);
+
+ XmlFile xmlSourceContainer = new XmlFile(new File(build.getRootDir(),
+ XML_FILE_DETAILS));
+ xmlSourceContainer.write(cppcheckSourceContainer);
+
+ copyFilesToBuildDirectory(build.getRootDir(), launcher.getChannel(),
+ cppcheckSourceContainer.getInternalMap().values());
+
+ CppcheckLogger.log(listener, "Ending the cppcheck analysis.");
+ }
+ return;
+ }
+
@Override
public boolean perform(AbstractBuild, ?> build, Launcher launcher,
BuildListener listener) throws InterruptedException, IOException {
@@ -126,9 +199,14 @@ public boolean perform(AbstractBuild, ?> build, Launcher launcher,
CppcheckParserResult parser = new CppcheckParserResult(listener,
expandedPattern, cppcheckConfig.isIgnoreBlankFiles());
- CppcheckReport cppcheckReport;
+ CppcheckReport cppcheckReport = null;
try {
- cppcheckReport = build.getWorkspace().act(parser);
+ FilePath oWorkspacePath = build.getWorkspace();
+
+ if( oWorkspacePath != null) {
+ cppcheckReport = oWorkspacePath.act(parser);
+ }
+
} catch (Exception e) {
CppcheckLogger.log(listener, "Error on cppcheck analysis: " + e);
build.setResult(Result.FAILURE);
@@ -162,7 +240,7 @@ public boolean perform(AbstractBuild, ?> build, Launcher launcher,
build.setResult(buildResult);
}
- CppcheckBuildAction buildAction = new CppcheckBuildAction(build, result,
+ CppcheckBuildAction buildAction = new CppcheckBuildAction(build, result, cppcheckConfig,
CppcheckBuildAction.computeHealthReportPercentage(result, severityEvaluation));
build.addAction(buildAction);
@@ -179,7 +257,6 @@ public boolean perform(AbstractBuild, ?> build, Launcher launcher,
return true;
}
-
/**
* Copies all the source files from the workspace to the build folder.
*
@@ -213,6 +290,7 @@ private void copyFilesToBuildDirectory(final File rootDir,
}
@Extension
+ @Symbol("CppcheckPublisher")
public static final class CppcheckDescriptor extends BuildStepDescriptor {
public CppcheckDescriptor() {
@@ -242,4 +320,113 @@ public CppcheckConfig getConfig() {
return new CppcheckConfig();
}
}
+
+ //getters of the data variables
+ public String getPattern(){
+ return cppcheckConfig.getPattern();
+ }
+
+ public boolean isIgnoreBlankFiles(){
+ return cppcheckConfig.isIgnoreBlankFiles();
+ }
+
+ public boolean isAllowNoReport(){
+ return cppcheckConfig.getAllowNoReport();
+ }
+
+ public String getThreshold(){
+ return cppcheckConfig.getConfigSeverityEvaluation().getThreshold();
+ }
+
+ public String getNewThreshold(){
+ return cppcheckConfig.getConfigSeverityEvaluation().getNewThreshold();
+ }
+
+ public String getFailureThreshold(){
+ return cppcheckConfig.getConfigSeverityEvaluation().getFailureThreshold();
+ }
+
+ public String getNewFailureThreshold(){
+ return cppcheckConfig.getConfigSeverityEvaluation().getNewFailureThreshold();
+ }
+
+ public String getHealthy(){
+ return cppcheckConfig.getConfigSeverityEvaluation().getHealthy();
+ }
+
+ public String getUnHealthy(){
+ return cppcheckConfig.getConfigSeverityEvaluation().getUnHealthy();
+ }
+
+ public boolean isSeverityError(){
+ return cppcheckConfig.getConfigSeverityEvaluation().isSeverityError();
+ }
+
+ public boolean isSeverityWarning(){
+ return cppcheckConfig.getConfigSeverityEvaluation().isSeverityWarning();
+ }
+
+ public boolean isSeverityStyle(){
+ return cppcheckConfig.getConfigSeverityEvaluation().isSeverityStyle();
+ }
+
+ public boolean isSeverityPerformance(){
+ return cppcheckConfig.getConfigSeverityEvaluation().isSeverityPerformance();
+ }
+
+ public boolean isSeverityInformation(){
+ return cppcheckConfig.getConfigSeverityEvaluation().isSeverityInformation();
+ }
+
+ public boolean isSeverityNoCategory(){
+ return cppcheckConfig.getConfigSeverityEvaluation().isSeverityNoCategory();
+ }
+
+ public boolean isSeverityPortability(){
+ return cppcheckConfig.getConfigSeverityEvaluation().isSeverityPortability();
+ }
+
+ public int getXSize(){
+ return cppcheckConfig.getConfigGraph().getXSize();
+ }
+
+ public int getYSize(){
+ return cppcheckConfig.getConfigGraph().getYSize();
+ }
+
+ public int getNumBuildsInGraph(){
+ return cppcheckConfig.getConfigGraph().getNumBuildsInGraph();
+ }
+
+ public boolean isDisplayAllErrors(){
+ return cppcheckConfig.getConfigGraph().isDisplayAllErrors();
+ }
+
+ public boolean isDisplayErrorSeverity(){
+ return cppcheckConfig.getConfigGraph().isDisplayErrorSeverity();
+ }
+
+ public boolean isDisplayWarningSeverity(){
+ return cppcheckConfig.getConfigGraph().isDisplayWarningSeverity();
+ }
+
+ public boolean isDisplayStyleSeverity(){
+ return cppcheckConfig.getConfigGraph().isDisplayStyleSeverity();
+ }
+
+ public boolean isDisplayPerformanceSeverity(){
+ return cppcheckConfig.getConfigGraph().isDisplayPerformanceSeverity();
+ }
+
+ public boolean isDisplayInformationSeverity(){
+ return cppcheckConfig.getConfigGraph().isDisplayInformationSeverity();
+ }
+
+ public boolean isDisplayNoCategorySeverity(){
+ return cppcheckConfig.getConfigGraph().isDisplayNoCategorySeverity();
+ }
+
+ public boolean isDisplayPortabilitySeverity(){
+ return cppcheckConfig.getConfigGraph().isDisplayPortabilitySeverity();
+ }
}
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckReport.java b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckReport.java
index dcb43b6..fe81a0e 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckReport.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckReport.java
@@ -17,6 +17,7 @@
public class CppcheckReport implements Serializable {
private String version;
+ private static final long serialVersionUID = 1;
private transient List allErrors = new ArrayList();
private transient Set versions = new HashSet();
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckResult.java b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckResult.java
index b335b6f..4ecbe26 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckResult.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckResult.java
@@ -5,7 +5,7 @@
import com.thalesgroup.hudson.plugins.cppcheck.model.CppcheckWorkspaceFile;
import hudson.XmlFile;
-import hudson.model.AbstractBuild;
+import hudson.model.Run;
import hudson.model.Api;
import hudson.model.Item;
@@ -46,7 +46,7 @@ public class CppcheckResult implements Serializable {
/**
* The build owner.
*/
- private AbstractBuild, ?> owner;
+ private transient Run, ?> owner;
/**
* The Cppcheck report statistics.
@@ -65,7 +65,7 @@ public class CppcheckResult implements Serializable {
*
* @since 1.15
*/
- public CppcheckResult(CppcheckStatistics statistics, AbstractBuild, ?> owner) {
+ public CppcheckResult(CppcheckStatistics statistics, Run, ?> owner) {
this.statistics = statistics;
this.owner = owner;
}
@@ -73,14 +73,14 @@ public CppcheckResult(CppcheckStatistics statistics, AbstractBuild, ?> owner)
/**
* Constructor. Only for backward compatibility with previous versions.
*
- * @param report CPPCheck report
- * @param cppcheckSourceContainer The Cppcheck container with all source files.
- * @param owner the build owner
+ * @param report
+ * @param cppcheckSourceContainer
+ * @param owner
*
* @deprecated Use a different constructor instead.
*/
public CppcheckResult(CppcheckReport report,
- CppcheckSourceContainer cppcheckSourceContainer, AbstractBuild, ?> owner) {
+ CppcheckSourceContainer cppcheckSourceContainer, Run, ?> owner) {
this.report = report;
this.cppcheckSourceContainer = cppcheckSourceContainer;
this.owner = owner;
@@ -111,7 +111,7 @@ public CppcheckStatistics getStatistics() {
return statistics;
}
- public AbstractBuild, ?> getOwner() {
+ public Run, ?> getOwner() {
return owner;
}
@@ -131,7 +131,7 @@ public CppcheckSourceContainer getCppcheckSourceContainer() {
public Object getDynamic(final String link, final StaplerRequest request,
final StaplerResponse response) throws IOException {
if (link.equals("source.all")) {
- if (!owner.getProject().getACL().hasPermission(Item.WORKSPACE)) {
+ if (!owner.getParent().getACL().hasPermission(Item.WORKSPACE)) {
response.sendRedirect2("nosourcepermission");
return null;
}
@@ -143,7 +143,7 @@ public Object getDynamic(final String link, final StaplerRequest request,
return new CppcheckSourceAll(owner, files, before, after);
} else if (link.startsWith("source.")) {
- if (!owner.getProject().getACL().hasPermission(Item.WORKSPACE)) {
+ if (!owner.getParent().getACL().hasPermission(Item.WORKSPACE)) {
response.sendRedirect2("nosourcepermission");
return null;
}
@@ -229,7 +229,10 @@ public CppcheckResult getPreviousResult() {
* @return the previous Cppcheck Build Action
*/
private CppcheckBuildAction getPreviousAction() {
- AbstractBuild, ?> previousBuild = owner.getPreviousBuild();
+ if(owner == null)
+ return null;
+
+ Run, ?> previousBuild = owner.getPreviousBuild();
if (previousBuild != null) {
return previousBuild.getAction(CppcheckBuildAction.class);
}
@@ -510,10 +513,16 @@ private CppcheckSourceContainer lazyLoadSourceContainer() {
return cppcheckSourceContainer;
}
- XmlFile xmlSourceContainer = new XmlFile(new File(owner.getRootDir(),
- CppcheckPublisher.XML_FILE_DETAILS));
try {
- return (CppcheckSourceContainer) xmlSourceContainer.read();
+ if(owner != null) {
+ XmlFile xmlSourceContainer = null;
+ xmlSourceContainer = new XmlFile(new File(owner.getRootDir(),
+ CppcheckPublisher.XML_FILE_DETAILS));
+
+ return (CppcheckSourceContainer) xmlSourceContainer.read();
+ }
+ else
+ throw new IOException("lazyLoad: Attemped without owner");
} catch (IOException e) {
return new CppcheckSourceContainer(new HashMap());
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceAll.java b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceAll.java
index f005593..82667c2 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceAll.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceAll.java
@@ -1,12 +1,12 @@
package org.jenkinsci.plugins.cppcheck;
-import hudson.model.AbstractBuild;
-
import java.io.BufferedReader;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
import java.util.Collection;
import org.apache.commons.io.IOUtils;
@@ -14,6 +14,8 @@
import com.thalesgroup.hudson.plugins.cppcheck.model.CppcheckWorkspaceFile;
+import hudson.model.Run;
+
/**
* Show all violations highlighted on a single page.
*
@@ -22,7 +24,7 @@
*/
public class CppcheckSourceAll {
/** The related build. */
- private final AbstractBuild, ?> owner;
+ private final Run, ?> owner;
/** The files to show. */
private final Collection files;
@@ -45,7 +47,7 @@ public class CppcheckSourceAll {
* @param linesAfter
* number of lines to show after the highlighted line
*/
- public CppcheckSourceAll(AbstractBuild, ?> owner,
+ public CppcheckSourceAll(Run, ?> owner,
Collection files, int linesBefore,
int linesAfter) {
this.owner = owner;
@@ -54,7 +56,7 @@ public CppcheckSourceAll(AbstractBuild, ?> owner,
this.linesAfter = linesAfter;
}
- public AbstractBuild, ?> getOwner() {
+ public Run, ?> getOwner() {
return owner;
}
@@ -87,7 +89,7 @@ public String getSourceCode(CppcheckWorkspaceFile file) {
BufferedReader reader = null;
try {
- reader = new BufferedReader(new FileReader(tempFile));
+ reader = new BufferedReader(new InputStreamReader(new FileInputStream(tempFile), StandardCharsets.UTF_8));//new FileReader(tempFile));
return getRelatedLines(reader, file.getCppcheckFile()
.getLineNumber());
} catch (FileNotFoundException e) {
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceContainer.java b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceContainer.java
index faf111a..02a7fe7 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceContainer.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/CppcheckSourceContainer.java
@@ -3,7 +3,7 @@
import com.thalesgroup.hudson.plugins.cppcheck.model.CppcheckFile;
import com.thalesgroup.hudson.plugins.cppcheck.model.CppcheckWorkspaceFile;
import hudson.FilePath;
-import hudson.model.BuildListener;
+import hudson.model.TaskListener;
import org.jenkinsci.plugins.cppcheck.util.CppcheckLogger;
import java.io.IOException;
@@ -22,7 +22,7 @@ public CppcheckSourceContainer(Map internalMap)
this.internalMap = internalMap;
}
- public CppcheckSourceContainer(BuildListener listener,
+ public CppcheckSourceContainer(TaskListener listener,
FilePath workspace,
FilePath scmRootDir,
List files) throws IOException, InterruptedException {
@@ -38,7 +38,7 @@ public CppcheckSourceContainer(BuildListener listener,
}
}
- private CppcheckWorkspaceFile getCppcheckWorkspaceFile(BuildListener listener,
+ private CppcheckWorkspaceFile getCppcheckWorkspaceFile(TaskListener listener,
FilePath workspace,
FilePath scmRootDir,
CppcheckFile cppcheckFile) throws IOException, InterruptedException {
@@ -82,5 +82,4 @@ private FilePath getSourceFile(FilePath workspace, FilePath scmRootDir, String c
public Map getInternalMap() {
return internalMap;
}
-
}
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/config/CppcheckConfigGraph.java b/src/main/java/org/jenkinsci/plugins/cppcheck/config/CppcheckConfigGraph.java
index e6f8ff6..7d580be 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/config/CppcheckConfigGraph.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/config/CppcheckConfigGraph.java
@@ -1,92 +1,94 @@
-package org.jenkinsci.plugins.cppcheck.config;
-
-import java.io.Serializable;
-
-/**
- * @author Gregory Boissinot
- */
-public class CppcheckConfigGraph implements Serializable {
- /** Serial version UID. */
- private static final long serialVersionUID = 1L;
-
- public static final int DEFAULT_CHART_WIDTH = 500;
- public static final int DEFAULT_CHART_HEIGHT = 200;
-
- private int xSize = DEFAULT_CHART_WIDTH;
- private int ySize = DEFAULT_CHART_HEIGHT;
- private int numBuildsInGraph = 0; // numBuildsInGraph <= 1 means unlimited
- private boolean displayAllErrors = true;
- private boolean displayErrorSeverity;
- private boolean displayWarningSeverity;
- private boolean displayStyleSeverity;
- private boolean displayPerformanceSeverity;
- private boolean displayInformationSeverity;
- private boolean displayNoCategorySeverity;
- private boolean displayPortabilitySeverity;
-
- public CppcheckConfigGraph() {
- }
-
- public CppcheckConfigGraph(int xSize, int ySize, int numBuildsInGraph,
- boolean displayAllErrors,
- boolean displayErrorSeverity, boolean displayWarningSeverity,
- boolean displayStyleSeverity, boolean displayPerformanceSeverity,
- boolean displayInformationSeverity, boolean displayNoCategorySeverity,
- boolean displayPortabilitySeverity) {
- this.xSize = xSize;
- this.ySize = ySize;
- this.numBuildsInGraph = numBuildsInGraph;
- this.displayAllErrors = displayAllErrors;
- this.displayErrorSeverity = displayErrorSeverity;
- this.displayWarningSeverity = displayWarningSeverity;
- this.displayStyleSeverity = displayStyleSeverity;
- this.displayPerformanceSeverity = displayPerformanceSeverity;
- this.displayInformationSeverity = displayInformationSeverity;
- this.displayNoCategorySeverity = displayNoCategorySeverity;
- this.displayPortabilitySeverity = displayPortabilitySeverity;
- }
-
- public int getXSize() {
- return xSize;
- }
-
- public int getYSize() {
- return ySize;
- }
-
- public int getNumBuildsInGraph() {
- return numBuildsInGraph;
- }
-
- public boolean isDisplayAllErrors() {
- return displayAllErrors;
- }
-
- public boolean isDisplayErrorSeverity() {
- return displayErrorSeverity;
- }
-
- public boolean isDisplayWarningSeverity() {
- return displayWarningSeverity;
- }
-
- public boolean isDisplayStyleSeverity() {
- return displayStyleSeverity;
- }
-
- public boolean isDisplayPerformanceSeverity() {
- return displayPerformanceSeverity;
- }
-
- public boolean isDisplayInformationSeverity() {
- return displayInformationSeverity;
- }
-
- public boolean isDisplayNoCategorySeverity() {
- return displayNoCategorySeverity;
- }
-
- public boolean isDisplayPortabilitySeverity() {
- return displayPortabilitySeverity;
- }
-}
+package org.jenkinsci.plugins.cppcheck.config;
+
+import java.io.Serializable;
+
+/**
+ * @author Gregory Boissinot
+ */
+public class CppcheckConfigGraph implements Serializable {
+ /** Serial version UID. */
+ private static final long serialVersionUID = 1L;
+
+ public static final int DEFAULT_CHART_WIDTH = 500;
+ public static final int DEFAULT_CHART_HEIGHT = 200;
+
+ private int xSize = DEFAULT_CHART_WIDTH;
+ private int ySize = DEFAULT_CHART_HEIGHT;
+ private int numBuildsInGraph = 0; // numBuildsInGraph <= 1 means unlimited
+ private boolean displayAllErrors = true;
+ private boolean displayErrorSeverity;
+ private boolean displayWarningSeverity;
+ private boolean displayStyleSeverity;
+ private boolean displayPerformanceSeverity;
+ private boolean displayInformationSeverity;
+ private boolean displayNoCategorySeverity;
+ private boolean displayPortabilitySeverity;
+
+ public CppcheckConfigGraph() {
+ }
+
+ public CppcheckConfigGraph(int xSize, int ySize, int numBuildsInGraph,
+ boolean displayAllErrors,
+ boolean displayErrorSeverity, boolean displayWarningSeverity,
+ boolean displayStyleSeverity, boolean displayPerformanceSeverity,
+ boolean displayInformationSeverity, boolean displayNoCategorySeverity,
+ boolean displayPortabilitySeverity) {
+ if ( xSize > 0 && ySize > 0) {
+ this.xSize = xSize;
+ this.ySize = ySize;
+ }
+ this.numBuildsInGraph = numBuildsInGraph;
+ this.displayAllErrors = displayAllErrors;
+ this.displayErrorSeverity = displayErrorSeverity;
+ this.displayWarningSeverity = displayWarningSeverity;
+ this.displayStyleSeverity = displayStyleSeverity;
+ this.displayPerformanceSeverity = displayPerformanceSeverity;
+ this.displayInformationSeverity = displayInformationSeverity;
+ this.displayNoCategorySeverity = displayNoCategorySeverity;
+ this.displayPortabilitySeverity = displayPortabilitySeverity;
+ }
+
+ public int getXSize() {
+ return xSize;
+ }
+
+ public int getYSize() {
+ return ySize;
+ }
+
+ public int getNumBuildsInGraph() {
+ return numBuildsInGraph;
+ }
+
+ public boolean isDisplayAllErrors() {
+ return displayAllErrors;
+ }
+
+ public boolean isDisplayErrorSeverity() {
+ return displayErrorSeverity;
+ }
+
+ public boolean isDisplayWarningSeverity() {
+ return displayWarningSeverity;
+ }
+
+ public boolean isDisplayStyleSeverity() {
+ return displayStyleSeverity;
+ }
+
+ public boolean isDisplayPerformanceSeverity() {
+ return displayPerformanceSeverity;
+ }
+
+ public boolean isDisplayInformationSeverity() {
+ return displayInformationSeverity;
+ }
+
+ public boolean isDisplayNoCategorySeverity() {
+ return displayNoCategorySeverity;
+ }
+
+ public boolean isDisplayPortabilitySeverity() {
+ return displayPortabilitySeverity;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/parser/CppcheckParser.java b/src/main/java/org/jenkinsci/plugins/cppcheck/parser/CppcheckParser.java
index 4f9025c..12b9830 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/parser/CppcheckParser.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/parser/CppcheckParser.java
@@ -1,7 +1,7 @@
package org.jenkinsci.plugins.cppcheck.parser;
import com.thalesgroup.hudson.plugins.cppcheck.model.CppcheckFile;
-import hudson.model.BuildListener;
+import hudson.model.TaskListener;
import org.jenkinsci.plugins.cppcheck.CppcheckReport;
import org.jenkinsci.plugins.cppcheck.model.Errors;
import org.jenkinsci.plugins.cppcheck.model.Results;
@@ -24,7 +24,7 @@ public class CppcheckParser implements Serializable {
private static final long serialVersionUID = 1L;
- public CppcheckReport parse(final File file, BuildListener listener) throws IOException {
+ public CppcheckReport parse(final File file, TaskListener listener) throws IOException {
if (file == null) {
throw new IllegalArgumentException("File input is mandatory.");
@@ -150,8 +150,8 @@ private CppcheckReport getReportVersion2(Results results) {
cppcheckFile.setCppCheckId(error.getId());
cppcheckFile.setSeverity(error.getSeverity());
cppcheckFile.setMessage(error.getMsg());
- cppcheckFile.setInconclusive((error.isInconclusive() != null)
- ? error.isInconclusive() : false);
+ cppcheckFile.setInconclusive((error.getInconclusive() != null)
+ ? error.getInconclusive() : false);
// msg and verbose items have often the same text in XML report,
// there is no need to store duplications
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/util/AbstractCppcheckProjectAction.java b/src/main/java/org/jenkinsci/plugins/cppcheck/util/AbstractCppcheckProjectAction.java
index 5b196d7..1157b41 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/util/AbstractCppcheckProjectAction.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/util/AbstractCppcheckProjectAction.java
@@ -1,8 +1,7 @@
package org.jenkinsci.plugins.cppcheck.util;
-import hudson.model.AbstractBuild;
-import hudson.model.AbstractProject;
import hudson.model.Actionable;
+import hudson.model.Run;
import hudson.model.Action;
import org.kohsuke.stapler.StaplerRequest;
@@ -15,14 +14,14 @@
*/
public abstract class AbstractCppcheckProjectAction extends Actionable implements Action {
- protected final AbstractProject, ?> project;
+ protected final Run, ?> run;
- public AbstractCppcheckProjectAction(AbstractProject, ?> project) {
- this.project = project;
+ public AbstractCppcheckProjectAction(Run, ?> run) {
+ this.run = run;
}
- public AbstractProject, ?> getProject() {
- return project;
+ public Run, ?> getRun() {
+ return run;
}
public String getIconFileName() {
@@ -33,7 +32,7 @@ public String getSearchUrl() {
return getUrlName();
}
- protected abstract AbstractBuild, ?> getLastFinishedBuild();
+ protected abstract Run, ?> getLastFinishedBuild();
protected abstract Integer getLastResultBuild();
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckBuildResultEvaluator.java b/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckBuildResultEvaluator.java
index 5e9e88f..b7b747c 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckBuildResultEvaluator.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckBuildResultEvaluator.java
@@ -1,7 +1,7 @@
package org.jenkinsci.plugins.cppcheck.util;
-import hudson.model.BuildListener;
+import hudson.model.TaskListener;
import hudson.model.Result;
import org.jenkinsci.plugins.cppcheck.config.CppcheckConfigSeverityEvaluation;
@@ -11,7 +11,7 @@
*/
public class CppcheckBuildResultEvaluator {
public Result evaluateBuildResult(
- final BuildListener listener,
+ final TaskListener listener,
int errorsCount,
int newErrorsCount,
CppcheckConfigSeverityEvaluation severityEvaluation) {
diff --git a/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckLogger.java b/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckLogger.java
index 25ee4be..3d1c08d 100644
--- a/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckLogger.java
+++ b/src/main/java/org/jenkinsci/plugins/cppcheck/util/CppcheckLogger.java
@@ -1,6 +1,7 @@
package org.jenkinsci.plugins.cppcheck.util;
import hudson.model.BuildListener;
+import hudson.model.TaskListener;
import java.io.Serializable;
@@ -21,4 +22,7 @@ public static void log(BuildListener listener, final String message) {
listener.getLogger().println("[Cppcheck] " + message);
}
+ public static void log(TaskListener listener, final String message) {
+ listener.getLogger().println("[Cppcheck] " + message);
+ }
}
\ No newline at end of file