@Override public void endDocument() { Measure lines = getWebSourceCode().getMeasure(CoreMetrics.LINES); if (lines != null && lines.getIntValue() > maxLength) { createViolation(0, "Current file has " + lines.getIntValue() + " lines, which is greater than " + maxLength + " authorized. Split it into smaller files."); } }
@Override public void startDocument(List<Node> nodes) { int complexity = getWebSourceCode().getMeasure(CoreMetrics.COMPLEXITY).getIntValue(); if (complexity > max) { String msg = String.format("Split this file to reduce complexity per file from %d to no more than the %d authorized.", complexity, max); createViolation(0, msg); } }
@Override public void decorate(Resource resource, DecoratorContext context) { double value = 0.0; Multiset<String> distribution = LinkedHashMultiset.create(); for (String severity : Severity.ALL) { Measure measure = context.getMeasure(severityToIssueMetric(severity)); if (measure != null && MeasureUtils.hasValue(measure)) { distribution.add(severity, measure.getIntValue()); double add = weightsBySeverity.get(severity) * measure.getIntValue(); value += add; } } String distributionFormatted = KeyValueFormat.format(distribution); // SONAR-4987 We should store an empty string for the distribution value Measure measure = new Measure(IssuesDensityMetrics.WEIGHTED_ISSUES, value, Strings.emptyToNull(distributionFormatted)); context.saveMeasure(measure); }
private void saveLineLevelMeasures(File sonarFile, WebSourceCode webSourceCode) { FileLinesContext fileLinesContext = fileLinesContextFactory.createFor(sonarFile); Set<Integer> linesOfCode = webSourceCode.getDetailedLinesOfCode(); Set<Integer> linesOfComments = webSourceCode.getDetailedLinesOfComments(); for (int line = 1; line <= webSourceCode.getMeasure(CoreMetrics.LINES).getIntValue(); line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); }
@Override public void decorate(Resource resource, DecoratorContext context) { CountDistributionBuilder nclocDistribution = new CountDistributionBuilder(CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION); if (ResourceUtils.isFile(resource)) { Language language = resource.getLanguage(); Measure ncloc = context.getMeasure(CoreMetrics.NCLOC); if (ncloc != null) { nclocDistribution.add(language != null ? language.getKey() : UNKNOWN_LANGUAGE_KEY, ncloc.getIntValue()); } } else { for (Measure measure : context.getChildrenMeasures(CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION)) { nclocDistribution.add(measure); } } Measure measure = nclocDistribution.build(false); if (measure != null) { context.saveMeasure(measure); } }