public boolean shouldExecuteOnProject(Project project) {
return project.getFileSystem().hasJavaSourceFiles()
- && ( !profile.getActiveRulesByRepository(FindbugsConstants.REPOSITORY_KEY).isEmpty() || project.getReuseExistingRulesConfig())
+ && !profile.getActiveRulesByRepository(FindbugsConstants.REPOSITORY_KEY).isEmpty()
&& project.getPom() != null && !StringUtils.equalsIgnoreCase(project.getPom().getPackaging(), "ear");
}
assertFalse(analyser.shouldExecuteOnProject(project));
}
+ @Test
+ public void shouldExecuteFindbugsWhenNoReportProvided() throws Exception {
+ Project project = createProject();
+ FindbugsExecutor executor = mock(FindbugsExecutor.class);
+ SensorContext context = mock(SensorContext.class);
+ Configuration conf = mock(Configuration.class);
+ File xmlFile = new File(getClass().getResource("/org/sonar/plugins/findbugs/findbugsXml.xml").toURI());
+ when(project.getConfiguration()).thenReturn(conf);
+ when(executor.execute()).thenReturn(xmlFile);
+ when(context.getResource(any(Resource.class))).thenReturn(new JavaFile("org.sonar.MyClass"));
+
+ FindbugsNativeSensor analyser = new FindbugsNativeSensor(createRulesProfileWithActiveRules(), new FindbugsRuleFinder(), executor);
+ analyser.analyse(project, context);
+
+ verify(executor).execute();
+ verify(context, times(3)).saveViolation(any(Violation.class));
+
+ Violation wanted = new Violation(null, new JavaFile("org.sonar.commons.ZipUtils")).setMessage(
+ "Empty zip file entry created in org.sonar.commons.ZipUtils._zip(String, File, ZipOutputStream)").setLineId(107);
+
+ verify(context).saveViolation(argThat(new IsViolation(wanted)));
+
+ wanted = new Violation(null, new JavaFile("org.sonar.commons.resources.MeasuresDao")).setMessage(
+ "The class org.sonar.commons.resources.MeasuresDao$1 could be refactored into a named _static_ inner class").setLineId(56);
+
+ verify(context).saveViolation(argThat(new IsViolation(wanted)));
+ }
+
@Test
public void shouldReuseReport() throws Exception {
Project project = createProject();