@ComputeEngineSide @ExtensionPoint public interface MeasureComputer
Metrics.
 This interface replaces the deprecated class org.sonar.api.batch.Decorator.
 public class MyMeasureComputer implements MeasureComputer {
    @Override
   public MeasureComputerDefinition define(MeasureComputerDefinitionContext defContext) {
     return defContext.newDefinitionBuilder()
     // Input metrics can be empty, for instance if only issues will be read
     .setInputMetrics("ncloc")
     // Output metrics must contains at least one metric
     .setOutputMetrics("my_new_metric")
     .build();
   }
    @Override
   public void compute(MeasureComputerContext context) {
     int ncloc = context.getMeasure("ncloc");
     List<Issue> issues = context.getIssues();
     if (ncloc != null && !issues.isEmpty()) {
       double value = issues.size() / ncloc;
       context.addMeasure("my_new_metric", value);
     }
   }
 }
 
 
 public class MyMeasureComputerTest {
   MyMeasureComputer underTest = new MyMeasureComputer();
    @Test
   public void test_definition() {
     TestMeasureComputerDefinitionContext defContext = new TestMeasureComputerDefinitionContext();
     MeasureComputerDefinition def = underTest.define(defContext);
     assertThat(def).isNotNull();
     assertThat(def.getInputMetrics()).containsOnly("ncloc");
     assertThat(def.getOutputMetrics()).containsOnly("my_new_metric");
   }
    @Test
   public void sum_ncloc_and_issues() {
     TestMeasureComputerContext context = new TestMeasureComputerContext(underTest);
     context.addMeasure("ncloc", 2);
     context.setIssues(Arrays.asList(new TestIssue.Builder().setKey("ABCD").build()));
     underTest.compute(context);
     assertThat(context.getMeasureValue("my_new_metric")).isEqualTo(0.5);
   }
 | Modifier and Type | Interface and Description | 
|---|---|
| static interface  | MeasureComputer.MeasureComputerContextContext specific to the computation of the measure(s) of a given component | 
| static interface  | MeasureComputer.MeasureComputerDefinition | 
| static interface  | MeasureComputer.MeasureComputerDefinitionContextContext specific to the definition of the measure computer | 
| Modifier and Type | Method and Description | 
|---|---|
| void | compute(MeasureComputer.MeasureComputerContext context)This method will be called on each component of the projects. | 
| MeasureComputer.MeasureComputerDefinition | define(MeasureComputer.MeasureComputerDefinitionContext defContext)Use to define which metrics are required to compute some measures on some given metrics | 
MeasureComputer.MeasureComputerDefinition define(MeasureComputer.MeasureComputerDefinitionContext defContext)
void compute(MeasureComputer.MeasureComputerContext context)
Copyright © 2009–2016 SonarSource. All rights reserved.