Skip to content

Commit 267b047

Browse files
authored
deps: SonarQube plugin API 11.4 compatibility (#1273)
Since SonarQube 2025.3 (commercial editions), the plugin API is version 11.4 and this removes the profiles importer/exporter
1 parent fe7267c commit 267b047

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

src/main/java/org/sonar/plugins/findbugs/FindbugsPlugin.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@
2222
import java.util.Arrays;
2323
import java.util.stream.Collectors;
2424

25+
import org.slf4j.Logger;
26+
import org.slf4j.LoggerFactory;
2527
import org.sonar.api.Plugin;
2628
import org.sonar.api.batch.fs.FilePredicate;
2729
import org.sonar.api.batch.fs.FilePredicates;
30+
import org.sonar.api.utils.Version;
2831
import org.sonar.plugins.findbugs.classpath.DefaultClasspathLocator;
2932
import org.sonar.plugins.findbugs.language.Jsp;
3033
import org.sonar.plugins.findbugs.language.scala.Scala;
@@ -43,6 +46,7 @@
4346
import org.sonar.plugins.java.Java;
4447

4548
public 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
}

src/test/java/org/sonar/plugins/findbugs/FindbugsPluginTest.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,30 @@
2121

2222
import static org.junit.jupiter.api.Assertions.assertEquals;
2323
import static org.mockito.Mockito.mock;
24+
import static org.mockito.Mockito.when;
2425

25-
import org.junit.jupiter.api.Test;
26+
import org.junit.jupiter.params.ParameterizedTest;
27+
import org.junit.jupiter.params.provider.CsvSource;
2628
import org.sonar.api.Plugin;
2729
import org.sonar.api.SonarRuntime;
30+
import org.sonar.api.utils.Version;
2831

2932
class FindbugsPluginTest {
3033

31-
@Test
32-
void testGetExtensions() {
34+
@ParameterizedTest
35+
@CsvSource({
36+
"11.3,26",
37+
// We disable the profile importer and the exporter when the plugin API version is >= 11.4 (since 2025.3 commercial editions)
38+
"11.4,24"
39+
})
40+
void testGetExtensions(String version, int expectedExtensionsCount) {
3341
SonarRuntime runtime = mock(SonarRuntime.class);
42+
when(runtime.getApiVersion()).thenReturn(Version.parse(version));
3443
Plugin.Context ctx = new Plugin.Context(runtime);
3544

3645
FindbugsPlugin plugin = new FindbugsPlugin();
3746
plugin.define(ctx);
3847

39-
assertEquals(26, ctx.getExtensions().size(), "extensions count");
48+
assertEquals(expectedExtensionsCount, ctx.getExtensions().size(), "extensions count");
4049
}
4150
}

0 commit comments

Comments
 (0)