]> source.dussan.org Git - sonarqube.git/commitdiff
Reduce dependency of sonar-scanner-engine on Guava
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Wed, 19 Jun 2019 21:12:24 +0000 (16:12 -0500)
committerSonarTech <sonartech@sonarsource.com>
Fri, 12 Jul 2019 18:21:14 +0000 (20:21 +0200)
40 files changed:
sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/Batch.java
sonar-scanner-engine/src/main/java/org/sonar/batch/bootstrapper/LoggingConfiguration.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/DefaultFileLinesContext.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/BatchComponents.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/GlobalServerSettings.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/MetricProvider.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ProcessedScannerProperties.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/RawScannerProperties.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginRepository.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/cpd/CpdExecutor.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/deprecated/perspectives/ScannerPerspectives.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/deprecated/test/DefaultTestCase.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/deprecated/test/DefaultTestPlan.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/externalissue/ExternalIssueImporter.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/genericcoverage/GenericCoverageReportParser.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/genericcoverage/GenericCoverageSensor.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/genericcoverage/GenericTestExecutionReportParser.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/genericcoverage/GenericTestExecutionSensor.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/IssuePublisher.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/AbstractPatternInitializer.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializer.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/ignore/pattern/LineRange.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/AnalysisResult.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/notifications/DefaultAnalysisWarnings.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ReportPublisher.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/report/TestExecutionPublisher.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/ContextPropertiesCache.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/DefaultProjectRepositoriesLoader.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/MultiModuleProjectRepository.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/SingleProjectRepository.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/settings/AbstractSettingsLoader.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/rule/QProfileVerifier.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectReactorBuilder.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectServerSettings.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/DefaultModuleFileSystem.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/DefaultProjectFileSystem.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/filesystem/MetadataGenerator.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/measure/DefaultMetricFinder.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/scm/DefaultBlameOutput.java

index ae16e5c247d33c76cc674edcc37cdb24405e4fd8..c7da2076698983edbcbcbe0fcdce5a2c620a9fe3 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.batch.bootstrapper;
 
-import com.google.common.base.Throwables;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -104,11 +103,13 @@ public final class Batch {
       return t;
     }
 
-    for (Throwable y : Throwables.getCausalChain(t)) {
+    Throwable y = t;
+    do {
       if (y instanceof MessageException) {
         return (MessageException) y;
       }
-    }
+      y = y.getCause();
+    } while (y != null);
 
     return t;
   }
index 94c6175298d2f465a39a896a3b1f042f9d225c16..bf7b4f63d6c9457d2efffdec428890de60fc16a5 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.batch.bootstrapper;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
@@ -43,9 +42,7 @@ public final class LoggingConfiguration {
   public static final String LEVEL_ROOT_VERBOSE = "DEBUG";
   public static final String LEVEL_ROOT_DEFAULT = "INFO";
 
-  @VisibleForTesting
   static final String FORMAT_DEFAULT = "%d{HH:mm:ss.SSS} %-5level - %msg%n";
-  @VisibleForTesting
   static final String FORMAT_MAVEN = "[%level] [%d{HH:mm:ss.SSS}] %msg%n";
 
   private Map<String, String> substitutionVariables = new HashMap<>();
@@ -110,7 +107,6 @@ public final class LoggingConfiguration {
     return addSubstitutionVariable(PROPERTY_ROOT_LOGGER_LEVEL, level);
   }
 
-  @VisibleForTesting
   LoggingConfiguration setFormat(String format) {
     return addSubstitutionVariable(PROPERTY_FORMAT, StringUtils.defaultIfBlank(format, FORMAT_DEFAULT));
   }
@@ -120,7 +116,6 @@ public final class LoggingConfiguration {
     return this;
   }
 
-  @VisibleForTesting
   String getSubstitutionVariable(String key) {
     return substitutionVariables.get(key);
   }
index e0481cfb52d1d7e107e73db40850a5cda1e3d1c8..802c5ff112c6278e32d28528952a7c885371c327 100644 (file)
@@ -53,7 +53,7 @@ public class DefaultFileLinesContext implements FileLinesContext {
 
   @Override
   public void setIntValue(String metricKey, int line, int value) {
-    Preconditions.checkNotNull(metricKey);
+    checkNotNull(metricKey);
     checkLineRange(line);
 
     setValue(metricKey, line, value);
@@ -66,13 +66,19 @@ public class DefaultFileLinesContext implements FileLinesContext {
 
   @Override
   public void setStringValue(String metricKey, int line, String value) {
-    Preconditions.checkNotNull(metricKey);
+    checkNotNull(metricKey);
     checkLineRange(line);
-    Preconditions.checkNotNull(value);
+    checkNotNull(value);
 
     setValue(metricKey, line, value);
   }
 
+  private static void checkNotNull(Object object) {
+    if (object == null) {
+      throw new NullPointerException();
+    }
+  }
+
   private void setValue(String metricKey, int line, Object value) {
     map.computeIfAbsent(metricKey, k -> new HashMap<>())
       .put(line, value);
index 479304d2587a9b3dd3c0851b03c5abe3d0d92c4d..13914743e38cd9b1b307d3c3ef63b29abd160f77 100644 (file)
@@ -19,7 +19,7 @@
  */
 package org.sonar.scanner.bootstrap;
 
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import org.sonar.core.component.DefaultResourceTypes;
@@ -36,8 +36,8 @@ public class BatchComponents {
   }
 
   public static Collection<Object> all() {
-    List<Object> components = Lists.newArrayList(
-      DefaultResourceTypes.get());
+    List<Object> components = new ArrayList<>();
+    components.add(DefaultResourceTypes.get());
     components.addAll(CorePropertyDefinitions.all());
     components.add(ZeroCoverageSensor.class);
     components.add(JavaCpdBlockIndexerSensor.class);
index 643fc27cc552fec27f64958b8b30982b03d29f93..dcb80cf4e2fc744c7609daeeba03e10a65c496bb 100644 (file)
@@ -19,7 +19,8 @@
  */
 package org.sonar.scanner.bootstrap;
 
-import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.concurrent.Immutable;
 
@@ -32,11 +33,11 @@ public class GlobalServerSettings {
   private final Map<String, String> properties;
 
   public GlobalServerSettings(Map<String, String> properties) {
-    this.properties = properties;
+    this.properties = Collections.unmodifiableMap(new HashMap<>(properties));
   }
 
   public Map<String, String> properties() {
-    return ImmutableMap.copyOf(properties);
+    return properties;
   }
 
   public String property(String key) {
index 5d3fb8158db496d907d041b4f2a336582abdc980..b0685d8815c090e339061c5547652fd83ee615d6 100644 (file)
  */
 package org.sonar.scanner.bootstrap;
 
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
 import java.util.List;
 import org.sonar.api.ExtensionProvider;
-import org.sonar.api.scanner.ScannerSide;
 import org.sonar.api.measures.CoreMetrics;
 import org.sonar.api.measures.Metric;
 import org.sonar.api.measures.Metrics;
+import org.sonar.api.scanner.ScannerSide;
 
 @ScannerSide
 public class MetricProvider extends ExtensionProvider {
@@ -42,7 +42,7 @@ public class MetricProvider extends ExtensionProvider {
 
   @Override
   public List<Metric> provide() {
-    List<Metric> metrics = Lists.newArrayList(CoreMetrics.getMetrics());
+    List<Metric> metrics = new ArrayList<>(CoreMetrics.getMetrics());
     for (Metrics factory : factories) {
       metrics.addAll(factory.getMetrics());
     }
index 1c9b77ba22e474d16585969637f6490aa6fdbc54..f3765a5ed53adc30853bc249e45759594d861370 100644 (file)
@@ -19,7 +19,7 @@
  */
 package org.sonar.scanner.bootstrap;
 
-import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
@@ -50,7 +50,7 @@ public class ProcessedScannerProperties implements ProjectKey {
   }
 
   public Map<String, String> properties() {
-    return ImmutableMap.copyOf(properties);
+    return Collections.unmodifiableMap(new HashMap<>(properties));
   }
 
   public String property(String key) {
index 343e08c3d5006e7436a3e8c54f568a01b4e90712..77f64bf4ad873f8700fe21edaeab75532f8c39bb 100644 (file)
@@ -19,7 +19,7 @@
  */
 package org.sonar.scanner.bootstrap;
 
-import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.concurrent.Immutable;
@@ -49,7 +49,7 @@ public class RawScannerProperties {
       }
       decryptedProps.put(entry.getKey(), value);
     }
-    this.properties = decryptedProps;
+    this.properties = Collections.unmodifiableMap(new HashMap<>(decryptedProps));
   }
 
   public Encryption getEncryption() {
@@ -57,7 +57,7 @@ public class RawScannerProperties {
   }
 
   public Map<String, String> properties() {
-    return ImmutableMap.copyOf(properties);
+    return properties;
   }
 
   public String property(String key) {
index d7e8341cafe051bfaca7545813aeffff9f4d67c6..b3a0f2863945676d36b32c32e5501b18ba9c8847 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.bootstrap;
 
-import com.google.common.base.Preconditions;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -35,6 +34,7 @@ import org.sonar.core.platform.PluginRepository;
 
 import static java.util.stream.Collectors.toList;
 import static java.util.stream.Collectors.toMap;
+import static org.sonar.api.utils.Preconditions.checkState;
 
 /**
  * Orchestrates the installation and loading of plugins
@@ -116,14 +116,14 @@ public class ScannerPluginRepository implements PluginRepository, Startable {
   @Override
   public PluginInfo getPluginInfo(String key) {
     ScannerPlugin info = pluginsByKeys.get(key);
-    Preconditions.checkState(info != null, "Plugin [%s] does not exist", key);
+    checkState(info != null, "Plugin [%s] does not exist", key);
     return info.getInfo();
   }
 
   @Override
   public Plugin getPluginInstance(String key) {
     Plugin instance = pluginInstancesByKeys.get(key);
-    Preconditions.checkState(instance != null, "Plugin [%s] does not exist", key);
+    checkState(instance != null, "Plugin [%s] does not exist", key);
     return instance;
   }
 
index 74684a0019be5b8cdc7f8da128a6fa82a9a2283e..5f6cfd1a5f7696f692e16e41b074d0b8fb490ab0 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.cpd;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -34,6 +33,8 @@ import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import org.sonar.api.batch.fs.InputComponent;
+import org.sonar.api.impl.fs.DefaultInputComponent;
+import org.sonar.api.impl.fs.DefaultInputFile;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
 import org.sonar.duplications.block.Block;
@@ -42,8 +43,6 @@ import org.sonar.duplications.index.CloneGroup;
 import org.sonar.duplications.index.ClonePart;
 import org.sonar.duplications.index.PackedMemoryCloneIndex.ResourceBlocks;
 import org.sonar.scanner.cpd.index.SonarCpdBlockIndex;
-import org.sonar.api.impl.fs.DefaultInputComponent;
-import org.sonar.api.impl.fs.DefaultInputFile;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.scanner.protocol.output.ScannerReport.Duplicate;
 import org.sonar.scanner.protocol.output.ScannerReport.Duplication;
@@ -90,7 +89,6 @@ public class CpdExecutor {
     execute(TIMEOUT);
   }
 
-  @VisibleForTesting
   void execute(long timeout) {
     List<FileBlocks> components = new ArrayList<>(index.noResources());
     Iterator<ResourceBlocks> it = index.iterator();
@@ -129,7 +127,6 @@ public class CpdExecutor {
     return files == 1 ? "file" : "files";
   }
 
-  @VisibleForTesting
   void runCpdAnalysis(ExecutorService executorService, DefaultInputFile inputFile, Collection<Block> fileBlocks, long timeout) {
     LOG.debug("Detection of duplications for {}", inputFile.absolutePath());
     progressReport.message(String.format("%d/%d - current file: %s", count, total, inputFile.absolutePath()));
@@ -160,7 +157,6 @@ public class CpdExecutor {
     saveDuplications(inputFile, filtered);
   }
 
-  @VisibleForTesting
   final void saveDuplications(final DefaultInputComponent component, List<CloneGroup> duplications) {
     if (duplications.size() > MAX_CLONE_GROUP_PER_FILE) {
       LOG.warn("Too many duplication groups on file {}. Keep only the first {} groups.", component, MAX_CLONE_GROUP_PER_FILE);
index c685cbe68fb617a01bfc359271446fe99392a055..b7416245b9bbcffe2844c29eb529303162e509cb 100644 (file)
@@ -19,7 +19,7 @@
  */
 package org.sonar.scanner.deprecated.perspectives;
 
-import com.google.common.collect.Maps;
+import java.util.HashMap;
 import java.util.Map;
 import org.sonar.api.batch.fs.InputPath;
 import org.sonar.api.component.Perspective;
@@ -27,7 +27,7 @@ import org.sonar.api.component.ResourcePerspectives;
 
 public class ScannerPerspectives implements ResourcePerspectives {
 
-  private final Map<Class<?>, PerspectiveBuilder<?>> builders = Maps.newHashMap();
+  private final Map<Class<?>, PerspectiveBuilder<?>> builders = new HashMap<>();
 
   public ScannerPerspectives(PerspectiveBuilder[] builders) {
     for (PerspectiveBuilder builder : builders) {
index 74113b9ed68de7e42f00136f2929d7d191e7c4d9..a694f434fd9f1541fc19d1582e745818f4b116a4 100644 (file)
  */
 package org.sonar.scanner.deprecated.test;
 
-import com.google.common.base.Preconditions;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Nullable;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.InputFile.Type;
+import org.sonar.api.impl.fs.DefaultInputFile;
 import org.sonar.api.test.CoverageBlock;
 import org.sonar.api.test.MutableTestCase;
 import org.sonar.api.test.TestPlan;
 import org.sonar.api.test.Testable;
 import org.sonar.api.test.exception.CoverageAlreadyExistsException;
 import org.sonar.api.test.exception.IllegalDurationException;
-import org.sonar.api.impl.fs.DefaultInputFile;
+
+import static org.sonar.api.utils.Preconditions.checkArgument;
 
 public class DefaultTestCase implements MutableTestCase {
 
@@ -125,7 +126,7 @@ public class DefaultTestCase implements MutableTestCase {
 
   @Override
   public MutableTestCase setCoverageBlock(InputFile mainFile, List<Integer> lines) {
-    Preconditions.checkArgument(mainFile.type() == Type.MAIN, "Test file can only cover a main file");
+    checkArgument(mainFile.type() == Type.MAIN, "Test file can only cover a main file");
     DefaultInputFile coveredFile = (DefaultInputFile) mainFile;
     if (coverageBlocksByTestedFile.containsKey(coveredFile)) {
       throw new CoverageAlreadyExistsException("The link between " + name() + " and " + coveredFile.key() + " already exists");
index 3e765e3f75296ef2c7929401b1b5b1afb863641b..8fc9981a85c03b3fa4100dc5fa0222d692f9c08d 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.deprecated.test;
 
-import com.google.common.collect.Lists;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.CheckForNull;
@@ -32,7 +31,7 @@ public class DefaultTestPlan implements MutableTestPlan {
   @Override
   @CheckForNull
   public Iterable<MutableTestCase> testCasesByName(String name) {
-    List<MutableTestCase> result = Lists.newArrayList();
+    List<MutableTestCase> result = new ArrayList<>();
     for (MutableTestCase testCase : testCases()) {
       if (name.equals(testCase.name())) {
         result.add(testCase);
index f4ff8a26d1618a65c36b69cb0e9b5f90dc4c281b..55266ae8a20a4951a1e60545798a696314596ccd 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.externalissue;
 
-import com.google.common.base.MoreObjects;
 import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -121,7 +120,7 @@ public class ExternalIssueImporter {
     if (location.textRange != null) {
       if (location.textRange.startColumn != null) {
         TextPointer start = file.newPointer(location.textRange.startLine, location.textRange.startColumn);
-        int endLine = MoreObjects.firstNonNull(location.textRange.endLine, location.textRange.startLine);
+        int endLine = (location.textRange.endLine != null) ? location.textRange.endLine : location.textRange.startLine;
         int endColumn;
 
         if (location.textRange.endColumn == null) {
index 6499aa11ae4d46dc5ae05dc8a254cb25f217120e..c3ee0a32a7bdf78ac847bac73e466aafdaeb47e9 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.genericcoverage;
 
-import com.google.common.base.Preconditions;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
@@ -35,6 +34,8 @@ import org.sonar.api.batch.sensor.SensorContext;
 import org.sonar.api.batch.sensor.coverage.NewCoverage;
 import org.sonar.api.utils.MessageException;
 
+import static org.sonar.api.utils.Preconditions.checkState;
+
 public class GenericCoverageReportParser {
 
   private static final String LINE_NUMBER_ATTR = "lineNumber";
@@ -85,7 +86,7 @@ public class GenericCoverageReportParser {
         }
         continue;
       }
-      Preconditions.checkState(
+      checkState(
         inputFile.language() != null,
         "Line %s of report refers to a file with an unknown language: %s",
         fileCursor.getCursorLocation().getLineNumber(),
index e11b403b0b686212498b7747585e936bdce8e4d6..537f8a1857ac0555686e2314046104b7e5b4955e 100644 (file)
  */
 package org.sonar.scanner.genericcoverage;
 
-import com.google.common.collect.ImmutableList;
 import java.io.File;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.sonar.api.batch.sensor.Sensor;
@@ -69,9 +70,8 @@ public class GenericCoverageSensor implements Sensor {
     this.config = config;
   }
 
-  public static ImmutableList<PropertyDefinition> properties() {
-    return ImmutableList.of(
-
+  public static List<PropertyDefinition> properties() {
+    return Collections.singletonList(
       PropertyDefinition.builder(REPORT_PATHS_PROPERTY_KEY)
         .name("Coverage report paths")
         .description("List of comma-separated paths (absolute or relative) containing coverage report.")
@@ -103,8 +103,8 @@ public class GenericCoverageSensor implements Sensor {
       .global()
       .onlyWhenConfiguration(c -> asList(REPORT_PATHS_PROPERTY_KEY, OLD_REPORT_PATH_PROPERTY_KEY, OLD_COVERAGE_REPORT_PATHS_PROPERTY_KEY,
         OLD_IT_COVERAGE_REPORT_PATHS_PROPERTY_KEY, OLD_OVERALL_COVERAGE_REPORT_PATHS_PROPERTY_KEY)
-          .stream()
-          .anyMatch(c::hasKey));
+        .stream()
+        .anyMatch(c::hasKey));
   }
 
   @Override
index 62c54dba30b6ba2c027d4c892af728a8fc9e7bcf..69002e47d7544661e74babc8e1db8da8e80cd40b 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.genericcoverage;
 
-import com.google.common.base.Preconditions;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
@@ -40,6 +39,7 @@ import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
 import org.sonar.scanner.deprecated.test.TestPlanBuilder;
 
+import static org.sonar.api.utils.Preconditions.checkState;
 import static org.sonar.scanner.genericcoverage.GenericCoverageReportParser.checkElementName;
 import static org.sonar.scanner.genericcoverage.GenericCoverageReportParser.longValue;
 import static org.sonar.scanner.genericcoverage.GenericCoverageReportParser.mandatoryAttribute;
@@ -116,12 +116,12 @@ public class GenericTestExecutionReportParser {
         }
         continue;
       }
-      Preconditions.checkState(
+      checkState(
         inputFile.language() != null,
         "Line %s of report refers to a file with an unknown language: %s",
         fileCursor.getCursorLocation().getLineNumber(),
         filePath);
-      Preconditions.checkState(
+      checkState(
         inputFile.type() != InputFile.Type.MAIN,
         "Line %s of report refers to a file which is not configured as a test file: %s",
         fileCursor.getCursorLocation().getLineNumber(),
index 1cad4d799d3a46396f03b296ff107979d9027f94..297f9fc41ac125c986ea838cb49d3f7819c538fe 100644 (file)
@@ -19,8 +19,9 @@
  */
 package org.sonar.scanner.genericcoverage;
 
-import com.google.common.collect.ImmutableList;
 import java.io.File;
+import java.util.Collections;
+import java.util.List;
 import java.util.stream.Collectors;
 import org.sonar.api.batch.sensor.Sensor;
 import org.sonar.api.batch.sensor.SensorContext;
@@ -53,8 +54,8 @@ public class GenericTestExecutionSensor implements Sensor {
     this.configuration = configuration;
   }
 
-  public static ImmutableList<PropertyDefinition> properties() {
-    return ImmutableList.of(
+  public static List<PropertyDefinition> properties() {
+    return Collections.singletonList(
 
       PropertyDefinition.builder(REPORT_PATHS_PROPERTY_KEY)
         .name("Unit tests results report paths")
index 1bbf26f6bd1d825c8ae58205eef20cd41b63c4bd..326f38e6b830ca20d42d8f221805bec0698920b9 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.scanner.issue;
 
 import java.util.Collection;
 import java.util.function.Consumer;
+import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 import org.apache.commons.lang.StringUtils;
 import org.sonar.api.batch.fs.TextRange;
@@ -37,8 +38,6 @@ import org.sonar.scanner.protocol.output.ScannerReport.IssueLocation;
 import org.sonar.scanner.protocol.output.ScannerReport.IssueType;
 import org.sonar.scanner.report.ReportPublisher;
 
-import static com.google.common.base.Strings.nullToEmpty;
-
 /**
  * Initialize the issues raised during scan.
  */
@@ -91,6 +90,13 @@ public class IssuePublisher {
     write(inputComponent.scannerId(), rawExternalIssue);
   }
 
+  private static String nullToEmpty(@Nullable String str) {
+    if (str == null) {
+      return "";
+    }
+    return str;
+  }
+
   private static ScannerReport.Issue createReportIssue(Issue issue, int componentRef, String activeRuleSeverity) {
     String primaryMessage = nullToEmpty(issue.primaryLocation().message());
     org.sonar.api.batch.rule.Severity overriddenSeverity = issue.overriddenSeverity();
index 4b85daf89e40db07fbae96f5067c0000fd0c2d65..3fac8b8ed864dd063a2cc603dfb532ba8adf2b78 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.issue.ignore.pattern;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang.StringUtils;
@@ -53,7 +52,6 @@ public abstract class AbstractPatternInitializer {
     return !multicriteriaPatterns.isEmpty();
   }
 
-  @VisibleForTesting
   protected final void initPatterns() {
     // Patterns Multicriteria
     multicriteriaPatterns = new ArrayList<>();
index 16c3163cbf7dd765a90a9fb96efd04b274f5b90a..51c10c1e3cf3193a3f6f35c2e7ead028c3cfffad 100644 (file)
@@ -22,13 +22,12 @@ package org.sonar.scanner.issue.ignore.pattern;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import javax.annotation.Nullable;
 import org.apache.commons.lang.StringUtils;
 import org.sonar.api.config.Configuration;
 import org.sonar.api.utils.MessageException;
 import org.sonar.core.config.IssueExclusionProperties;
 
-import static com.google.common.base.Strings.nullToEmpty;
-
 public class IssueExclusionPatternInitializer extends AbstractPatternInitializer {
 
   public static final String CONFIG_KEY = IssueExclusionProperties.EXCLUSION_KEY_PREFIX + ".multicriteria";
@@ -79,6 +78,13 @@ public class IssueExclusionPatternInitializer extends AbstractPatternInitializer
     allFilePatterns = Collections.unmodifiableList(allFilePatterns);
   }
 
+  private String nullToEmpty(@Nullable String str) {
+    if (str == null) {
+      return "";
+    }
+    return str;
+  }
+
   public List<BlockIssuePattern> getBlockPatterns() {
     return blockPatterns;
   }
index 7c873cde4e58a216a31cebb2c5659262fb9c8ee4..d95ee67d9b1cc98584b9b603a0962f0b6430e7a1 100644 (file)
  */
 package org.sonar.scanner.issue.ignore.pattern;
 
-import com.google.common.base.Preconditions;
 import java.util.LinkedHashSet;
+import java.util.Objects;
 import java.util.Set;
 
+import static org.sonar.api.utils.Preconditions.checkArgument;
+
 public class LineRange {
   private int from;
   private int to;
@@ -32,7 +34,7 @@ public class LineRange {
   }
 
   public LineRange(int from, int to) {
-    Preconditions.checkArgument(from <= to, "Line range is not valid: %s must be greater or equal than %s", to, from);
+    checkArgument(from <= to, "Line range is not valid: %s must be greater or equal than %s", to, from);
 
     this.from = from;
     this.to = to;
@@ -65,11 +67,7 @@ public class LineRange {
 
   @Override
   public int hashCode() {
-    final int PRIME = 31;
-    int result = 1;
-    result = PRIME * result + from;
-    result = PRIME * result + to;
-    return result;
+    return Objects.hash(from, to);
   }
 
   @Override
index 0e851054801b99d6fe4b2e768c5a7c3cae13857a..7770db3b4797fa2283011da5816aafdb7096d816 100644 (file)
@@ -19,8 +19,6 @@
  */
 package org.sonar.scanner.mediumtest;
 
-import com.google.common.collect.Iterators;
-import com.google.common.collect.Lists;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -35,10 +33,10 @@ import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.TextPointer;
 import org.sonar.api.batch.fs.TextRange;
 import org.sonar.api.batch.sensor.highlighting.TypeOfText;
-import org.sonar.api.scanner.fs.InputProject;
-import org.sonar.core.util.CloseableIterator;
 import org.sonar.api.impl.fs.DefaultInputComponent;
 import org.sonar.api.impl.fs.DefaultInputFile;
+import org.sonar.api.scanner.fs.InputProject;
+import org.sonar.core.util.CloseableIterator;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.scanner.protocol.output.ScannerReport.Component;
 import org.sonar.scanner.protocol.output.ScannerReport.Symbol;
@@ -100,7 +98,7 @@ public class AnalysisResult implements AnalysisObserver {
   }
 
   private List<ScannerReport.Issue> issuesFor(int ref) {
-    List<ScannerReport.Issue> result = Lists.newArrayList();
+    List<ScannerReport.Issue> result = new ArrayList<>();
     try (CloseableIterator<ScannerReport.Issue> it = reader.readComponentIssues(ref)) {
       while (it.hasNext()) {
         result.add(it.next());
@@ -110,7 +108,7 @@ public class AnalysisResult implements AnalysisObserver {
   }
 
   private List<ScannerReport.ExternalIssue> externalIssuesFor(int ref) {
-    List<ScannerReport.ExternalIssue> result = Lists.newArrayList();
+    List<ScannerReport.ExternalIssue> result = new ArrayList<>();
     try (CloseableIterator<ScannerReport.ExternalIssue> it = reader.readComponentExternalIssues(ref)) {
       while (it.hasNext()) {
         result.add(it.next());
@@ -136,13 +134,17 @@ public class AnalysisResult implements AnalysisObserver {
     Map<String, List<ScannerReport.Measure>> result = new HashMap<>();
     List<ScannerReport.Measure> projectMeasures = new ArrayList<>();
     try (CloseableIterator<ScannerReport.Measure> it = reader.readComponentMeasures(((DefaultInputComponent) project).scannerId())) {
-      Iterators.addAll(projectMeasures, it);
+      while (it.hasNext()) {
+        projectMeasures.add(it.next());
+      }
     }
     result.put(project.key(), projectMeasures);
     for (InputFile inputFile : inputFilesByKeys.values()) {
       List<ScannerReport.Measure> measures = new ArrayList<>();
       try (CloseableIterator<ScannerReport.Measure> it = reader.readComponentMeasures(((DefaultInputComponent) inputFile).scannerId())) {
-        Iterators.addAll(measures, it);
+        while (it.hasNext()) {
+          measures.add(it.next());
+        }
       }
       result.put(inputFile.key(), measures);
     }
index 7113af8d2f2acf3fc9cc9d521f4ea06ae8f4cfe5..c8d141aced13050d4f8609885c6650db6c10580f 100644 (file)
@@ -28,7 +28,7 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.api.notifications.AnalysisWarnings;
 import org.sonar.api.utils.System2;
 
-import static com.google.common.base.Preconditions.checkArgument;
+import static org.sonar.api.utils.Preconditions.checkArgument;
 
 public class DefaultAnalysisWarnings implements AnalysisWarnings {
   private final System2 system2;
index 46078b34f84f4a624e932f26467fe4eeb623986e..218f55877d860f7a4a876ba6d94dca0c7c7c5973 100644 (file)
@@ -19,8 +19,6 @@
  */
 package org.sonar.scanner.report;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Throwables;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -168,7 +166,6 @@ public class ReportPublisher implements Startable {
   /**
    * Uploads the report file to server and returns the generated task id
    */
-  @VisibleForTesting
   String upload(File report) {
     LOG.debug("Upload report");
     long startTime = System.currentTimeMillis();
@@ -201,14 +198,13 @@ public class ReportPublisher implements Startable {
     try (InputStream protobuf = response.contentStream()) {
       return Ce.SubmitResponse.parser().parseFrom(protobuf).getTaskId();
     } catch (Exception e) {
-      throw Throwables.propagate(e);
+      throw new RuntimeException(e);
     } finally {
       long stopTime = System.currentTimeMillis();
       LOG.info("Analysis report uploaded in " + (stopTime - startTime) + "ms");
     }
   }
 
-  @VisibleForTesting
   void logSuccess(@Nullable String taskId) {
     if (taskId == null) {
       LOG.info("ANALYSIS SUCCESSFUL");
index 2aa1802f814580a33322465fa1b6399518e93bc8..da6d8fc3ddef9ca607e46968c77dcb68536e3e38 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.report;
 
-import com.google.common.collect.Iterables;
 import java.util.Objects;
 import java.util.stream.StreamSupport;
 import org.sonar.api.batch.fs.InputComponent;
@@ -68,7 +67,7 @@ public class TestExecutionPublisher implements ReportPublisherStep {
 
   private void updateTestExecutionFromTestPlan(final InputFile inputFile, ScannerReportWriter writer) {
     final MutableTestPlan testPlan = testPlanBuilder.getTestPlanByFile(inputFile);
-    if (testPlan == null || Iterables.isEmpty(testPlan.testCases())) {
+    if (testPlan == null || !testPlan.testCases().iterator().hasNext()) {
       return;
     }
     long nonSkippedTests = StreamSupport.stream(testPlan.testCases().spliterator(), false).filter(t -> t.status() != Status.SKIPPED).count();
index 9d363ce09a1df95561562da98a71c1077aabf12e..93372b0367aa17d48dd39e3ffd1c2fe6ba811802 100644 (file)
@@ -22,7 +22,7 @@ package org.sonar.scanner.repository;
 import java.util.HashMap;
 import java.util.Map;
 
-import static com.google.common.base.Preconditions.checkArgument;
+import static org.sonar.api.utils.Preconditions.checkArgument;
 
 public class ContextPropertiesCache {
 
index 3c7e7ad548413a3516d16c027b12ae1971d8dbfc..c1a330be2f13c78f676ac4668450b3ec01bec305 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.repository;
 
-import com.google.common.base.Throwables;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
@@ -28,8 +27,8 @@ import java.util.Map;
 import javax.annotation.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.sonar.scanner.bootstrap.DefaultScannerWsClient;
 import org.sonar.api.impl.utils.ScannerUtils;
+import org.sonar.scanner.bootstrap.DefaultScannerWsClient;
 import org.sonarqube.ws.Batch.WsProjectResponse;
 import org.sonarqube.ws.client.GetRequest;
 import org.sonarqube.ws.client.HttpException;
@@ -75,11 +74,14 @@ public class DefaultProjectRepositoriesLoader implements ProjectRepositoriesLoad
   }
 
   private static boolean shouldThrow(Exception e) {
-    for (Throwable t : Throwables.getCausalChain(e)) {
+    Throwable t = e;
+
+    do {
       if (t instanceof HttpException && ((HttpException) t).code() == HttpURLConnection.HTTP_NOT_FOUND) {
         return false;
       }
-    }
+      t = t.getCause();
+    } while (t != null);
 
     return true;
   }
index 0f33e38d1c7f2f0cbd70fb490f63451e566f5da7..0f8f7494c4c7968edf04eca54ce94402955fa13e 100644 (file)
@@ -19,7 +19,8 @@
  */
 package org.sonar.scanner.repository;
 
-import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
 import javax.annotation.concurrent.Immutable;
@@ -31,7 +32,7 @@ public class MultiModuleProjectRepository extends ProjectRepositories {
 
   public MultiModuleProjectRepository(Map<String, SingleProjectRepository> repositoriesPerModule) {
     super(true);
-    this.repositoriesPerModule = ImmutableMap.copyOf(repositoriesPerModule);
+    this.repositoriesPerModule = Collections.unmodifiableMap(new HashMap<>(repositoriesPerModule));
   }
 
   @CheckForNull
index bc0bc325a5b159807b1583801b8c05eff75b10fb..13af495ecd7f298309cc4702357facb00a8ba31b 100644 (file)
@@ -19,7 +19,8 @@
  */
 package org.sonar.scanner.repository;
 
-import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
 import javax.annotation.concurrent.Immutable;
@@ -27,16 +28,16 @@ import javax.annotation.concurrent.Immutable;
 @Immutable
 public class SingleProjectRepository extends ProjectRepositories {
 
-  private final ImmutableMap<String, FileData> fileDataByPath;
+  private final Map<String, FileData> fileDataByPath;
 
   public SingleProjectRepository() {
     super(false);
-    this.fileDataByPath = ImmutableMap.<String, FileData>builder().build();
+    this.fileDataByPath = Collections.emptyMap();
   }
 
   public SingleProjectRepository(Map<String, FileData> fileDataByPath) {
     super(true);
-    this.fileDataByPath = ImmutableMap.copyOf(fileDataByPath);
+    this.fileDataByPath = Collections.unmodifiableMap(new HashMap<>(fileDataByPath));
   }
 
   @CheckForNull
index 795a217b5a1e82ce7d3702b97a71736dab7769b8..69b83e98f3c4feb8bc577e93bd5b7b10c6cad28c 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.repository.settings;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
@@ -31,11 +30,11 @@ import java.util.Map;
 import java.util.stream.Collectors;
 import javax.annotation.Nullable;
 import org.apache.commons.lang.StringEscapeUtils;
+import org.sonar.api.impl.utils.ScannerUtils;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
 import org.sonar.api.utils.log.Profiler;
 import org.sonar.scanner.bootstrap.DefaultScannerWsClient;
-import org.sonar.api.impl.utils.ScannerUtils;
 import org.sonarqube.ws.Settings;
 import org.sonarqube.ws.client.GetRequest;
 import org.sonarqube.ws.client.HttpException;
@@ -72,7 +71,6 @@ public abstract class AbstractSettingsLoader {
     }
   }
 
-  @VisibleForTesting
   static Map<String, String> toMap(List<Settings.Setting> settingsList) {
     Map<String, String> result = new LinkedHashMap<>();
     for (Settings.Setting s : settingsList) {
index 26b476e82c14a5d34aa5739f0c5297c7ccdf23f3..660ae686d223a34321423d35fd7de4c0207a79fd 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.rule;
 
-import com.google.common.annotations.VisibleForTesting;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.scanner.scan.filesystem.InputComponentStore;
@@ -40,7 +39,6 @@ public class QProfileVerifier {
     execute(LOG);
   }
 
-  @VisibleForTesting
   void execute(Logger logger) {
     for (String lang : store.languages()) {
       QProfile profile = profiles.findByLanguage(lang);
index e15525df2d2472c402d96ef704602febb2767281..da610c5ac341cb1c06f05d8c0eccd132c43fbabe 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.scan;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.io.File;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -40,6 +39,7 @@ import org.apache.commons.lang.StringUtils;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.batch.bootstrap.ProjectDefinition;
 import org.sonar.api.batch.bootstrap.ProjectReactor;
+import org.sonar.api.impl.utils.ScannerUtils;
 import org.sonar.api.notifications.AnalysisWarnings;
 import org.sonar.api.utils.MessageException;
 import org.sonar.api.utils.log.Logger;
@@ -49,7 +49,6 @@ import org.sonar.core.config.IssueExclusionProperties;
 import org.sonar.scanner.bootstrap.ProcessedScannerProperties;
 import org.sonar.scanner.issue.ignore.pattern.IssueExclusionPatternInitializer;
 import org.sonar.scanner.issue.ignore.pattern.IssueInclusionPatternInitializer;
-import org.sonar.api.impl.utils.ScannerUtils;
 
 import static java.util.Arrays.asList;
 import static java.util.stream.Collectors.toList;
@@ -209,7 +208,6 @@ public class ProjectReactorBuilder {
     }
   }
 
-  @VisibleForTesting
   protected File initRootProjectWorkDir(File baseDir, Map<String, String> rootProperties) {
     String workDir = rootProperties.get(CoreProperties.WORKING_DIRECTORY);
     if (StringUtils.isBlank(workDir)) {
@@ -223,7 +221,6 @@ public class ProjectReactorBuilder {
     return new File(baseDir, customWorkDir.getPath());
   }
 
-  @VisibleForTesting
   protected File initModuleWorkDir(File moduleBaseDir, Map<String, String> moduleProperties) {
     String workDir = moduleProperties.get(CoreProperties.WORKING_DIRECTORY);
     if (StringUtils.isBlank(workDir)) {
@@ -289,7 +286,6 @@ public class ProjectReactorBuilder {
     return createModuleDefinition(moduleProps, parentProject);
   }
 
-  @VisibleForTesting
   protected static void setModuleKeyAndNameIfNotDefined(Map<String, String> childProps, String moduleId, String parentKey) {
     if (!childProps.containsKey(MODULE_KEY_PROPERTY)) {
       if (!childProps.containsKey(CoreProperties.PROJECT_KEY_PROPERTY)) {
@@ -306,7 +302,6 @@ public class ProjectReactorBuilder {
     childProps.put(CoreProperties.PROJECT_KEY_PROPERTY, childProps.get(MODULE_KEY_PROPERTY));
   }
 
-  @VisibleForTesting
   protected static void checkUniquenessOfChildKey(ProjectDefinition childProject, ProjectDefinition parentProject) {
     for (ProjectDefinition definition : parentProject.getSubProjects()) {
       if (definition.getKey().equals(childProject.getKey())) {
@@ -322,7 +317,6 @@ public class ProjectReactorBuilder {
     childProps.put(PROPERTY_PROJECT_BASEDIR, baseDir.getAbsolutePath());
   }
 
-  @VisibleForTesting
   protected static void checkMandatoryProperties(Map<String, String> props, String[] mandatoryProps) {
     StringBuilder missing = new StringBuilder();
     for (String mandatoryProperty : mandatoryProps) {
@@ -349,7 +343,6 @@ public class ProjectReactorBuilder {
     }
   }
 
-  @VisibleForTesting
   protected static void cleanAndCheckProjectDefinitions(ProjectDefinition project) {
     if (project.getSubProjects().isEmpty()) {
       cleanAndCheckModuleProperties(project);
@@ -380,7 +373,6 @@ public class ProjectReactorBuilder {
     }
   }
 
-  @VisibleForTesting
   protected static void cleanAndCheckModuleProperties(ProjectDefinition project) {
     Map<String, String> properties = project.properties();
 
@@ -389,7 +381,6 @@ public class ProjectReactorBuilder {
     checkExistenceOfPaths(project.getKey(), project.getBaseDir(), sourcePaths, PROPERTY_SOURCES);
   }
 
-  @VisibleForTesting
   protected static void mergeParentProperties(Map<String, String> childProps, Map<String, String> parentProps) {
     for (Map.Entry<String, String> entry : parentProps.entrySet()) {
       String key = entry.getKey();
@@ -400,7 +391,6 @@ public class ProjectReactorBuilder {
     }
   }
 
-  @VisibleForTesting
   protected static void checkExistenceOfPaths(String moduleRef, File baseDir, String[] paths, String propName) {
     for (String path : paths) {
       File sourceFolder = resolvePath(baseDir, path);
index 3fd76637dd51faa5e5a8b773544d4d81eac26a53..0f0d81d1b8d08a9c2adb8570a3908472682096d3 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.scan;
 
-import com.google.common.annotations.VisibleForTesting;
 import javax.annotation.Nullable;
 import org.sonar.api.SonarEdition;
 import org.sonar.api.SonarRuntime;
@@ -309,7 +308,6 @@ public class ProjectScanContainer extends ComponentContainer {
       .install(this, getScannerProjectExtensionsFilter());
   }
 
-  @VisibleForTesting
   static ExtensionMatcher getScannerProjectExtensionsFilter() {
     return extension -> {
       if (isDeprecatedScannerSide(extension)) {
@@ -395,7 +393,6 @@ public class ProjectScanContainer extends ComponentContainer {
     scan(module);
   }
 
-  @VisibleForTesting
   void scan(DefaultInputModule module) {
     new ModuleScanContainer(this, module).execute();
   }
index 2892b2cae55e0c86b9912023ecf8f5c1acc0addb..1933db604ec48a30e6aacf6aab86b3827b83abfb 100644 (file)
@@ -19,7 +19,8 @@
  */
 package org.sonar.scanner.scan;
 
-import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import javax.annotation.concurrent.Immutable;
 
@@ -32,11 +33,11 @@ public class ProjectServerSettings {
   private final Map<String, String> properties;
 
   public ProjectServerSettings(Map<String, String> properties) {
-    this.properties = properties;
+    this.properties = Collections.unmodifiableMap(new HashMap<>(properties));
   }
 
   public Map<String, String> properties() {
-    return ImmutableMap.copyOf(properties);
+    return properties;
   }
 
   public String property(String key) {
index 3792a52e8a2f36dc1e50a89bb6828ae9d43f6769..de87c63286b9175bc06eacfab17145d245b13b5d 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.scan.filesystem;
 
-import com.google.common.annotations.VisibleForTesting;
 import org.sonar.api.impl.fs.DefaultFileSystem;
 import org.sonar.api.impl.fs.DefaultInputModule;
 import org.sonar.api.impl.fs.predicates.DefaultFilePredicates;
@@ -31,7 +30,6 @@ public class DefaultModuleFileSystem extends DefaultFileSystem {
     initFields(module);
   }
 
-  @VisibleForTesting
   public DefaultModuleFileSystem(DefaultInputModule module) {
     super(module.getBaseDir());
     initFields(module);
index d7892ce887be2f4aba0d8ad8d75f3dc83b49d822..d04ee42d47d0cb828f2f735ef41ef0abe5e3acc3 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.scan.filesystem;
 
-import com.google.common.annotations.VisibleForTesting;
 import org.sonar.api.impl.fs.DefaultFileSystem;
 import org.sonar.api.impl.fs.DefaultInputProject;
 import org.sonar.api.impl.fs.predicates.DefaultFilePredicates;
@@ -31,7 +30,6 @@ public class DefaultProjectFileSystem extends DefaultFileSystem {
     setFields(project);
   }
 
-  @VisibleForTesting
   public DefaultProjectFileSystem(DefaultInputProject project) {
     super(project.getBaseDir());
     setFields(project);
index c15c9cdb5c6a638b76d55a1e76e93a3ca6b46087..9954b92eee0cb756066e8259ba1d880b93c376b1 100644 (file)
  */
 package org.sonar.scanner.scan.filesystem;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.io.InputStream;
 import java.nio.charset.Charset;
 import org.sonar.api.batch.fs.InputFile.Type;
+import org.sonar.api.impl.fs.DefaultInputFile;
+import org.sonar.api.impl.fs.FileMetadata;
 import org.sonar.api.impl.fs.Metadata;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
-import org.sonar.api.impl.fs.DefaultInputFile;
-import org.sonar.api.impl.fs.FileMetadata;
 import org.sonar.scanner.issue.ignore.scanner.IssueExclusionsLoader;
 
 public class MetadataGenerator {
   private static final Logger LOG = Loggers.get(MetadataGenerator.class);
-  @VisibleForTesting
   static final Charset UTF_32BE = Charset.forName("UTF-32BE");
 
-  @VisibleForTesting
   static final Charset UTF_32LE = Charset.forName("UTF-32LE");
 
   private final StatusDetection statusDetection;
index b0e23ba7e0a1df2e7254fe21f277af3eee217af5..5176dd5892c07bb6db2fe13783888318bcbfc89d 100644 (file)
  */
 package org.sonar.scanner.scan.measure;
 
-import com.google.common.collect.Lists;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-
 import javax.annotation.concurrent.ThreadSafe;
-
 import org.sonar.api.batch.measure.Metric;
 import org.sonar.api.batch.measure.MetricFinder;
 import org.sonar.scanner.repository.MetricsRepository;
@@ -53,7 +51,7 @@ public class DefaultMetricFinder implements MetricFinder {
 
   @Override
   public Collection<Metric<Serializable>> findAll(List<String> metricKeys) {
-    List<Metric<Serializable>> result = Lists.newLinkedList();
+    List<Metric<Serializable>> result = new ArrayList<>();
     for (String metricKey : metricKeys) {
       Metric<Serializable> metric = findByKey(metricKey);
       if (metric != null) {
index 885de1be663e256cddde862ea9744422ab330b95..8049abe2532291146ea59b1337a3cdd081835051 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.scanner.scm;
 
-import com.google.common.base.Preconditions;
 import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -32,14 +31,16 @@ import org.apache.commons.lang.StringUtils;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.scm.BlameCommand.BlameOutput;
 import org.sonar.api.batch.scm.BlameLine;
+import org.sonar.api.impl.fs.DefaultInputFile;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
-import org.sonar.api.impl.fs.DefaultInputFile;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.scanner.protocol.output.ScannerReport.Changesets.Builder;
 import org.sonar.scanner.protocol.output.ScannerReportWriter;
 import org.sonar.scanner.util.ProgressReport;
 
+import static org.sonar.api.utils.Preconditions.checkArgument;
+
 class DefaultBlameOutput implements BlameOutput {
 
   private static final Logger LOG = Loggers.get(DefaultBlameOutput.class);
@@ -61,9 +62,9 @@ class DefaultBlameOutput implements BlameOutput {
 
   @Override
   public synchronized void blameResult(InputFile file, List<BlameLine> lines) {
-    Preconditions.checkNotNull(file);
-    Preconditions.checkNotNull(lines);
-    Preconditions.checkArgument(allFilesToBlame.contains(file), "It was not expected to blame file %s", file);
+    checkNotNull(file);
+    checkNotNull(lines);
+    checkArgument(allFilesToBlame.contains(file), "It was not expected to blame file %s", file);
 
     if (lines.size() != file.lines()) {
       LOG.debug("Ignoring blame result since provider returned {} blame lines but file {} has {} lines", lines.size(), file, file.lines());
@@ -94,8 +95,8 @@ class DefaultBlameOutput implements BlameOutput {
   }
 
   private static void validateLine(BlameLine line, int lineId, InputFile file) {
-    Preconditions.checkArgument(StringUtils.isNotBlank(line.revision()), "Blame revision is blank for file %s at line %s", file, lineId);
-    Preconditions.checkArgument(line.date() != null, "Blame date is null for file %s at line %s", file, lineId);
+    checkArgument(StringUtils.isNotBlank(line.revision()), "Blame revision is blank for file %s at line %s", file, lineId);
+    checkArgument(line.date() != null, "Blame date is null for file %s at line %s", file, lineId);
   }
 
   private static void addChangeset(Builder scmBuilder, BlameLine line) {
@@ -116,6 +117,12 @@ class DefaultBlameOutput implements BlameOutput {
     return inputString.toLowerCase(Locale.US);
   }
 
+  private static void checkNotNull(@Nullable Object obj) {
+    if (obj == null) {
+      throw new NullPointerException();
+    }
+  }
+
   public void finish(boolean success) {
     progressReport.stop(count + "/" + total + " files analyzed");
     if (success && !allFilesToBlame.isEmpty()) {