aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGodin <mandrikov@gmail.com>2010-10-18 16:09:19 +0000
committerGodin <mandrikov@gmail.com>2010-10-18 16:09:19 +0000
commitbc92061a8b012d08b8efb09b8e21b5ed114a5f59 (patch)
tree0c3929120dabe1fc65aadd2196b4cb49f7ef2f27
parent757c89eb7f40319189fe46f314cbd5e997ac1f83 (diff)
downloadsonarqube-bc92061a8b012d08b8efb09b8e21b5ed114a5f59.tar.gz
sonarqube-bc92061a8b012d08b8efb09b8e21b5ed114a5f59.zip
SONAR-1772:
* Add FindbugsVersion * Use sonar.findbugs.effort
-rw-r--r--plugins/sonar-findbugs-plugin/pom.xml8
-rw-r--r--plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java28
-rw-r--r--plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsExecutor.java4
-rw-r--r--plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsVersion.java35
-rw-r--r--plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/findbugs-plugin.properties1
-rw-r--r--plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsExecutorTest.java1
6 files changed, 65 insertions, 12 deletions
diff --git a/plugins/sonar-findbugs-plugin/pom.xml b/plugins/sonar-findbugs-plugin/pom.xml
index 22c29a476a9..d9334950322 100644
--- a/plugins/sonar-findbugs-plugin/pom.xml
+++ b/plugins/sonar-findbugs-plugin/pom.xml
@@ -90,6 +90,13 @@
</dependencies>
<build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+
<testResources>
<testResource>
<directory>${basedir}/src/main/resources</directory>
@@ -98,6 +105,7 @@
<directory>${basedir}/src/test/resources</directory>
</testResource>
</testResources>
+
<plugins>
<plugin>
<groupId>org.codehaus.sonar</groupId>
diff --git a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java
index fe0e05e6bf1..7969741cdb6 100644
--- a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java
+++ b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java
@@ -1,6 +1,8 @@
package org.sonar.plugins.findbugs;
+import org.apache.commons.lang.StringUtils;
import org.sonar.api.BatchExtension;
+import org.sonar.api.CoreProperties;
import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.resources.Project;
import org.sonar.api.utils.SonarException;
@@ -35,17 +37,19 @@ public class FindbugsConfiguration implements BatchExtension {
}
public edu.umd.cs.findbugs.Project getFindbugsProject() {
- try {
- edu.umd.cs.findbugs.Project findbugsProject = new edu.umd.cs.findbugs.Project();
- for (File dir : project.getFileSystem().getSourceDirs()) {
- findbugsProject.addSourceDir(dir.getAbsolutePath());
- }
- findbugsProject.addFile(project.getFileSystem().getBuildOutputDir().getAbsolutePath());
- findbugsProject.setCurrentWorkingDirectory(project.getFileSystem().getBuildDir());
- return findbugsProject;
- } catch (Exception e) {
- throw new SonarException(e);
+ File classesDir = project.getFileSystem().getBuildOutputDir();
+ if (classesDir == null || !classesDir.exists()) {
+ throw new SonarException("Findbugs needs sources to be compiled. "
+ + "Please build project or edit pom.xml to set the <outputDirectory> property before executing sonar.");
+ }
+
+ edu.umd.cs.findbugs.Project findbugsProject = new edu.umd.cs.findbugs.Project();
+ for (File dir : project.getFileSystem().getSourceDirs()) {
+ findbugsProject.addSourceDir(dir.getAbsolutePath());
}
+ findbugsProject.addFile(classesDir.getAbsolutePath());
+ findbugsProject.setCurrentWorkingDirectory(project.getFileSystem().getBuildDir());
+ return findbugsProject;
}
public File saveIncludeConfigXml() throws IOException {
@@ -64,4 +68,8 @@ public class FindbugsConfiguration implements BatchExtension {
}
return project.getFileSystem().writeToWorkingDirectory(findBugsFilter.toXml(), "findbugs-exclude.xml");
}
+
+ public String getEffort() {
+ return StringUtils.lowerCase(project.getConfiguration().getString(CoreProperties.FINDBUGS_EFFORT_PROPERTY, CoreProperties.FINDBUGS_EFFORT_DEFAULT_VALUE));
+ }
}
diff --git a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsExecutor.java b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsExecutor.java
index d6465723b46..8953f013270 100644
--- a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsExecutor.java
+++ b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsExecutor.java
@@ -30,7 +30,7 @@ public class FindbugsExecutor implements BatchExtension {
}
public File execute() {
- TimeProfiler profiler = new TimeProfiler().start("Execute Findbugs");
+ TimeProfiler profiler = new TimeProfiler().start("Execute Findbugs " + FindbugsVersion.getVersion());
ClassLoader initialClassLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(FindBugs2.class.getClassLoader());
@@ -60,7 +60,7 @@ public class FindbugsExecutor implements BatchExtension {
engine.setDetectorFactoryCollection(DetectorFactoryCollection.instance());
UserPreferences userPreferences = UserPreferences.createDefaultUserPreferences();
- userPreferences.setEffort(UserPreferences.EFFORT_DEFAULT);
+ userPreferences.setEffort(configuration.getEffort());
engine.addFilter(configuration.saveIncludeConfigXml().getAbsolutePath(), true);
engine.addFilter(configuration.saveExcludeConfigXml().getAbsolutePath(), false);
diff --git a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsVersion.java b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsVersion.java
new file mode 100644
index 00000000000..8388c096b0d
--- /dev/null
+++ b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsVersion.java
@@ -0,0 +1,35 @@
+package org.sonar.plugins.findbugs;
+
+import org.apache.commons.io.IOUtils;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+public enum FindbugsVersion {
+ INSTANCE;
+
+ private static final String PROPERTIES_PATH = "/org/sonar/plugins/findbugs/findbugs-plugin.properties";
+ private String version;
+
+ public static String getVersion() {
+ return INSTANCE.version;
+ }
+
+ private FindbugsVersion() {
+ InputStream input = getClass().getResourceAsStream(PROPERTIES_PATH);
+ try {
+ Properties properties = new Properties();
+ properties.load(input);
+ this.version = properties.getProperty("findbugs.version");
+
+ } catch (IOException e) {
+ LoggerFactory.getLogger(getClass()).warn("Can not load the Findbugs version from the file " + PROPERTIES_PATH);
+ this.version = "";
+
+ } finally {
+ IOUtils.closeQuietly(input);
+ }
+ }
+}
diff --git a/plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/findbugs-plugin.properties b/plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/findbugs-plugin.properties
new file mode 100644
index 00000000000..a96dfab5e59
--- /dev/null
+++ b/plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/findbugs-plugin.properties
@@ -0,0 +1 @@
+findbugs.version=${findbugs.version} \ No newline at end of file
diff --git a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsExecutorTest.java b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsExecutorTest.java
index cae79c1cf01..6d8801b985a 100644
--- a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsExecutorTest.java
+++ b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsExecutorTest.java
@@ -36,6 +36,7 @@ public class FindbugsExecutorTest {
when(conf.getFindbugsProject()).thenReturn(project);
when(conf.saveExcludeConfigXml()).thenReturn(new File("test-resources/findbugs-exclude.xml"));
when(conf.saveIncludeConfigXml()).thenReturn(new File("test-resources/findbugs-include.xml"));
+ when(conf.getEffort()).thenReturn("default");
return conf;
}