Search in sources :

Example 6 with MeasureComputerWrapper

use of org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerWrapper in project sonarqube by SonarSource.

the class MeasureComputersHolderRule method addMeasureComputer.

public void addMeasureComputer(MeasureComputer measureComputer) {
    requireNonNull(measureComputer, "Measure computer cannot be null");
    MeasureComputer.MeasureComputerDefinition definition = measureComputer.define(context);
    this.measureComputers.add(new MeasureComputerWrapper(measureComputer, definition));
}
Also used : MeasureComputerWrapper(org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerWrapper) MeasureComputer(org.sonar.api.ce.measure.MeasureComputer)

Example 7 with MeasureComputerWrapper

use of org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerWrapper in project sonarqube by SonarSource.

the class ReportMeasureComputersVisitorTest method compute_plugin_measure.

@Test
public void compute_plugin_measure() {
    addRawMeasure(FILE_1_REF, NCLOC_KEY, 10);
    addRawMeasure(FILE_1_REF, COMMENT_LINES_KEY, 2);
    addRawMeasure(FILE_2_REF, NCLOC_KEY, 40);
    addRawMeasure(FILE_2_REF, COMMENT_LINES_KEY, 5);
    addRawMeasure(DIRECTORY_REF, NCLOC_KEY, 50);
    addRawMeasure(DIRECTORY_REF, COMMENT_LINES_KEY, 7);
    addRawMeasure(ROOT_REF, NCLOC_KEY, 50);
    addRawMeasure(ROOT_REF, COMMENT_LINES_KEY, 7);
    final MeasureComputer.MeasureComputerDefinition definition = new MeasureComputerDefinitionImpl.BuilderImpl().setInputMetrics(NCLOC_KEY, COMMENT_LINES_KEY).setOutputMetrics(NEW_METRIC_KEY).build();
    measureComputersHolder.setMeasureComputers(newArrayList(new MeasureComputerWrapper(new MeasureComputer() {

        @Override
        public MeasureComputerDefinition define(MeasureComputerDefinitionContext defContext) {
            return definition;
        }

        @Override
        public void compute(MeasureComputerContext context) {
            org.sonar.api.ce.measure.Measure ncloc = context.getMeasure(NCLOC_KEY);
            org.sonar.api.ce.measure.Measure comment = context.getMeasure(COMMENT_LINES_KEY);
            if (ncloc != null && comment != null) {
                context.addMeasure(NEW_METRIC_KEY, ncloc.getIntValue() + comment.getIntValue());
            }
        }
    }, definition)));
    VisitorsCrawler visitorsCrawler = new VisitorsCrawler(Arrays.asList(new MeasureComputersVisitor(metricRepository, measureRepository, null, measureComputersHolder, componentIssuesRepository)));
    visitorsCrawler.visit(ROOT);
    assertAddedRawMeasure(12, FILE_1_REF, NEW_METRIC_KEY);
    assertAddedRawMeasure(45, FILE_2_REF, NEW_METRIC_KEY);
    assertAddedRawMeasure(57, DIRECTORY_REF, NEW_METRIC_KEY);
    assertAddedRawMeasure(57, ROOT_REF, NEW_METRIC_KEY);
}
Also used : MeasureComputer(org.sonar.api.ce.measure.MeasureComputer) MeasureComputerWrapper(org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerWrapper) MeasureComputerDefinitionImpl(org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerDefinitionImpl) VisitorsCrawler(org.sonar.ce.task.projectanalysis.component.VisitorsCrawler) Test(org.junit.Test)

Example 8 with MeasureComputerWrapper

use of org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerWrapper in project sonarqube by SonarSource.

the class LoadMeasureComputersStep method sortComputers.

private static Iterable<MeasureComputerWrapper> sortComputers(List<MeasureComputerWrapper> wrappers) {
    Map<String, MeasureComputerWrapper> computersByOutputMetric = new HashMap<>();
    Map<String, MeasureComputerWrapper> computersByInputMetric = new HashMap<>();
    feedComputersByMetric(wrappers, computersByOutputMetric, computersByInputMetric);
    ToComputerByKey toComputerByOutputMetricKey = new ToComputerByKey(computersByOutputMetric);
    ToComputerByKey toComputerByInputMetricKey = new ToComputerByKey(computersByInputMetric);
    DirectAcyclicGraph dag = new DirectAcyclicGraph();
    for (MeasureComputerWrapper computer : wrappers) {
        dag.add(computer);
        for (MeasureComputerWrapper dependency : getDependencies(computer, toComputerByOutputMetricKey)) {
            dag.add(computer, dependency);
        }
        for (MeasureComputerWrapper generates : getDependents(computer, toComputerByInputMetricKey)) {
            dag.add(generates, computer);
        }
    }
    return dag.sort();
}
Also used : MeasureComputerWrapper(org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerWrapper) HashMap(java.util.HashMap) DirectAcyclicGraph(org.sonar.api.utils.dag.DirectAcyclicGraph)

Aggregations

MeasureComputerWrapper (org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerWrapper)8 Test (org.junit.Test)5 MeasureComputer (org.sonar.api.ce.measure.MeasureComputer)5 ComputationStep (org.sonar.ce.task.step.ComputationStep)2 TestComputationStepContext (org.sonar.ce.task.step.TestComputationStepContext)2 HashMap (java.util.HashMap)1 DirectAcyclicGraph (org.sonar.api.utils.dag.DirectAcyclicGraph)1 MeasureComputerContextImpl (org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerContextImpl)1 MeasureComputerDefinitionImpl (org.sonar.ce.task.projectanalysis.api.measurecomputer.MeasureComputerDefinitionImpl)1 VisitorsCrawler (org.sonar.ce.task.projectanalysis.component.VisitorsCrawler)1