From 9fb0f801ca5af7f654a70f7b906d756038327470 Mon Sep 17 00:00:00 2001 From: Tomasz Tylenda Date: Thu, 26 Mar 2026 16:18:15 +0100 Subject: [PATCH 1/4] Stop using Guava's ImmutableSet and ImmutableMap --- .../java/org/sonar/java/it/AutoScanTest.java | 3 +-- .../org/sonar/java/it/ProfileGenerator.java | 5 ++-- .../org/sonar/java/it/JavaRulingTest.java | 24 ++++++++----------- .../org/sonar/java/it/ProfileGenerator.java | 5 ++-- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/its/autoscan/src/test/java/org/sonar/java/it/AutoScanTest.java b/its/autoscan/src/test/java/org/sonar/java/it/AutoScanTest.java index 307045af9c4..17dff2ef639 100644 --- a/its/autoscan/src/test/java/org/sonar/java/it/AutoScanTest.java +++ b/its/autoscan/src/test/java/org/sonar/java/it/AutoScanTest.java @@ -16,7 +16,6 @@ */ package org.sonar.java.it; -import com.google.common.collect.ImmutableMap; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; @@ -228,7 +227,7 @@ private static String absolutePathFor(String path) { private static List generateSonarWay(OrchestratorRule orchestrator) { Set results = new TreeSet<>(RULE_KEY_COMPARATOR); - ProfileGenerator.generate(orchestrator, "Sonar Way", ImmutableMap.of(), Collections.emptySet(), Collections.emptySet(), results); + ProfileGenerator.generate(orchestrator, "Sonar Way", Map.of(), Collections.emptySet(), Collections.emptySet(), results); return new ArrayList<>(results); } diff --git a/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java b/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java index daa0c3799cf..a9178a75796 100644 --- a/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java +++ b/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java @@ -16,7 +16,6 @@ */ package org.sonar.java.it; -import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; import com.sonar.orchestrator.container.Server; import com.sonar.orchestrator.junit4.OrchestratorRule; @@ -47,7 +46,7 @@ public class ProfileGenerator { private static final Logger LOG = LoggerFactory.getLogger(ProfileGenerator.class); - static void generate(OrchestratorRule orchestrator, ImmutableMap> rulesParameters, + static void generate(OrchestratorRule orchestrator, Map> rulesParameters, Set excluded, Set subsetOfEnabledRules, Set activatedRuleKeys) { generate(orchestrator, null, rulesParameters, excluded, subsetOfEnabledRules, activatedRuleKeys); } @@ -55,7 +54,7 @@ static void generate(OrchestratorRule orchestrator, ImmutableMap> rulesParameters, + static void generate(OrchestratorRule orchestrator, @Nullable String qualityProfile, Map> rulesParameters, Set excluded, Set subsetOfEnabledRules, Set activatedRuleKeys) { try { LOG.info("Generating profile containing all the rules"); diff --git a/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java b/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java index 6cb69a1657a..bdc2a63abd5 100644 --- a/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java +++ b/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java @@ -17,8 +17,6 @@ package org.sonar.java.it; import com.google.common.base.Splitter; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.sonar.orchestrator.build.Build; import com.sonar.orchestrator.build.BuildResult; import com.sonar.orchestrator.build.MavenBuild; @@ -40,6 +38,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Nullable; @@ -79,7 +78,7 @@ public class JavaRulingTest { * mvn test -DsonarRules=S100,S101 * } */ - private static final ImmutableSet SUBSET_OF_ENABLED_RULES = ImmutableSet.copyOf( + private static final Set SUBSET_OF_ENABLED_RULES = Set.copyOf( Splitter.on(',').trimResults().omitEmptyStrings().splitToList( System.getProperty("sonarRules", "") ) @@ -114,23 +113,20 @@ private static OrchestratorRule createOrchestrator() { @BeforeClass public static void prepare_quality_profiles() throws Exception { - ImmutableMap> rulesParameters = ImmutableMap.>builder() - .put( - "S1120", - ImmutableMap.of("indentationLevel", "4")) - .put( + Map> rulesParameters = Map.of( + "S1120", Map.of("indentationLevel", "4"), "S1451", - ImmutableMap.of( + Map.of( "headerFormat", """ /* * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.""")) - .put("S5961", ImmutableMap.of("MaximumAssertionNumber", "50")) - .put("S6539", ImmutableMap.of("couplingThreshold", "20")) - .build(); - ImmutableSet disabledRules = ImmutableSet.of( + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms."""), + "S5961", Map.of("MaximumAssertionNumber", "50"), + "S6539", Map.of("couplingThreshold", "20") + ); + Set disabledRules = Set.of( "S1874", "CycleBetweenPackages", // disable because it generates too many issues, performance reasons diff --git a/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java b/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java index 5e3b064b90a..f5156f97459 100644 --- a/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java +++ b/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java @@ -16,7 +16,6 @@ */ package org.sonar.java.it; -import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; import com.sonar.orchestrator.junit4.OrchestratorRule; import com.sonar.orchestrator.locator.FileLocation; @@ -45,7 +44,7 @@ public class ProfileGenerator { private static final Logger LOG = LoggerFactory.getLogger(ProfileGenerator.class); - static void generate(OrchestratorRule orchestrator, ImmutableMap> rulesParameters, + static void generate(OrchestratorRule orchestrator, Map> rulesParameters, Set excluded, Set subsetOfEnabledRules, Set activatedRuleKeys) { generate(orchestrator, null, rulesParameters, excluded, subsetOfEnabledRules, activatedRuleKeys); } @@ -53,7 +52,7 @@ static void generate(OrchestratorRule orchestrator, ImmutableMap> rulesParameters, + static void generate(OrchestratorRule orchestrator, @Nullable String qualityProfile, Map> rulesParameters, Set excluded, Set subsetOfEnabledRules, Set activatedRuleKeys) { try { LOG.info("Generating profile containing all the rules"); From 7a9ae8791bc533269c609fd1408d1f5a01042058 Mon Sep 17 00:00:00 2001 From: Tomasz Tylenda Date: Thu, 26 Mar 2026 16:44:24 +0100 Subject: [PATCH 2/4] Stop using Splitter --- .../test/java/org/sonar/java/it/JavaRulingTest.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java b/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java index bdc2a63abd5..5d9f867e036 100644 --- a/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java +++ b/its/ruling/src/test/java/org/sonar/java/it/JavaRulingTest.java @@ -16,7 +16,6 @@ */ package org.sonar.java.it; -import com.google.common.base.Splitter; import com.sonar.orchestrator.build.Build; import com.sonar.orchestrator.build.BuildResult; import com.sonar.orchestrator.build.MavenBuild; @@ -78,11 +77,11 @@ public class JavaRulingTest { * mvn test -DsonarRules=S100,S101 * } */ - private static final Set SUBSET_OF_ENABLED_RULES = Set.copyOf( - Splitter.on(',').trimResults().omitEmptyStrings().splitToList( - System.getProperty("sonarRules", "") - ) - ); + private static final Set SUBSET_OF_ENABLED_RULES = + Arrays.stream(System.getProperty("sonarRules", "").split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .collect(Collectors.toSet()); @ClassRule public static TemporaryFolder tmpDumpOldFolder = new TemporaryFolder(); From e9e22151ae9d0a2599abfedcb82d38e0bb3e3e04 Mon Sep 17 00:00:00 2001 From: Tomasz Tylenda Date: Thu, 26 Mar 2026 16:48:10 +0100 Subject: [PATCH 3/4] Stop using Guava Files --- .../src/test/java/org/sonar/java/it/ProfileGenerator.java | 5 ++--- .../src/test/java/org/sonar/java/it/ProfileGenerator.java | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java b/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java index a9178a75796..6caf11b0d79 100644 --- a/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java +++ b/its/autoscan/src/test/java/org/sonar/java/it/ProfileGenerator.java @@ -16,13 +16,12 @@ */ package org.sonar.java.it; -import com.google.common.io.Files; import com.sonar.orchestrator.container.Server; import com.sonar.orchestrator.junit4.OrchestratorRule; import com.sonar.orchestrator.locator.FileLocation; import java.io.File; import java.io.IOException; -import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -90,7 +89,7 @@ static void generate(OrchestratorRule orchestrator, @Nullable String qualityProf .append(""); File file = File.createTempFile("profile", ".xml"); - Files.asCharSink(file, StandardCharsets.UTF_8).write(sb); + Files.writeString(file.toPath(), sb); LOG.info("Restoring profile to SonarQube"); orchestrator.getServer().restoreProfile(FileLocation.of(file)); file.delete(); diff --git a/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java b/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java index f5156f97459..2596ea4bd30 100644 --- a/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java +++ b/its/ruling/src/test/java/org/sonar/java/it/ProfileGenerator.java @@ -16,12 +16,11 @@ */ package org.sonar.java.it; -import com.google.common.io.Files; import com.sonar.orchestrator.junit4.OrchestratorRule; import com.sonar.orchestrator.locator.FileLocation; import java.io.File; import java.io.IOException; -import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -88,7 +87,7 @@ static void generate(OrchestratorRule orchestrator, @Nullable String qualityProf .append(""); File file = File.createTempFile("profile", ".xml"); - Files.asCharSink(file, StandardCharsets.UTF_8).write(sb); + Files.writeString(file.toPath(), sb); LOG.info("Restoring profile to SonarQube"); orchestrator.getServer().restoreProfile(FileLocation.of(file)); file.delete(); From 927ef7347f0abbdb185973c60638ef68ceb9d3f5 Mon Sep 17 00:00:00 2001 From: Tomasz Tylenda Date: Thu, 26 Mar 2026 16:49:42 +0100 Subject: [PATCH 4/4] Drop Guava from poms --- its/autoscan/pom.xml | 5 ----- its/ruling/pom.xml | 5 ----- 2 files changed, 10 deletions(-) diff --git a/its/autoscan/pom.xml b/its/autoscan/pom.xml index b6d2c959799..3f32fe6d7d4 100644 --- a/its/autoscan/pom.xml +++ b/its/autoscan/pom.xml @@ -31,11 +31,6 @@ gson test - - com.google.guava - guava - test - junit junit diff --git a/its/ruling/pom.xml b/its/ruling/pom.xml index 8a273286a37..174595f3907 100644 --- a/its/ruling/pom.xml +++ b/its/ruling/pom.xml @@ -63,11 +63,6 @@ assertj-core test - - com.google.guava - guava - test - com.google.code.findbugs jsr305