@Override public CoverageMeasureBuilder reset() { delegate.reset(); return this; }
@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); } } }
private void saveHitsData(Resource resource, SMInputCursor lineCursor) throws ParseException, XMLStreamException { fileMeasuresBuilder.reset(); while (lineCursor.getNext() != null) { // skip class elements on format 2_3_2 if (isClass(lineCursor)) { continue; } final int lineId = Integer.parseInt(lineCursor.getAttrValue("num")); String count = lineCursor.getAttrValue("count"); if (StringUtils.isNotBlank(count)) { fileMeasuresBuilder.setHits(lineId, Integer.parseInt(count)); } else { int trueCount = (int) ParsingUtils.parseNumber(lineCursor.getAttrValue("truecount")); int falseCount = (int) ParsingUtils.parseNumber(lineCursor.getAttrValue("falsecount")); int coveredConditions = 0; if (trueCount > 0) { coveredConditions++; } if (falseCount > 0) { coveredConditions++; } fileMeasuresBuilder.setConditions(lineId, 2, coveredConditions); } } if (resource != null) { for (Measure measure : fileMeasuresBuilder.createMeasures()) { context.saveMeasure(resource, measure); } } }