diff options
author | Godin <mandrikov@gmail.com> | 2010-10-18 16:09:19 +0000 |
---|---|---|
committer | Godin <mandrikov@gmail.com> | 2010-10-18 16:09:19 +0000 |
commit | bc92061a8b012d08b8efb09b8e21b5ed114a5f59 (patch) | |
tree | 0c3929120dabe1fc65aadd2196b4cb49f7ef2f27 | |
parent | 757c89eb7f40319189fe46f314cbd5e997ac1f83 (diff) | |
download | sonarqube-bc92061a8b012d08b8efb09b8e21b5ed114a5f59.tar.gz sonarqube-bc92061a8b012d08b8efb09b8e21b5ed114a5f59.zip |
SONAR-1772:
* Add FindbugsVersion
* Use sonar.findbugs.effort
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; } |