@@ -19,14 +19,14 @@ | |||
*/ | |||
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); | |||
} |
@@ -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 |
@@ -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); |
@@ -82,13 +82,13 @@ 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. | |||
* This class is used to know the list of metrics that can be sent in the analysis report. | |||
* <p/> | |||
* The batch should not send other metrics, and the Compute Engine should not allow other metrics. | |||
* Scanners should not send other metrics, and the Compute Engine should not allow other metrics. | |||
*/ | |||
@ComputeEngineSide | |||
@BatchSide | |||
public class BatchMetrics { | |||
public class ScannerMetrics { | |||
private static final Set<Metric> ALLOWED_CORE_METRICS = ImmutableSet.<Metric>of( | |||
LINES, | |||
@@ -149,11 +149,11 @@ public class BatchMetrics { | |||
private final Set<Metric> metrics; | |||
public BatchMetrics() { | |||
public ScannerMetrics() { | |||
this.metrics = ALLOWED_CORE_METRICS; | |||
} | |||
public BatchMetrics(Metrics[] metricsRepositories) { | |||
public ScannerMetrics(Metrics[] metricsRepositories) { | |||
this.metrics = ImmutableSet.copyOf(Iterables.concat(getPluginMetrics(metricsRepositories), ALLOWED_CORE_METRICS)); | |||
} | |||
@@ -29,10 +29,10 @@ 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 { | |||
public class ScannerMetricsTest { | |||
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()}); | |||
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 { |
@@ -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( |
@@ -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, |
@@ -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 |