@Override public void checkResource(Resource resource, DecoratorContext context, RuleKey rule, ResourcePerspectives perspectives) { if (minimumCommentDensity < 0 || minimumCommentDensity >= 100) { throw new IllegalArgumentException(minimumCommentDensity + " is not a valid value for minimum required comment density for rule 'CommentDensityCheck' (must be >= 0 and < 100)."); } double commentDensity = MeasureUtils.getValue(context.getMeasure(CoreMetrics.COMMENT_LINES_DENSITY), 0.0); double linesOfCode = MeasureUtils.getValue(context.getMeasure(CoreMetrics.NCLOC), 0.0); if (commentDensity < minimumCommentDensity && Double.doubleToRawLongBits(linesOfCode) != 0L) { double commentLines = MeasureUtils.getValue(context.getMeasure(CoreMetrics.COMMENT_LINES), 0.0); double missingCommentLines = Math.ceil(minimumCommentDensity * linesOfCode / (100 - minimumCommentDensity) - commentLines); createIssue(resource, rule, missingCommentLines, perspectives); } }
/** * Return true if all measures have numeric value * * @param measures the measures * @return true if all measures numeric values */ public static boolean haveValues(Measure... measures) { if (measures == null || measures.length == 0) { return false; } for (Measure measure : measures) { if (!hasValue(measure)) { return false; } } return true; }
private int sumChildren(DecoratorContext context, Metric metric) { return MeasureUtils.sum(true, context.getChildrenMeasures(metric)).intValue(); }
/** * Sums a series of measures * * @param zeroIfNone whether to return 0 or null in case measures is null * @param measures the series of measures * @return the sum of the measure series */ public static Double sum(boolean zeroIfNone, Collection<Measure> measures) { if (measures != null) { return sum(zeroIfNone, measures.toArray(new Measure[measures.size()])); } return zeroIfNone(zeroIfNone); }
/** * {@inheritDoc} */ @Override public final void decorate(Resource resource, DecoratorContext context) { if (!shouldDecorateResource(context)) { return; } Measure tangles = context.getMeasure(tanglesMetric); Measure totalweight = context.getMeasure(edgesWeightMetric); if (MeasureUtils.hasValue(totalweight)) { context.saveMeasure(new Measure(tangleIndexMetric, compute(MeasureUtils.getValue(tangles, 0.0), totalweight.getValue()))); } }
@Override public void decorate(Resource resource, DecoratorContext context) { if (MeasureUtils.hasValue(context.getMeasure(CoreMetrics.FILES))) { return; } if (Resource.QUALIFIER_CLASS.equals(resource.getQualifier()) || Resource.QUALIFIER_FILE.equals(resource.getQualifier())) { context.saveMeasure(CoreMetrics.FILES, 1.0); } else { Collection<Measure> childrenMeasures = context.getChildrenMeasures(CoreMetrics.FILES); Double sum = MeasureUtils.sum(false, childrenMeasures); if (sum != null) { context.saveMeasure(CoreMetrics.FILES, sum); } } } }
public static Long getVariationAsLong(Measure measure, int periodIndex) { return getVariationAsLong(measure, periodIndex, null); }
@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); } }
@Override protected long countCoveredElements(DecoratorContext context) { long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_LINES), 0L); long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); return lines - uncoveredLines; }
for (Period period : timeMachineConfiguration.periods()) { int variationIndex = period.getIndex(); double sum = MeasureUtils.sumOnVariation(true, variationIndex, childMeasuresPerRuleKeys.get(ruleKey)) + countIssues(issuesPerRuleKeys.get(ruleKey), period); measure.setVariation(variationIndex, sum);
/** * {@inheritDoc} */ @Override public void decorate(Resource resource, DecoratorContext context) { if (MeasureUtils.hasValue(context.getMeasure(CoreMetrics.DIRECTORIES))) { return; } if (Resource.QUALIFIER_DIRECTORY.equals(resource.getQualifier())) { context.saveMeasure(CoreMetrics.DIRECTORIES, 1.0); } else if (ResourceUtils.isSet(resource) || ResourceUtils.isView(resource) || ResourceUtils.isSubview(resource)) { Collection<Measure> childrenMeasures = context.getChildrenMeasures(CoreMetrics.DIRECTORIES); Double sum = MeasureUtils.sum(false, childrenMeasures); if (sum != null) { context.saveMeasure(CoreMetrics.DIRECTORIES, sum); } } } }
@Override protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { Long newLinesToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex); if (newLinesToCover == null) { return null; } long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); return newLinesToCover + newConditionsToCover; }
@Override protected long countCoveredElements(DecoratorContext context) { long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); return conditions - uncoveredConditions; }
private void saveNewIssues(DecoratorContext context, Measure measure, Collection<Issue> issues) { for (Period period : timeMachineConfiguration.periods()) { int variationIndex = period.getIndex(); Collection<Measure> children = context.getChildrenMeasures(measure.getMetric()); double sum = MeasureUtils.sumOnVariation(true, variationIndex, children) + countIssues(issues, period); measure.setVariation(variationIndex, sum); } context.saveMeasure(measure); }
private Measure calculateForFile(FormulaData data, FormulaContext context) { Measure result = null; Double fallbackMeasure = fallbackMetric != null ? MeasureUtils.getValue(data.getMeasure(fallbackMetric), null) : null; Double byMeasure = MeasureUtils.getValue(data.getMeasure(byMetric), null); Double mainMeasure = MeasureUtils.getValue(data.getMeasure(mainMetric), fallbackMeasure); if (mainMeasure != null && byMeasure != null && byMeasure > 0.0) { result = new Measure(context.getTargetMetric(), mainMeasure / byMeasure); } return result; }
public static Long getValueAsLong(Measure measure, Long defaultValue) { if (MeasureUtils.hasValue(measure)) { return measure.getValue().longValue(); } return defaultValue; }
@Override protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { long uncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_LINES), periodIndex, 0L); long lines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex, 0L); return lines - uncoveredLines; } }
private void saveTotalIssues(DecoratorContext context, Collection<Issue> issues) { if (context.getMeasure(CoreMetrics.VIOLATIONS) == null) { Collection<Measure> childrenIssues = context.getChildrenMeasures(CoreMetrics.VIOLATIONS); Double sum = MeasureUtils.sum(true, childrenIssues); context.saveMeasure(CoreMetrics.VIOLATIONS, sum + issues.size()); } }
@Override protected long countCoveredElements(DecoratorContext context) { long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); return conditions - uncoveredConditions; }
private void saveMeasures(DecoratorContext context, Collection<Issue> issues) { Measure measure = new Measure(CoreMetrics.NEW_TECHNICAL_DEBT); for (Period period : timeMachineConfiguration.periods()) { Date periodDate = period.getDate(); double value = calculateNewTechnicalDebtValue(issues, periodDate); Collection<Measure> children = context.getChildrenMeasures(measure.getMetric()); double sum = MeasureUtils.sumOnVariation(true, period.getIndex(), children) + value; measure.setVariation(period.getIndex(), sum); } context.saveMeasure(measure); }