package com.pablissimo.sonar; import java.util.Map; import java.util.Set; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.Sensor; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; public class CombinedCoverageSensor implements Sensor { private LOCSensor locSensor; private TsCoverageSensor coverageSensor; public CombinedCoverageSensor(LOCSensor locSensor, TsCoverageSensor coverageSensor) { this.locSensor = locSensor; this.coverageSensor = coverageSensor; } @Override public void describe(SensorDescriptor descriptor) { descriptor.name("Combined LCOV and LOC sensor"); descriptor.onlyOnLanguage(TypeScriptLanguage.LANGUAGE_KEY); } @Override public void execute(SensorContext context) { // First - LOC everything up, as we'll need LOC for uncovered lines metrics Map<InputFile, Set<Integer>> nonCommentLinesByFile = this.locSensor.execute(context); // Now the LCOV pass can properly handle files that don't appear in // configuration and set lines-to-cover values as required this.coverageSensor.execute(context, nonCommentLinesByFile); } }