Skip to content
This repository has been archived by the owner on Apr 6, 2022. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
[JENKINS-29601] Initial changes to make the plugin compatible with Wo…
…rkflow jobs
  • Loading branch information
amuniz committed Jul 23, 2015
1 parent 976c140 commit 43582cd
Show file tree
Hide file tree
Showing 8 changed files with 88 additions and 25 deletions.
2 changes: 1 addition & 1 deletion plugin/pom.xml
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.jvnet.hudson.plugins</groupId>
<artifactId>analysis-pom</artifactId>
<version>1.59</version>
<version>1.62-SNAPSHOT</version>
</parent>

<artifactId>findbugs</artifactId>
Expand Down
@@ -1,5 +1,7 @@
package hudson.plugins.findbugs;

import net.sf.json.JSONObject;
import org.kohsuke.stapler.StaplerRequest;
import hudson.Extension;
import hudson.plugins.analysis.core.PluginDescriptor;

Expand Down
@@ -1,20 +1,21 @@
package hudson.plugins.findbugs;

import hudson.model.AbstractBuild;
import java.util.Collection;

import hudson.model.Run;

import hudson.plugins.analysis.util.model.FileAnnotation;
import hudson.plugins.analysis.views.DetailFactory;
import hudson.plugins.analysis.views.TabDetail;

import java.util.Collection;

/**
* A detail factory that creates a FindBugs specific warnings table.
*
* @author Ulli Hafner
*/
public class FindBugsDetailFactory extends DetailFactory {
@Override
protected TabDetail createTabDetail(final AbstractBuild<?, ?> owner,
protected TabDetail createTabDetail(final Run<?, ?> owner,
final Collection<FileAnnotation> annotations, final String url, final String defaultEncoding) {
return new FindBugsTabDetail(owner, this, annotations, url, defaultEncoding);
}
Expand Down
Expand Up @@ -4,7 +4,9 @@

import org.apache.commons.lang.StringUtils;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;

import hudson.FilePath;
import hudson.Launcher;
import hudson.matrix.MatrixAggregator;
import hudson.matrix.MatrixBuild;
Expand All @@ -13,6 +15,7 @@
import hudson.model.BuildListener;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Run;

import hudson.plugins.analysis.core.FilesParser;
import hudson.plugins.analysis.core.HealthAwarePublisher;
Expand All @@ -35,16 +38,16 @@ public class FindBugsPublisher extends HealthAwarePublisher {
private static final String MAVEN_DEFAULT_PATTERN = "**/findbugsXml.xml";

/** Ant file-set pattern of files to work with. */
private final String pattern;
private String pattern;

/** Determines whether to use the rank when evaluation the priority. @since 4.26 */
private final boolean isRankActivated;
private boolean isRankActivated;

/** RegEx patterns of files to exclude from the report. */
private final String excludePattern;
private String excludePattern;

/** RegEx patterns of files to include in the report. */
private final String includePattern;
private String includePattern;

/**
* Creates a new instance of {@link FindBugsPublisher}.
Expand Down Expand Up @@ -117,10 +120,12 @@ public class FindBugsPublisher extends HealthAwarePublisher {
* RegEx patterns of files to exclude from the report
* @param includePattern
* RegEx patterns of files to include in the report
* @deprecated This constructor is called internally only, but if you need to use it (for some strange reason), call
* {@link #FindBugsPublisher()} and available setters
*/
// CHECKSTYLE:OFF
@SuppressWarnings("PMD.ExcessiveParameterList")
@DataBoundConstructor
@Deprecated
public FindBugsPublisher(final String healthy, final String unHealthy, final String thresholdLimit,
final String defaultEncoding, final boolean useDeltaValues,
final String unstableTotalAll, final String unstableTotalHigh, final String unstableTotalNormal, final String unstableTotalLow,
Expand All @@ -142,6 +147,11 @@ public FindBugsPublisher(final String healthy, final String unHealthy, final Str
}
// CHECKSTYLE:ON

@DataBoundConstructor
public FindBugsPublisher() {
super(PLUGIN_NAME);
}

/**
* Returns whether to use the rank when evaluation the priority.
*
Expand All @@ -153,6 +163,21 @@ public boolean isRankActivated() {
return isRankActivated;
}

/**
* Added to properly uncoercing.
*/
public boolean getIsRankActivated() {
return isRankActivated;
}

/**
* @see {@link #isRankActivated()}
*/
@DataBoundSetter
public void setIsRankActivated(boolean isRankActivated) {
this.isRankActivated = isRankActivated;
}

/**
* Returns the Ant file-set pattern of files to work with.
*
Expand All @@ -162,6 +187,14 @@ public String getPattern() {
return pattern;
}

/**
* @see {@link #getPattern()}
*/
@DataBoundSetter
public void setPattern(String pattern) {
this.pattern = pattern;
}

/**
* RegEx patterns of files to exclude from the report.
*
Expand All @@ -171,6 +204,14 @@ public String getExcludePattern() {
return excludePattern;
}

/**
* @see {@link #getExcludePattern()}
*/
@DataBoundSetter
public void setExcludePattern(String excludePattern) {
this.excludePattern = excludePattern;
}

/**
* Returns the RegEx patterns to include in the report.
*
Expand All @@ -180,19 +221,32 @@ public String getIncludePattern() {
return includePattern;
}

/**
* @see {@link #getIncludePattern()}
*/
@DataBoundSetter
public void setIncludePattern(String includePattern) {
this.includePattern = includePattern;
}

@Override
public Action getProjectAction(final AbstractProject<?, ?> project) {
return new FindBugsProjectAction(project);
}

@Override
public BuildResult perform(final AbstractBuild<?, ?> build, final PluginLogger logger) throws InterruptedException, IOException {
public BuildResult perform(final Run<?, ?> build, final FilePath workspace, final PluginLogger logger) throws InterruptedException, IOException {
logger.log("Collecting findbugs analysis files...");

String defaultPattern = isMavenBuild(build) ? MAVEN_DEFAULT_PATTERN : ANT_DEFAULT_PATTERN;
String defaultPattern = ANT_DEFAULT_PATTERN;
boolean isMavenBuild = build instanceof AbstractBuild && isMavenBuild((AbstractBuild) build);
if (isMavenBuild) {
defaultPattern = MAVEN_DEFAULT_PATTERN;
}
FilesParser collector = new FilesParser(PLUGIN_NAME, StringUtils.defaultIfEmpty(getPattern(), defaultPattern),
new FindBugsParser(isRankActivated, getExcludePattern(), getIncludePattern()), shouldDetectModules(), isMavenBuild(build));
ParserResult project = build.getWorkspace().act(collector);
new FindBugsParser(isRankActivated, getExcludePattern(), getIncludePattern()), shouldDetectModules(), isMavenBuild);

ParserResult project = workspace.act(collector);
logger.logLines(project.getLogMessages());
FindBugsResult result = new FindBugsResult(build, getDefaultEncoding(), project,
usePreviousBuildAsReference(), useOnlyStableBuildsAsReference());
Expand All @@ -202,6 +256,8 @@ public BuildResult perform(final AbstractBuild<?, ?> build, final PluginLogger l
return result;
}



@Override
public FindBugsDescriptor getDescriptor() {
return (FindBugsDescriptor)super.getDescriptor();
Expand Down
@@ -1,6 +1,7 @@
package hudson.plugins.findbugs;

import hudson.model.AbstractBuild;
import hudson.model.Run;

import hudson.plugins.analysis.core.ParserResult;
import hudson.plugins.analysis.core.ResultAction;
import hudson.plugins.analysis.core.BuildResult;
Expand Down Expand Up @@ -29,7 +30,7 @@ public class FindBugsReporterResult extends FindBugsResult {
* determines whether only stable builds should be used as
* reference builds or not
*/
public FindBugsReporterResult(final AbstractBuild<?, ?> build, final String defaultEncoding, final ParserResult result,
public FindBugsReporterResult(final Run<?, ?> build, final String defaultEncoding, final ParserResult result,
final boolean usePreviousBuildAsReference, final boolean useStableBuildAsReference) {
super(build, defaultEncoding, result, usePreviousBuildAsReference, useStableBuildAsReference,
FindBugsMavenResultAction.class);
Expand Down
11 changes: 6 additions & 5 deletions plugin/src/main/java/hudson/plugins/findbugs/FindBugsResult.java
Expand Up @@ -2,11 +2,12 @@

import com.thoughtworks.xstream.XStream;

import hudson.model.AbstractBuild;
import hudson.model.Run;

import hudson.plugins.analysis.core.BuildHistory;
import hudson.plugins.analysis.core.BuildResult;
import hudson.plugins.analysis.core.ParserResult;
import hudson.plugins.analysis.core.ResultAction;
import hudson.plugins.analysis.core.BuildResult;
import hudson.plugins.analysis.util.model.FileAnnotation;
import hudson.plugins.findbugs.parser.Bug;

Expand Down Expand Up @@ -41,7 +42,7 @@ public class FindBugsResult extends BuildResult {
* determines whether only stable builds should be used as
* reference builds or not
*/
public FindBugsResult(final AbstractBuild<?, ?> build, final String defaultEncoding, final ParserResult result,
public FindBugsResult(final Run<?, ?> build, final String defaultEncoding, final ParserResult result,
final boolean usePreviousBuildAsReference, final boolean useStableBuildAsReference) {
this(build, defaultEncoding, result, usePreviousBuildAsReference, useStableBuildAsReference,
FindBugsResultAction.class);
Expand All @@ -65,14 +66,14 @@ public FindBugsResult(final AbstractBuild<?, ?> build, final String defaultEncod
* @param actionType
* the type of the result action
*/
protected FindBugsResult(final AbstractBuild<?, ?> build, final String defaultEncoding, final ParserResult result,
protected FindBugsResult(final Run<?, ?> build, final String defaultEncoding, final ParserResult result,
final boolean usePreviousBuildAsReference, final boolean useStableBuildAsReference,
final Class<? extends ResultAction<FindBugsResult>> actionType) {
this(build, new BuildHistory(build, actionType, usePreviousBuildAsReference, useStableBuildAsReference),
result, defaultEncoding, true);
}

FindBugsResult(final AbstractBuild<?, ?> build, final BuildHistory history,
FindBugsResult(final Run<?, ?> build, final BuildHistory history,
final ParserResult result, final String defaultEncoding, final boolean canSerialize) {
super(build, history, result, defaultEncoding);

Expand Down
@@ -1,6 +1,7 @@
package hudson.plugins.findbugs;

import hudson.model.AbstractBuild;
import hudson.model.Run;

import hudson.plugins.analysis.core.HealthDescriptor;
import hudson.plugins.analysis.core.PluginDescriptor;
import hudson.plugins.analysis.core.AbstractResultAction;
Expand All @@ -27,7 +28,7 @@ public class FindBugsResultAction extends AbstractResultAction<FindBugsResult> {
* @param result
* the result in this build
*/
public FindBugsResultAction(final AbstractBuild<?, ?> owner, final HealthDescriptor healthDescriptor, final FindBugsResult result) {
public FindBugsResultAction(final Run<?, ?> owner, final HealthDescriptor healthDescriptor, final FindBugsResult result) {
super(owner, new FindBugsHealthDescriptor(healthDescriptor), result);
}

Expand Down
@@ -1,6 +1,7 @@
package hudson.plugins.findbugs;

import hudson.model.AbstractBuild;
import hudson.model.Run;

import hudson.plugins.analysis.util.model.FileAnnotation;
import hudson.plugins.analysis.views.DetailFactory;
import hudson.plugins.analysis.views.TabDetail;
Expand Down Expand Up @@ -29,7 +30,7 @@ public class FindBugsTabDetail extends TabDetail {
* @param defaultEncoding
* the default encoding to be used when reading and parsing files
*/
public FindBugsTabDetail(final AbstractBuild<?, ?> owner, final DetailFactory detailFactory, final Collection<FileAnnotation> annotations, final String url, final String defaultEncoding) {
public FindBugsTabDetail(final Run<?, ?> owner, final DetailFactory detailFactory, final Collection<FileAnnotation> annotations, final String url, final String defaultEncoding) {
super(owner, detailFactory, annotations, url, defaultEncoding);
}

Expand Down

0 comments on commit 43582cd

Please sign in to comment.