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));
}
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);
}
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();
}
Aggregations