@VisibleForTesting void analyze(SensorContext context, FileProvider fileProvider, Coverage coverage) { coverageAggregator.aggregate(wildcardPatternFileProvider, coverage); CoverageMeasuresBuilder coverageMeasureBuilder = CoverageMeasuresBuilder.create(); for (String filePath : coverage.files()) { org.sonar.api.resources.File sonarFile = fileProvider.fromPath(filePath); if (sonarFile != null) { if (coverageConf.languageKey().equals(sonarFile.getLanguage().getKey())) { coverageMeasureBuilder.reset(); for (Map.Entry<Integer, Integer> entry : coverage.hits(filePath).entrySet()) { coverageMeasureBuilder.setHits(entry.getKey(), entry.getValue()); } for (Measure measure : coverageMeasureBuilder.createMeasures()) { context.saveMeasure(sonarFile, measure); } } } else { LOG.debug("Code coverage will not be imported for the following file outside of SonarQube: " + filePath); } } }