Index: plugin/src/main/java/hudson/plugins/findbugs/parser/Bug.java =================================================================== --- plugin/src/main/java/hudson/plugins/findbugs/parser/Bug.java (revision 36072) +++ plugin/src/main/java/hudson/plugins/findbugs/parser/Bug.java (revision ) @@ -5,14 +5,13 @@ import hudson.plugins.analysis.util.model.Priority; import hudson.plugins.findbugs.FindBugsMessages; import hudson.plugins.findbugs.Messages; +import org.apache.commons.lang.StringUtils; +import org.jvnet.localizer.LocaleProvider; import java.text.DateFormat; import java.util.Date; import java.util.Random; -import org.apache.commons.lang.StringUtils; -import org.jvnet.localizer.LocaleProvider; - /** * A serializable Java Bean class representing a warning. *

@@ -39,6 +38,8 @@ private int reviewCount; private boolean notAProblem; private boolean inCloud; + private boolean shouldBeInCloud; + private String detailsUrl; /** * Creates a new instance of Bug. @@ -162,6 +163,18 @@ void setNotAProblem(final boolean notAProblem) { this.notAProblem = notAProblem; } + + public void setShouldBeInCloud(boolean shouldBeInCloud) { + this.shouldBeInCloud = shouldBeInCloud; + } + + public boolean isShouldBeInCloud() { + return shouldBeInCloud; + } + + public void setDetailsUrlTemplate(String detailsUrl) { + this.detailsUrl = detailsUrl; + } // CHECKSTYLE:ON /** @@ -188,7 +201,7 @@ } private String getCloudInformation() { - if (!inCloud) { + if (!inCloud && detailsUrl == null) { return ""; } StringBuilder cloudMessage = new StringBuilder(); @@ -208,36 +221,39 @@ cloudMessage.append(" - "); } int id = RANDOM.nextInt(); - String onclick = "o=document.getElementById('fb-comments-" + id + "'); " - + "o.src='http://findbugs-cloud.appspot.com/issues/" + instanceHash + "?embed'; " + String onclick = ""; + if (detailsUrl != null) { + onclick = "o=document.getElementById('fb-comments-" + id + "'); " + + "o.src='" + String.format(detailsUrl, instanceHash) + "'; " - + "o.style.display='block';" - + "document.getElementById('fb-arrow-" + id + "').src='/plugin/findbugs/icons/arrow-down.gif';" - + "return false"; - cloudMessage.append(""); + + "o.style.display='block';" + + "document.getElementById('fb-arrow-" + id + "').src='/plugin/findbugs/icons/arrow-down.gif';" + + "return false"; + cloudMessage.append(""); + } if (reviewCount == 1) { cloudMessage.append(Messages.FindBugs_Bug_cloudInfo_reviewer_singular()); } else { cloudMessage.append(Messages.FindBugs_Bug_cloudInfo_reviewer_plural(reviewCount)); } - cloudMessage.append(""); if (cloudMessage.length() == 0) { return StringUtils.EMPTY; } - // CHECKSTYLE:OFF - return "

" - + "

" - + "" - + " " - + " " - + cloudMessage.toString() - + "
" - + "" - + "
"; - // CHECKSTYLE:ON + if (detailsUrl != null) { + cloudMessage.append(""); - } + } + if (detailsUrl != null) { + return String.format( + "

" + + "" + + "" + + "%s
" + + "" + + "
", onclick, onclick, getImage("arrow-right.gif"), id, getImage("fb-cloud-icon-small.png"), + Messages.FindBugs_Bug_cloudInfo_title(), cloudMessage.toString(), id); + } + return cloudMessage.toString(); + } private String getImage(final String image) { Hudson hudson = Hudson.getInstance(); Index: plugin/src/main/java/hudson/plugins/findbugs/parser/FindBugsParser.java =================================================================== --- plugin/src/main/java/hudson/plugins/findbugs/parser/FindBugsParser.java (revision 36293) +++ plugin/src/main/java/hudson/plugins/findbugs/parser/FindBugsParser.java (revision ) @@ -1,17 +1,31 @@ package hudson.plugins.findbugs.parser; // NOPMD +import edu.umd.cs.findbugs.BugAnnotation; +import edu.umd.cs.findbugs.BugInstance; +import edu.umd.cs.findbugs.Project; +import edu.umd.cs.findbugs.SortedBugCollection; +import edu.umd.cs.findbugs.SourceLineAnnotation; +import edu.umd.cs.findbugs.ba.SourceFile; +import edu.umd.cs.findbugs.ba.SourceFinder; +import edu.umd.cs.findbugs.cloud.Cloud; import hudson.plugins.analysis.core.AnnotationParser; import hudson.plugins.analysis.util.model.FileAnnotation; import hudson.plugins.analysis.util.model.LineRange; import hudson.plugins.analysis.util.model.Priority; import hudson.plugins.findbugs.FindBugsMessages; +import org.apache.commons.digester.Digester; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.xerces.parsers.SAXParser; +import org.dom4j.DocumentException; +import org.jvnet.localizer.LocaleProvider; +import org.xml.sax.SAXException; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; -import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -21,24 +35,6 @@ import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.commons.digester.Digester; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.xerces.parsers.SAXParser; -import org.dom4j.DocumentException; -import org.jvnet.localizer.LocaleProvider; -import org.xml.sax.SAXException; - -import edu.umd.cs.findbugs.BugAnnotation; -import edu.umd.cs.findbugs.BugInstance; -import edu.umd.cs.findbugs.DetectorFactoryCollection; -import edu.umd.cs.findbugs.Project; -import edu.umd.cs.findbugs.SortedBugCollection; -import edu.umd.cs.findbugs.SourceLineAnnotation; -import edu.umd.cs.findbugs.ba.SourceFile; -import edu.umd.cs.findbugs.ba.SourceFinder; -import edu.umd.cs.findbugs.cloud.Cloud; - /** * A parser for the native FindBugs XML files (ant task, batch file or * maven-findbugs-plugin >= 1.2). @@ -61,7 +57,7 @@ private static final int NORMAL_PRIORITY_LOWEST_RANK = 9; static { - DetectorFactoryCollection.rawInstance().setPluginList(new URL[0]); +// DetectorFactoryCollection.instance().setPluginList(new URL[0]); } /** Collection of source folders. */ @@ -224,8 +220,9 @@ warning.getType(), sourceLine.getStartLine(), sourceLine.getEndLine()); bug.setInstanceHash(warning.getInstanceHash()); - if (!setCloudInformation(collection, warning, bug)) { - bug.setNotAProblem(setCloudInformation(collection, warning, bug)); + boolean ignore = setCloudInformation(collection, warning, bug); + if (!ignore) { + bug.setNotAProblem(ignore); bug.setFileName(findSourceFile(project, sourceFinder, sourceLine)); bug.setPackageName(warning.getPrimaryClass().getPackageName()); bug.setModuleName(actualName); @@ -264,10 +261,12 @@ */ private boolean setCloudInformation(final SortedBugCollection collection, final BugInstance warning, final Bug bug) { Cloud cloud = collection.getCloud(); + bug.setShouldBeInCloud(cloud.isOnlineCloud()); + bug.setDetailsUrlTemplate(cloud.getBugDetailsUrlTemplate()); long firstSeen = cloud.getFirstSeen(warning); bug.setInCloud(cloud.isInCloud(warning)); bug.setFirstSeen(firstSeen); - int ageInDays = (int) ((System.currentTimeMillis() - firstSeen) / DAY_IN_MSEC); + int ageInDays = (int) ((collection.getAnalysisTimestamp() - firstSeen) / DAY_IN_MSEC); bug.setAgeInDays(ageInDays); bug.setReviewCount(cloud.getNumberReviewers(warning)); Index: library/upload-pom.xml =================================================================== --- library/upload-pom.xml (revision 34694) +++ library/upload-pom.xml (revision ) @@ -5,7 +5,7 @@ org.jvnet.hudson.plugins.findbugs findbugs-snapshot jar - 1.3.10-hudson3 + 2.0.0-hudson2 Index: plugin/pom.xml =================================================================== --- plugin/pom.xml (revision 36574) +++ plugin/pom.xml (revision ) @@ -40,7 +40,7 @@ org.jvnet.hudson.plugins analysis-core - 1.14 + 1.15-SNAPSHOT org.jvnet.hudson.plugins @@ -51,7 +51,7 @@ org.jvnet.hudson.plugins.findbugs library - 1.3.10-hudson3 + 2.0.0-hudson2 xerces Index: library/pom.xml =================================================================== --- library/pom.xml (revision 35179) +++ library/pom.xml (revision ) @@ -10,14 +10,14 @@ org.jvnet.hudson.plugins.findbugs library jar - 1.3.10-hudson4-SNAPSHOT + 2.0.0-hudson2 FindBugs Plug-in shaded libraries org.jvnet.hudson.plugins.findbugs findbugs-snapshot - 1.3.10-hudson3 + 2.0.0-hudson2 jaxen Index: plugin/src/main/java/hudson/plugins/findbugs/FindBugsResult.java =================================================================== --- plugin/src/main/java/hudson/plugins/findbugs/FindBugsResult.java (revision 35036) +++ plugin/src/main/java/hudson/plugins/findbugs/FindBugsResult.java (revision ) @@ -64,12 +64,12 @@ if (annotation instanceof Bug) { Bug bug = (Bug) annotation; if (bug.isInCloud()) { - if (bug.getAgeInDays() <= LESS_ONE_WEEK) { + if (bug.isShouldBeInCloud() && bug.getAgeInDays() <= LESS_ONE_WEEK) { newThisWeek++; } numberOfComments += bug.getReviewCount(); } - else { + else if (bug.isShouldBeInCloud()) { notInCloud++; } } Index: library/upload.sh =================================================================== --- library/upload.sh (revision 34694) +++ library/upload.sh (revision ) @@ -1,2 +1,2 @@ -mvn deploy:deploy-file -Durl=java-net:/maven2-repository/trunk/repository/ -DrepositoryId=maven2-repository.dev.java.net -Dfile=findbugs-full-1.3.10-dev-20100910.jar -DpomFile=upload-pom.xml +mvn deploy:deploy-file -Durl=java-net:/maven2-repository/trunk/repository/ -DrepositoryId=maven2-repository.dev.java.net -Dfile=findbugs-full-2.0.0-dev-20101211.jar -DpomFile=upload-pom.xml