]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-1772:
authorGodin <mandrikov@gmail.com>
Mon, 18 Oct 2010 16:09:19 +0000 (16:09 +0000)
committerGodin <mandrikov@gmail.com>
Mon, 18 Oct 2010 16:09:19 +0000 (16:09 +0000)
* Add FindbugsVersion
* Use sonar.findbugs.effort

plugins/sonar-findbugs-plugin/pom.xml
plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java
plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsExecutor.java
plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsVersion.java [new file with mode: 0644]
plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/findbugs-plugin.properties [new file with mode: 0644]
plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsExecutorTest.java

index 22c29a476a9d6e3e65bb9a437cf759e897ec0d3b..d93349503222550bed7275b63f02b6598d0219a7 100644 (file)
   </dependencies>
 
   <build>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>true</filtering>
+      </resource>
+    </resources>
+
     <testResources>
       <testResource>
         <directory>${basedir}/src/main/resources</directory>
         <directory>${basedir}/src/test/resources</directory>
       </testResource>
     </testResources>
+
     <plugins>
       <plugin>
         <groupId>org.codehaus.sonar</groupId>
index fe0e05e6bf16eac5f4f695bf415742d76eb0a696..7969741cdb6c0c4cceaa5ae2f1ec80b0d2642199 100644 (file)
@@ -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));
+  }
 }
index d6465723b462c38c710e5587fd405b32b420143e..8953f01327043f6881a86dad102faacc6763d0a1 100644 (file)
@@ -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 (file)
index 0000000..8388c09
--- /dev/null
@@ -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 (file)
index 0000000..a96dfab
--- /dev/null
@@ -0,0 +1 @@
+findbugs.version=${findbugs.version}
\ No newline at end of file
index cae79c1cf013bf74a35e0653c3575bc87344517e..6d8801b985a2a7da614a8d885fb3eb2df4ac88d1 100644 (file)
@@ -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;
   }