2222import java .util .Arrays ;
2323import java .util .stream .Collectors ;
2424
25+ import org .slf4j .Logger ;
26+ import org .slf4j .LoggerFactory ;
2527import org .sonar .api .Plugin ;
2628import org .sonar .api .batch .fs .FilePredicate ;
2729import org .sonar .api .batch .fs .FilePredicates ;
30+ import org .sonar .api .utils .Version ;
2831import org .sonar .plugins .findbugs .classpath .DefaultClasspathLocator ;
2932import org .sonar .plugins .findbugs .language .Jsp ;
3033import org .sonar .plugins .findbugs .language .scala .Scala ;
4346import org .sonar .plugins .java .Java ;
4447
4548public class FindbugsPlugin implements Plugin {
49+ private static final Logger LOG = LoggerFactory .getLogger (FindbugsPlugin .class );
4650
4751 protected static final String [] SUPPORTED_JVM_LANGUAGES = {
4852 Java .KEY ,
@@ -60,9 +64,9 @@ public class FindbugsPlugin implements Plugin {
6064 "kt" ,
6165 };
6266
63- public static FilePredicate [] getSupportedLanguagesFilePredicate (FilePredicates pred ) {
67+ public static FilePredicate [] getSupportedLanguagesFilePredicate (FilePredicates predicates ) {
6468 return Arrays .stream (SUPPORTED_JVM_LANGUAGES )
65- .map (s -> pred . hasLanguage ( s ) )
69+ .map (predicates :: hasLanguage )
6670 .collect (Collectors .toList ())
6771 .toArray (new FilePredicate [SUPPORTED_JVM_LANGUAGES .length ]);
6872 }
@@ -72,8 +76,6 @@ public void define(Context context) {
7276 context .addExtensions (FindbugsConfiguration .getPropertyDefinitions (context ));
7377 context .addExtensions (Arrays .asList (
7478 FindbugsSensor .class ,
75- FindbugsProfileExporter .class ,
76- FindbugsProfileImporter .class ,
7779 FindbugsConfiguration .class ,
7880 FindbugsExecutor .class ,
7981
@@ -91,5 +93,14 @@ public void define(Context context) {
9193 FindSecurityBugsScalaRulesDefinition .class ,
9294 DefaultClasspathLocator .class ,
9395 ByteCodeResourceLocator .class ));
96+
97+ Version apiVersion = context .getRuntime ().getApiVersion ();
98+
99+ if (!apiVersion .isGreaterThanOrEqual (Version .create (11 , 4 ))) {
100+ context .addExtension (FindbugsProfileExporter .class );
101+ context .addExtension (FindbugsProfileImporter .class );
102+ } else {
103+ LOG .info ("SonarQube plugin API version is {}, disabling the deprecated SpotBugs profile importer and exporter" , apiVersion );
104+ }
94105 }
95106}
0 commit comments