findbugsProject.addAuxClasspathEntry(file.getAbsolutePath());
}
}
- findbugsProject.setCurrentWorkingDirectory(project.getFileSystem().getBuildDir());
+ findbugsProject.setCurrentWorkingDirectory(project.getFileSystem().getBasedir());
return findbugsProject;
}
- private MavenPlugin getFindbugsMavenPlugin() {
+ protected MavenPlugin getFindbugsMavenPlugin() {
return MavenPlugin.getPlugin(project.getPom(), MavenUtils.GROUP_ID_CODEHAUS_MOJO, "findbugs-maven-plugin");
}
public String saveIncludeConfigXml() throws IOException {
if (project.getReuseExistingRulesConfig()) {
- return getFindbugsMavenPlugin().getParameter("includeFilterFile");
+ String existingIncludeFilterConfig = getFindbugsMavenPlugin().getParameter("includeFilterFile");
+ if ( !StringUtils.isBlank(existingIncludeFilterConfig)) {
+ return existingIncludeFilterConfig;
+ }
}
StringWriter conf = new StringWriter();
exporter.exportProfile(profile, conf);
public String saveExcludeConfigXml() throws IOException {
if (project.getReuseExistingRulesConfig()) {
- return getFindbugsMavenPlugin().getParameter("excludeFilterFile");
+ String existingExcludeFilterConfig = getFindbugsMavenPlugin().getParameter("excludeFilterFile");
+ if ( !StringUtils.isBlank(existingExcludeFilterConfig)) {
+ return existingExcludeFilterConfig;
+ }
}
FindBugsFilter findBugsFilter = new FindBugsFilter();
if (project.getExclusionPatterns() != null) {
* @since 2.4
*/
public static final String GENERATE_XML_KEY = "sonar.findbugs.generateXml";
- public static final boolean GENERATE_XML_DEFAULT_VALUE = true; // TODO should be false
+ public static final boolean GENERATE_XML_DEFAULT_VALUE = true; // TODO should be false - see SONAR-1880
public static final long FINDBUGS_TIMEOUT_DEFAULT_VALUE = 600000;
}
--- /dev/null
+package org.sonar.plugins.findbugs;
+
+import org.junit.Test;
+import org.sonar.api.batch.maven.MavenPlugin;
+import org.sonar.api.batch.maven.MavenUtils;
+import org.sonar.api.resources.Project;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+public class FindbugsConfigurationTest {
+ @Test
+ public void shouldReuseExistingRulesConfig() throws Exception {
+ Project project = mock(Project.class);
+ when(project.getReuseExistingRulesConfig()).thenReturn(true);
+
+ MavenPlugin plugin = new MavenPlugin(MavenUtils.GROUP_ID_CODEHAUS_MOJO, "findbugs-maven-plugin", "2.3.1");
+ plugin.setParameter("excludeFilterFile", "rules/exclude.xml");
+ plugin.setParameter("includeFilterFile", "rules/include.xml");
+
+ FindbugsConfiguration conf = spy(new FindbugsConfiguration(project, null, null, null));
+ doReturn(plugin).when(conf).getFindbugsMavenPlugin();
+ assertThat(conf.saveExcludeConfigXml(), is("rules/exclude.xml"));
+ assertThat(conf.saveIncludeConfigXml(), is("rules/include.xml"));
+ }
+}
package org.sonar.plugins.findbugs;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import org.apache.commons.configuration.Configuration;
import org.apache.maven.project.MavenProject;
import org.junit.Test;
import java.io.File;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Mockito.*;
+
public class FindbugsNativeSensorTest extends FindbugsTests {
@Test
assertTrue(sensor.shouldExecuteOnProject(project));
}
+ @Test
+ public void shouldExecuteWhenReuseExistingRulesConfig() throws Exception {
+ FindbugsNativeSensor analyser = new FindbugsNativeSensor(RulesProfile.create(), new FindbugsRuleFinder(), null);
+ Project pom = createProject();
+ when(pom.getReuseExistingRulesConfig()).thenReturn(true);
+ assertTrue(analyser.shouldExecuteOnProject(pom));
+ }
+
@Test
public void shouldNotExecuteWhenNoRulesAreActive() throws Exception {
FindbugsNativeSensor analyser = new FindbugsNativeSensor(RulesProfile.create(), new FindbugsRuleFinder(), null);