/** * Tests if a measure has a data field * * @param measure the measure * @return whether the measure has a data field */ public static boolean hasData(Measure measure) { return measure != null && StringUtils.isNotBlank(measure.getData()); }
private static Double sum(@Nullable Collection<Measure> measures) { if (measures == null) { return 0d; } double sum = 0d; for (Measure measure : measures) { String data = measure.getData(); if (data != null) { sum += Double.parseDouble(data); } } return sum; }
private Map<Integer, Integer> parseCountByLine(@Nullable Measure measure) { if (measure != null && measure.hasData()) { return KeyValueFormat.parseIntInt(measure.getData()); } return Maps.newHashMap(); }
private static void validateMeasure(Measure measure, String componentKey) { if (measure.getValue() == null && measure.getData() == null) { throw new IllegalArgumentException(String.format("Measure on metric '%s' and component '%s' has no value, but it's not allowed", measure.getMetricKey(), componentKey)); } }
private static boolean isMeasureNotEmpty(Measure measure) { boolean isNotEmpty = false; for (int i = 1; i <= 5; i++) { isNotEmpty = isNotEmpty || measure.getVariation(i) != null; } return measure.getValue() != null || measure.getData() != null || isNotEmpty; }
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(); }
private Map loadData(String metricKey, Converter converter) { // FIXME no way to load measure only by key Measure measure = index.getMeasure(resource, new Metric(metricKey)); String data = measure != null ? measure.getData() : null; if (data != null) { return ImmutableMap.copyOf(KeyValueFormat.parse(data, KeyValueFormat.newIntegerConverter(), converter)); } // no such measure return ImmutableMap.of(); }
private Map loadData(String metricKey, Converter converter) { // FIXME no way to load measure only by key Measure measure = index.getMeasure(resource, new Metric(metricKey)); String data = measure != null ? measure.getData() : null; if (data != null) { return ImmutableMap.copyOf(KeyValueFormat.parse(data, KeyValueFormat.newIntegerConverter(), converter)); } // no such measure return ImmutableMap.of(); }
private static Comparable getMeasureValueForStringOrBoolean(Metric metric, Measure measure) { if (isAString(metric)) { return measure.getData(); } if (isABoolean(metric)) { return measure.getValue().intValue(); } throw new NotImplementedException(metric.getType().toString()); }
@Override public void decorate(Resource resource, DecoratorContext context) { if (!Qualifiers.isProject(resource, true)) { return; } // Load previous profiles Measure previousMeasure = getPreviousMeasure(resource, CoreMetrics.QUALITY_PROFILES); if (previousMeasure == null || previousMeasure.getData() == null) { // first analysis -> do not generate events return; } Map<String, QProfile> previousProfiles = UsedQProfiles.fromJson(previousMeasure.getData()).profilesByKey(); // Load current profiles Measure currentMeasure = context.getMeasure(CoreMetrics.QUALITY_PROFILES); Map<String, QProfile> currentProfiles = UsedQProfiles.fromJson(currentMeasure.getData()).profilesByKey(); detectNewOrUpdatedProfiles(context, previousProfiles, currentProfiles); detectNoMoreUsedProfiles(context, previousProfiles, currentProfiles); }
@Override public void decorate(Resource resource, DecoratorContext context) { double uselessDuplicatedLines = 0; Measure measure = context.getMeasure(CoreMetrics.DUPLICATIONS_DATA); if (MeasureUtils.hasData(measure)) { String resourceKey = new StringBuilder(ResourceModel.KEY_SIZE) .append(context.getProject().getKey()) .append(':') .append(context.getResource().getKey()) .toString(); List<List<Block>> groups = parseDuplicationData(measure.getData()); uselessDuplicatedLines = analyse(groups, resourceKey); } uselessDuplicatedLines += MeasureUtils.sum(true, context.getChildrenMeasures(TrackerMetrics.USELESS_DUPLICATED_LINES)); if (uselessDuplicatedLines > 0) { context.saveMeasure(TrackerMetrics.USELESS_DUPLICATED_LINES, uselessDuplicatedLines); } }
public void validate(Measure<?> measure, InputFile inputFile) { Metric<?> metric = measure.getMetric(); if (!isLineMetrics(metric)) { return; } Map<Integer, Integer> m = KeyValueFormat.parseIntInt(measure.getData()); validatePositiveLine(m, inputFile.absolutePath()); validateMaxLine(m, inputFile); }
@Override public void decorate(Resource resource, DecoratorContext context) { if (!ResourceUtils.isProject(resource)) { return; } UsedQProfiles used = new UsedQProfiles(); for (Measure childProfilesMeasure : context.getChildrenMeasures(CoreMetrics.QUALITY_PROFILES)) { String data = childProfilesMeasure.getData(); if (data != null) { UsedQProfiles childProfiles = UsedQProfiles.fromJson(data); used.add(childProfiles); } } Measure detailsMeasure = new Measure(CoreMetrics.QUALITY_PROFILES, used.toJson()); context.saveMeasure(detailsMeasure); }
private BatchReport.Measure toReportMeasure(BatchReport.Measure.Builder builder, Measure measure) { builder.clear(); builder.setValueType(getMeasureValueType(measure.getMetric().getType())); setValueAccordingToType(builder, measure); // Because some numeric measures also have a data (like Sqale rating) String data = measure.getData(); if (data != null) { builder.setStringValue(data); } builder.setMetricKey(measure.getMetricKey()); return builder.build(); }
private Measure convertForOverall(Measure measure) { Measure itMeasure = null; if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_LINES_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_LINES, measure.getValue()); } else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA, measure.getData()); } else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, measure.getValue()); } else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE, measure.getData()); } else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_BY_LINE, measure.getData()); } return itMeasure; } }
private Measure convertForIT(Measure measure) { Measure itMeasure = null; if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_LINES_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_LINES, measure.getValue()); } else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_COVERAGE_LINE_HITS_DATA, measure.getData()); } else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_CONDITIONS, measure.getValue()); } else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE, measure.getData()); } else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_BY_LINE, measure.getData()); } return itMeasure; } }
private Measure convertForOverall(Measure measure) { Measure itMeasure = null; if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_LINES_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_LINES, measure.getValue()); } else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA, measure.getData()); } else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, measure.getValue()); } else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE, measure.getData()); } else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_BY_LINE, measure.getData()); } return itMeasure; } }
private Measure convertForIT(Measure measure) { Measure itMeasure = null; if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_LINES_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_LINES, measure.getValue()); } else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_COVERAGE_LINE_HITS_DATA, measure.getData()); } else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_CONDITIONS, measure.getValue()); } else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE, measure.getData()); } else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_BY_LINE, measure.getData()); } return itMeasure; } }
private Measure convertForOverall(Measure measure) { Measure itMeasure = null; if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_LINES_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_LINES, measure.getValue()); } else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA, measure.getData()); } else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, measure.getValue()); } else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE, measure.getData()); } else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.OVERALL_CONDITIONS_BY_LINE, measure.getData()); } return itMeasure; } }
private Measure convertForIT(Measure measure) { Measure itMeasure = null; if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_LINES_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_LINES, measure.getValue()); } else if (CoreMetrics.COVERAGE_LINE_HITS_DATA.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_COVERAGE_LINE_HITS_DATA, measure.getData()); } else if (CoreMetrics.CONDITIONS_TO_COVER.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_CONDITIONS.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_UNCOVERED_CONDITIONS, measure.getValue()); } else if (CoreMetrics.COVERED_CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE, measure.getData()); } else if (CoreMetrics.CONDITIONS_BY_LINE.equals(measure.getMetric())) { itMeasure = new Measure(CoreMetrics.IT_CONDITIONS_BY_LINE, measure.getData()); } return itMeasure; } }