]> source.dussan.org Git - sonarqube.git/commitdiff
renamed BatchMetrics to ScannerMetrics
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Tue, 29 Mar 2016 09:19:57 +0000 (11:19 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Tue, 29 Mar 2016 11:06:51 +0000 (13:06 +0200)
server/sonar-server/src/main/java/org/sonar/server/computation/metric/MetricModule.java
server/sonar-server/src/main/java/org/sonar/server/computation/metric/ReportMetricValidatorImpl.java
server/sonar-server/src/test/java/org/sonar/server/computation/metric/ReportMetricValidatorImplTest.java
sonar-core/src/main/java/org/sonar/core/metric/BatchMetrics.java [deleted file]
sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java [new file with mode: 0644]
sonar-core/src/test/java/org/sonar/core/metric/BatchMetricsTest.java [deleted file]
sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java [new file with mode: 0644]
sonar-scanner-engine/src/main/java/org/sonar/batch/report/MeasuresPublisher.java
sonar-scanner-engine/src/main/java/org/sonar/batch/scan/ProjectScanContainer.java
sonar-scanner-engine/src/test/java/org/sonar/batch/report/MeasuresPublisherTest.java

index 29ff696761ea3801e72021728a85d83f1272dbbd..b93bebbce54039c23d53414d206d7e89f27caf89 100644 (file)
  */
 package org.sonar.server.computation.metric;
 
-import org.sonar.core.metric.BatchMetrics;
+import org.sonar.core.metric.ScannerMetrics;
 import org.sonar.core.platform.Module;
 
 public class MetricModule extends Module {
   @Override
   protected void configureModule() {
     add(
-      BatchMetrics.class,
+      ScannerMetrics.class,
       ReportMetricValidatorImpl.class,
       MetricRepositoryImpl.class);
   }
index 1bf876643875b8298f1664af4701e6b13e3c3743..8d94d329fd2c5184d287d85e4cbcb3ed4d9701c4 100644 (file)
@@ -28,7 +28,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
-import org.sonar.core.metric.BatchMetrics;
+import org.sonar.core.metric.ScannerMetrics;
 
 public class ReportMetricValidatorImpl implements ReportMetricValidator {
 
@@ -37,8 +37,8 @@ public class ReportMetricValidatorImpl implements ReportMetricValidator {
   private Map<String, org.sonar.api.measures.Metric> metricByKey;
   private Set<String> alreadyLoggedMetricKeys = new HashSet<>();
 
-  public ReportMetricValidatorImpl(BatchMetrics batchMetrics) {
-    this.metricByKey = FluentIterable.from(batchMetrics.getMetrics()).uniqueIndex(MetricToKey.INSTANCE);
+  public ReportMetricValidatorImpl(ScannerMetrics scannerMetrics) {
+    this.metricByKey = FluentIterable.from(scannerMetrics.getMetrics()).uniqueIndex(MetricToKey.INSTANCE);
   }
 
   @Override
index b4fce0e16435b442602bfe7bb011f8b9592d4bd6..5c6bcf72f3f76039552731bfd3a82f4ec47ab8ac 100644 (file)
@@ -26,7 +26,7 @@ import org.junit.Test;
 import org.sonar.api.measures.Metric;
 import org.sonar.api.utils.log.LogTester;
 import org.sonar.api.utils.log.LoggerLevel;
-import org.sonar.core.metric.BatchMetrics;
+import org.sonar.core.metric.ScannerMetrics;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
@@ -41,12 +41,12 @@ public class ReportMetricValidatorImplTest {
 
   static final String METRIC_KEY = "metric_key";
 
-  BatchMetrics batchMetrics = mock(BatchMetrics.class);
+  ScannerMetrics scannerMetrics = mock(ScannerMetrics.class);
 
   @Test
   public void validate_metric() throws Exception {
-    when(batchMetrics.getMetrics()).thenReturn(ImmutableSet.<Metric>of(new Builder(METRIC_KEY, "name", ValueType.INT).create()));
-    ReportMetricValidator validator = new ReportMetricValidatorImpl(batchMetrics);
+    when(scannerMetrics.getMetrics()).thenReturn(ImmutableSet.<Metric>of(new Builder(METRIC_KEY, "name", ValueType.INT).create()));
+    ReportMetricValidator validator = new ReportMetricValidatorImpl(scannerMetrics);
 
     assertThat(validator.validate(METRIC_KEY)).isTrue();
     assertThat(logTester.logs()).isEmpty();
@@ -54,8 +54,8 @@ public class ReportMetricValidatorImplTest {
 
   @Test
   public void not_validate_metric() throws Exception {
-    when(batchMetrics.getMetrics()).thenReturn(Collections.<Metric>emptySet());
-    ReportMetricValidator validator = new ReportMetricValidatorImpl(batchMetrics);
+    when(scannerMetrics.getMetrics()).thenReturn(Collections.<Metric>emptySet());
+    ReportMetricValidator validator = new ReportMetricValidatorImpl(scannerMetrics);
 
     assertThat(validator.validate(METRIC_KEY)).isFalse();
     assertThat(logTester.logs()).containsOnly("The metric 'metric_key' is ignored and should not be send in the batch report");
@@ -63,8 +63,8 @@ public class ReportMetricValidatorImplTest {
 
   @Test
   public void not_generate_new_log_when_validating_twice_the_same_metric() throws Exception {
-    when(batchMetrics.getMetrics()).thenReturn(Collections.<Metric>emptySet());
-    ReportMetricValidator validator = new ReportMetricValidatorImpl(batchMetrics);
+    when(scannerMetrics.getMetrics()).thenReturn(Collections.<Metric>emptySet());
+    ReportMetricValidator validator = new ReportMetricValidatorImpl(scannerMetrics);
 
     assertThat(validator.validate(METRIC_KEY)).isFalse();
     assertThat(logTester.logs()).hasSize(1);
diff --git a/sonar-core/src/main/java/org/sonar/core/metric/BatchMetrics.java b/sonar-core/src/main/java/org/sonar/core/metric/BatchMetrics.java
deleted file mode 100644 (file)
index fbe8fb1..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.core.metric;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import java.util.List;
-import java.util.Set;
-import javax.annotation.Nullable;
-import org.sonar.api.batch.BatchSide;
-import org.sonar.api.measures.Metric;
-import org.sonar.api.measures.Metrics;
-import org.sonar.api.ce.ComputeEngineSide;
-
-import static com.google.common.collect.FluentIterable.from;
-import static java.util.Arrays.asList;
-import static org.sonar.api.measures.CoreMetrics.ACCESSORS;
-import static org.sonar.api.measures.CoreMetrics.CLASSES;
-import static org.sonar.api.measures.CoreMetrics.COMMENTED_OUT_CODE_LINES;
-import static org.sonar.api.measures.CoreMetrics.COMMENT_LINES;
-import static org.sonar.api.measures.CoreMetrics.COMMENT_LINES_DATA;
-import static org.sonar.api.measures.CoreMetrics.COMPLEXITY;
-import static org.sonar.api.measures.CoreMetrics.COMPLEXITY_IN_CLASSES;
-import static org.sonar.api.measures.CoreMetrics.COMPLEXITY_IN_FUNCTIONS;
-import static org.sonar.api.measures.CoreMetrics.CONDITIONS_BY_LINE;
-import static org.sonar.api.measures.CoreMetrics.CONDITIONS_TO_COVER;
-import static org.sonar.api.measures.CoreMetrics.COVERAGE_LINE_HITS_DATA;
-import static org.sonar.api.measures.CoreMetrics.COVERED_CONDITIONS_BY_LINE;
-import static org.sonar.api.measures.CoreMetrics.DIRECTORIES;
-import static org.sonar.api.measures.CoreMetrics.FILES;
-import static org.sonar.api.measures.CoreMetrics.FILE_COMPLEXITY_DISTRIBUTION;
-import static org.sonar.api.measures.CoreMetrics.FUNCTIONS;
-import static org.sonar.api.measures.CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION;
-import static org.sonar.api.measures.CoreMetrics.GENERATED_LINES;
-import static org.sonar.api.measures.CoreMetrics.GENERATED_NCLOC;
-import static org.sonar.api.measures.CoreMetrics.IT_CONDITIONS_BY_LINE;
-import static org.sonar.api.measures.CoreMetrics.IT_CONDITIONS_TO_COVER;
-import static org.sonar.api.measures.CoreMetrics.IT_COVERAGE_LINE_HITS_DATA;
-import static org.sonar.api.measures.CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE;
-import static org.sonar.api.measures.CoreMetrics.IT_LINES_TO_COVER;
-import static org.sonar.api.measures.CoreMetrics.IT_UNCOVERED_CONDITIONS;
-import static org.sonar.api.measures.CoreMetrics.IT_UNCOVERED_LINES;
-import static org.sonar.api.measures.CoreMetrics.LINES;
-import static org.sonar.api.measures.CoreMetrics.LINES_TO_COVER;
-import static org.sonar.api.measures.CoreMetrics.NCLOC;
-import static org.sonar.api.measures.CoreMetrics.NCLOC_DATA;
-import static org.sonar.api.measures.CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION;
-import static org.sonar.api.measures.CoreMetrics.OVERALL_CONDITIONS_BY_LINE;
-import static org.sonar.api.measures.CoreMetrics.OVERALL_CONDITIONS_TO_COVER;
-import static org.sonar.api.measures.CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA;
-import static org.sonar.api.measures.CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE;
-import static org.sonar.api.measures.CoreMetrics.OVERALL_LINES_TO_COVER;
-import static org.sonar.api.measures.CoreMetrics.OVERALL_UNCOVERED_CONDITIONS;
-import static org.sonar.api.measures.CoreMetrics.OVERALL_UNCOVERED_LINES;
-import static org.sonar.api.measures.CoreMetrics.PUBLIC_API;
-import static org.sonar.api.measures.CoreMetrics.PUBLIC_UNDOCUMENTED_API;
-import static org.sonar.api.measures.CoreMetrics.SKIPPED_TESTS;
-import static org.sonar.api.measures.CoreMetrics.STATEMENTS;
-import static org.sonar.api.measures.CoreMetrics.TESTS;
-import static org.sonar.api.measures.CoreMetrics.TEST_ERRORS;
-import static org.sonar.api.measures.CoreMetrics.TEST_EXECUTION_TIME;
-import static org.sonar.api.measures.CoreMetrics.TEST_FAILURES;
-import static org.sonar.api.measures.CoreMetrics.UNCOVERED_CONDITIONS;
-import static org.sonar.api.measures.CoreMetrics.UNCOVERED_LINES;
-
-/**
- * This class is used to know the list of metrics that can be sent in the batch report.
- * <p/>
- * The batch should not send other metrics, and the Compute Engine should not allow other metrics.
- */
-@ComputeEngineSide
-@BatchSide
-public class BatchMetrics {
-
-  private static final Set<Metric> ALLOWED_CORE_METRICS = ImmutableSet.<Metric>of(
-    LINES,
-    GENERATED_LINES,
-    NCLOC,
-    NCLOC_DATA,
-    GENERATED_NCLOC,
-    COMMENT_LINES,
-    COMMENT_LINES_DATA,
-    NCLOC_LANGUAGE_DISTRIBUTION,
-    COMMENTED_OUT_CODE_LINES,
-
-    PUBLIC_API,
-    PUBLIC_UNDOCUMENTED_API,
-
-    FILES,
-    DIRECTORIES,
-    CLASSES,
-    FUNCTIONS,
-    STATEMENTS,
-    ACCESSORS,
-
-    COMPLEXITY,
-    COMPLEXITY_IN_CLASSES,
-    COMPLEXITY_IN_FUNCTIONS,
-    FILE_COMPLEXITY_DISTRIBUTION,
-    FUNCTION_COMPLEXITY_DISTRIBUTION,
-
-    TESTS,
-    SKIPPED_TESTS,
-    TEST_ERRORS,
-    TEST_FAILURES,
-    TEST_EXECUTION_TIME,
-
-    LINES_TO_COVER,
-    UNCOVERED_LINES,
-    COVERAGE_LINE_HITS_DATA,
-    CONDITIONS_TO_COVER,
-    UNCOVERED_CONDITIONS,
-    COVERED_CONDITIONS_BY_LINE,
-    CONDITIONS_BY_LINE,
-
-    IT_LINES_TO_COVER,
-    IT_UNCOVERED_LINES,
-    IT_COVERAGE_LINE_HITS_DATA,
-    IT_CONDITIONS_TO_COVER,
-    IT_UNCOVERED_CONDITIONS,
-    IT_COVERED_CONDITIONS_BY_LINE,
-    IT_CONDITIONS_BY_LINE,
-
-    OVERALL_LINES_TO_COVER,
-    OVERALL_UNCOVERED_LINES,
-    OVERALL_COVERAGE_LINE_HITS_DATA,
-    OVERALL_CONDITIONS_TO_COVER,
-    OVERALL_UNCOVERED_CONDITIONS,
-    OVERALL_COVERED_CONDITIONS_BY_LINE,
-    OVERALL_CONDITIONS_BY_LINE);
-
-  private final Set<Metric> metrics;
-
-  public BatchMetrics() {
-    this.metrics = ALLOWED_CORE_METRICS;
-  }
-
-  public BatchMetrics(Metrics[] metricsRepositories) {
-    this.metrics = ImmutableSet.copyOf(Iterables.concat(getPluginMetrics(metricsRepositories), ALLOWED_CORE_METRICS));
-  }
-
-  public Set<Metric> getMetrics() {
-    return metrics;
-  }
-
-  private static Iterable<Metric> getPluginMetrics(Metrics[] metricsRepositories) {
-    return from(asList(metricsRepositories)).transformAndConcat(FlattenMetrics.INSTANCE);
-  }
-
-  private enum FlattenMetrics implements Function<Metrics, List<Metric>> {
-    INSTANCE;
-
-    @Nullable
-    @Override
-    public List<Metric> apply(Metrics input) {
-      return input.getMetrics();
-    }
-  }
-}
diff --git a/sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java b/sonar-core/src/main/java/org/sonar/core/metric/ScannerMetrics.java
new file mode 100644 (file)
index 0000000..05bcb7a
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.core.metric;
+
+import com.google.common.base.Function;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import java.util.List;
+import java.util.Set;
+import javax.annotation.Nullable;
+import org.sonar.api.batch.BatchSide;
+import org.sonar.api.measures.Metric;
+import org.sonar.api.measures.Metrics;
+import org.sonar.api.ce.ComputeEngineSide;
+
+import static com.google.common.collect.FluentIterable.from;
+import static java.util.Arrays.asList;
+import static org.sonar.api.measures.CoreMetrics.ACCESSORS;
+import static org.sonar.api.measures.CoreMetrics.CLASSES;
+import static org.sonar.api.measures.CoreMetrics.COMMENTED_OUT_CODE_LINES;
+import static org.sonar.api.measures.CoreMetrics.COMMENT_LINES;
+import static org.sonar.api.measures.CoreMetrics.COMMENT_LINES_DATA;
+import static org.sonar.api.measures.CoreMetrics.COMPLEXITY;
+import static org.sonar.api.measures.CoreMetrics.COMPLEXITY_IN_CLASSES;
+import static org.sonar.api.measures.CoreMetrics.COMPLEXITY_IN_FUNCTIONS;
+import static org.sonar.api.measures.CoreMetrics.CONDITIONS_BY_LINE;
+import static org.sonar.api.measures.CoreMetrics.CONDITIONS_TO_COVER;
+import static org.sonar.api.measures.CoreMetrics.COVERAGE_LINE_HITS_DATA;
+import static org.sonar.api.measures.CoreMetrics.COVERED_CONDITIONS_BY_LINE;
+import static org.sonar.api.measures.CoreMetrics.DIRECTORIES;
+import static org.sonar.api.measures.CoreMetrics.FILES;
+import static org.sonar.api.measures.CoreMetrics.FILE_COMPLEXITY_DISTRIBUTION;
+import static org.sonar.api.measures.CoreMetrics.FUNCTIONS;
+import static org.sonar.api.measures.CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION;
+import static org.sonar.api.measures.CoreMetrics.GENERATED_LINES;
+import static org.sonar.api.measures.CoreMetrics.GENERATED_NCLOC;
+import static org.sonar.api.measures.CoreMetrics.IT_CONDITIONS_BY_LINE;
+import static org.sonar.api.measures.CoreMetrics.IT_CONDITIONS_TO_COVER;
+import static org.sonar.api.measures.CoreMetrics.IT_COVERAGE_LINE_HITS_DATA;
+import static org.sonar.api.measures.CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE;
+import static org.sonar.api.measures.CoreMetrics.IT_LINES_TO_COVER;
+import static org.sonar.api.measures.CoreMetrics.IT_UNCOVERED_CONDITIONS;
+import static org.sonar.api.measures.CoreMetrics.IT_UNCOVERED_LINES;
+import static org.sonar.api.measures.CoreMetrics.LINES;
+import static org.sonar.api.measures.CoreMetrics.LINES_TO_COVER;
+import static org.sonar.api.measures.CoreMetrics.NCLOC;
+import static org.sonar.api.measures.CoreMetrics.NCLOC_DATA;
+import static org.sonar.api.measures.CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION;
+import static org.sonar.api.measures.CoreMetrics.OVERALL_CONDITIONS_BY_LINE;
+import static org.sonar.api.measures.CoreMetrics.OVERALL_CONDITIONS_TO_COVER;
+import static org.sonar.api.measures.CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA;
+import static org.sonar.api.measures.CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE;
+import static org.sonar.api.measures.CoreMetrics.OVERALL_LINES_TO_COVER;
+import static org.sonar.api.measures.CoreMetrics.OVERALL_UNCOVERED_CONDITIONS;
+import static org.sonar.api.measures.CoreMetrics.OVERALL_UNCOVERED_LINES;
+import static org.sonar.api.measures.CoreMetrics.PUBLIC_API;
+import static org.sonar.api.measures.CoreMetrics.PUBLIC_UNDOCUMENTED_API;
+import static org.sonar.api.measures.CoreMetrics.SKIPPED_TESTS;
+import static org.sonar.api.measures.CoreMetrics.STATEMENTS;
+import static org.sonar.api.measures.CoreMetrics.TESTS;
+import static org.sonar.api.measures.CoreMetrics.TEST_ERRORS;
+import static org.sonar.api.measures.CoreMetrics.TEST_EXECUTION_TIME;
+import static org.sonar.api.measures.CoreMetrics.TEST_FAILURES;
+import static org.sonar.api.measures.CoreMetrics.UNCOVERED_CONDITIONS;
+import static org.sonar.api.measures.CoreMetrics.UNCOVERED_LINES;
+
+/**
+ * This class is used to know the list of metrics that can be sent in the analysis report.
+ * <p/>
+ * Scanners should not send other metrics, and the Compute Engine should not allow other metrics.
+ */
+@ComputeEngineSide
+@BatchSide
+public class ScannerMetrics {
+
+  private static final Set<Metric> ALLOWED_CORE_METRICS = ImmutableSet.<Metric>of(
+    LINES,
+    GENERATED_LINES,
+    NCLOC,
+    NCLOC_DATA,
+    GENERATED_NCLOC,
+    COMMENT_LINES,
+    COMMENT_LINES_DATA,
+    NCLOC_LANGUAGE_DISTRIBUTION,
+    COMMENTED_OUT_CODE_LINES,
+
+    PUBLIC_API,
+    PUBLIC_UNDOCUMENTED_API,
+
+    FILES,
+    DIRECTORIES,
+    CLASSES,
+    FUNCTIONS,
+    STATEMENTS,
+    ACCESSORS,
+
+    COMPLEXITY,
+    COMPLEXITY_IN_CLASSES,
+    COMPLEXITY_IN_FUNCTIONS,
+    FILE_COMPLEXITY_DISTRIBUTION,
+    FUNCTION_COMPLEXITY_DISTRIBUTION,
+
+    TESTS,
+    SKIPPED_TESTS,
+    TEST_ERRORS,
+    TEST_FAILURES,
+    TEST_EXECUTION_TIME,
+
+    LINES_TO_COVER,
+    UNCOVERED_LINES,
+    COVERAGE_LINE_HITS_DATA,
+    CONDITIONS_TO_COVER,
+    UNCOVERED_CONDITIONS,
+    COVERED_CONDITIONS_BY_LINE,
+    CONDITIONS_BY_LINE,
+
+    IT_LINES_TO_COVER,
+    IT_UNCOVERED_LINES,
+    IT_COVERAGE_LINE_HITS_DATA,
+    IT_CONDITIONS_TO_COVER,
+    IT_UNCOVERED_CONDITIONS,
+    IT_COVERED_CONDITIONS_BY_LINE,
+    IT_CONDITIONS_BY_LINE,
+
+    OVERALL_LINES_TO_COVER,
+    OVERALL_UNCOVERED_LINES,
+    OVERALL_COVERAGE_LINE_HITS_DATA,
+    OVERALL_CONDITIONS_TO_COVER,
+    OVERALL_UNCOVERED_CONDITIONS,
+    OVERALL_COVERED_CONDITIONS_BY_LINE,
+    OVERALL_CONDITIONS_BY_LINE);
+
+  private final Set<Metric> metrics;
+
+  public ScannerMetrics() {
+    this.metrics = ALLOWED_CORE_METRICS;
+  }
+
+  public ScannerMetrics(Metrics[] metricsRepositories) {
+    this.metrics = ImmutableSet.copyOf(Iterables.concat(getPluginMetrics(metricsRepositories), ALLOWED_CORE_METRICS));
+  }
+
+  public Set<Metric> getMetrics() {
+    return metrics;
+  }
+
+  private static Iterable<Metric> getPluginMetrics(Metrics[] metricsRepositories) {
+    return from(asList(metricsRepositories)).transformAndConcat(FlattenMetrics.INSTANCE);
+  }
+
+  private enum FlattenMetrics implements Function<Metrics, List<Metric>> {
+    INSTANCE;
+
+    @Nullable
+    @Override
+    public List<Metric> apply(Metrics input) {
+      return input.getMetrics();
+    }
+  }
+}
diff --git a/sonar-core/src/test/java/org/sonar/core/metric/BatchMetricsTest.java b/sonar-core/src/test/java/org/sonar/core/metric/BatchMetricsTest.java
deleted file mode 100644 (file)
index d1f0081..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.core.metric;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import java.util.List;
-import org.junit.Test;
-import org.sonar.api.measures.Metric;
-import org.sonar.api.measures.Metrics;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class BatchMetricsTest {
-
-  static final BatchMetrics SENSOR_METRICS_WITHOUT_METRIC_PLUGIN = new BatchMetrics(new Metrics[] {});
-  static final BatchMetrics SENSOR_METRICS_WITH_PLUGIN = new BatchMetrics(new Metrics[] {new FakeMetrics()});
-
-  @Test
-  public void check_number_of_allowed_core_metrics() throws Exception {
-    assertThat(SENSOR_METRICS_WITHOUT_METRIC_PLUGIN.getMetrics()).hasSize(48);
-  }
-
-  @Test
-  public void check_metrics_from_plugin() throws Exception {
-    List<Metric> metrics = newArrayList(SENSOR_METRICS_WITH_PLUGIN.getMetrics());
-    Iterables.removeAll(metrics, SENSOR_METRICS_WITHOUT_METRIC_PLUGIN.getMetrics());
-    assertThat(metrics).hasSize(2);
-  }
-
-  private static class FakeMetrics implements Metrics {
-
-    @Override
-    public List<Metric> getMetrics() {
-      return ImmutableList.<Metric>of(
-        new Metric.Builder("key1", "name1", Metric.ValueType.INT).create(),
-        new Metric.Builder("key2", "name2", Metric.ValueType.FLOAT).create());
-    }
-  }
-}
diff --git a/sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java b/sonar-core/src/test/java/org/sonar/core/metric/ScannerMetricsTest.java
new file mode 100644 (file)
index 0000000..5196fb7
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.core.metric;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import java.util.List;
+import org.junit.Test;
+import org.sonar.api.measures.Metric;
+import org.sonar.api.measures.Metrics;
+
+import static com.google.common.collect.Lists.newArrayList;
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ScannerMetricsTest {
+
+  static final ScannerMetrics SENSOR_METRICS_WITHOUT_METRIC_PLUGIN = new ScannerMetrics(new Metrics[] {});
+  static final ScannerMetrics SENSOR_METRICS_WITH_PLUGIN = new ScannerMetrics(new Metrics[] {new FakeMetrics()});
+
+  @Test
+  public void check_number_of_allowed_core_metrics() throws Exception {
+    assertThat(SENSOR_METRICS_WITHOUT_METRIC_PLUGIN.getMetrics()).hasSize(48);
+  }
+
+  @Test
+  public void check_metrics_from_plugin() throws Exception {
+    List<Metric> metrics = newArrayList(SENSOR_METRICS_WITH_PLUGIN.getMetrics());
+    Iterables.removeAll(metrics, SENSOR_METRICS_WITHOUT_METRIC_PLUGIN.getMetrics());
+    assertThat(metrics).hasSize(2);
+  }
+
+  private static class FakeMetrics implements Metrics {
+
+    @Override
+    public List<Metric> getMetrics() {
+      return ImmutableList.<Metric>of(
+        new Metric.Builder("key1", "name1", Metric.ValueType.INT).create(),
+        new Metric.Builder("key2", "name2", Metric.ValueType.FLOAT).create());
+    }
+  }
+}
index b743a841c988730df4c96130da36fba3c71f618d..c0b03533d6f1c97d17b947f80a0bb9b0bb38f83a 100644 (file)
@@ -29,7 +29,7 @@ import org.sonar.api.measures.Measure;
 import org.sonar.batch.index.BatchComponent;
 import org.sonar.batch.index.BatchComponentCache;
 import org.sonar.batch.scan.measure.MeasureCache;
-import org.sonar.core.metric.BatchMetrics;
+import org.sonar.core.metric.ScannerMetrics;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.scanner.protocol.output.ScannerReport.Measure.BoolValue;
 import org.sonar.scanner.protocol.output.ScannerReport.Measure.DoubleValue;
@@ -125,17 +125,17 @@ public class MeasuresPublisher implements ReportPublisherStep {
 
   private final BatchComponentCache resourceCache;
   private final MeasureCache measureCache;
-  private final BatchMetrics batchMetrics;
+  private final ScannerMetrics scannerMetrics;
 
-  public MeasuresPublisher(BatchComponentCache resourceCache, MeasureCache measureCache, BatchMetrics batchMetrics) {
+  public MeasuresPublisher(BatchComponentCache resourceCache, MeasureCache measureCache, ScannerMetrics scannerMetrics) {
     this.resourceCache = resourceCache;
     this.measureCache = measureCache;
-    this.batchMetrics = batchMetrics;
+    this.scannerMetrics = scannerMetrics;
   }
 
   @Override
   public void publish(ScannerReportWriter writer) {
-    final Set<String> allowedMetricKeys = newHashSet(transform(batchMetrics.getMetrics(), new MetricToKey()));
+    final Set<String> allowedMetricKeys = newHashSet(transform(scannerMetrics.getMetrics(), new MetricToKey()));
     for (final BatchComponent resource : resourceCache.all()) {
       Iterable<Measure> batchMeasures = measureCache.byResource(resource.resource());
       Iterable<org.sonar.scanner.protocol.output.ScannerReport.Measure> reportMeasures = transform(
index 867547e0bddd5050cd7d4ca173d8474e3dcea970..314761fabb4edd08a4f2b2c07e1f4f17977c0505 100644 (file)
@@ -91,7 +91,7 @@ import org.sonar.batch.scan.measure.MeasureCache;
 import org.sonar.batch.source.CodeColorizers;
 import org.sonar.batch.test.TestPlanBuilder;
 import org.sonar.batch.test.TestableBuilder;
-import org.sonar.core.metric.BatchMetrics;
+import org.sonar.core.metric.ScannerMetrics;
 import org.sonar.core.platform.ComponentContainer;
 
 public class ProjectScanContainer extends ComponentContainer {
@@ -197,7 +197,7 @@ public class ProjectScanContainer extends ComponentContainer {
       ProjectSettings.class,
 
       // Report
-      BatchMetrics.class,
+      ScannerMetrics.class,
       ReportPublisher.class,
       AnalysisContextReportPublisher.class,
       MetadataPublisher.class,
index 0c7a29dd377409cf000f8f3156396e8154ac1e2c..268538acff8288f134cb6358bea14f6f6a3a8407 100644 (file)
@@ -34,7 +34,7 @@ import org.sonar.api.resources.Project;
 import org.sonar.api.resources.Resource;
 import org.sonar.batch.index.BatchComponentCache;
 import org.sonar.batch.scan.measure.MeasureCache;
-import org.sonar.core.metric.BatchMetrics;
+import org.sonar.core.metric.ScannerMetrics;
 import org.sonar.core.util.CloseableIterator;
 import org.sonar.scanner.protocol.output.ScannerReport;
 import org.sonar.scanner.protocol.output.ScannerReportReader;
@@ -69,7 +69,7 @@ public class MeasuresPublisherTest {
     resourceCache.add(sampleFile, null);
     measureCache = mock(MeasureCache.class);
     when(measureCache.byResource(any(Resource.class))).thenReturn(Collections.<Measure>emptyList());
-    publisher = new MeasuresPublisher(resourceCache, measureCache, new BatchMetrics());
+    publisher = new MeasuresPublisher(resourceCache, measureCache, new ScannerMetrics());
   }
 
   @Test