/** * ctor * * @param resource Delphi file */ public CoverageFileData(InputFile resource) { this.resource = resource; lineHitsBuilder = new PropertiesBuilder<String, Integer>(CoreMetrics.COVERAGE_LINE_HITS_DATA); }
private static PropertiesBuilder<Integer, String> propertiesBuilder(Metric metric) { return new PropertiesBuilder<Integer, String>(metric); }
private Measure getZeroCoverageLineHitsDataMetric(org.sonar.api.resources.File resource, SensorContext context) { PropertiesBuilder<Integer, Integer> lineHitsData = new PropertiesBuilder<>(CoreMetrics.COVERAGE_LINE_HITS_DATA); String nclocData = context.getMeasure(resource, CoreMetrics.NCLOC_DATA).getData(); if (nclocData != null) { String[] lines = nclocData.split(";"); for (String line : lines) { String[] info = line.split("="); if (info.length == 2 && "1".equals(info[1])) { int lineNumber = Integer.parseInt(info[0]); lineHitsData.add(lineNumber, 0); } } } return lineHitsData.build(); }
/** * Saves one class measure and calls {@link #saveLineMeasure(LineNode, PropertiesBuilder, String))} for each class lines. * * @param fileNode * the file node * @param phpFile * the php file * @return the double */ private void saveClassMeasure(FileNode fileNode, PhpFile phpFile) { // Properties builder will generate the data associate with COVERAGE_LINE_HITS_DATA metrics. // This should look like (lineNumner=Count) : 1=0;2=1;3=1.... PropertiesBuilder<Integer, Integer> lineHits = new PropertiesBuilder<Integer, Integer>(CoreMetrics.COVERAGE_LINE_HITS_DATA); for (LineNode line : fileNode.getLines()) { saveLineMeasure(line, lineHits); } MetricsNode metrics = fileNode.getMetrics(); context.saveMeasure(phpFile, lineHits.build()); // Save uncovered statements (lines) double totalStatementsCount = metrics.getTotalStatementsCount(); double uncoveredLines = totalStatementsCount - metrics.getCoveredStatements(); context.saveMeasure(phpFile, CoreMetrics.LINES_TO_COVER, totalStatementsCount); context.saveMeasure(phpFile, CoreMetrics.UNCOVERED_LINES, uncoveredLines); }