CoreMetrics.NEW_MINOR_ISSUES,
CoreMetrics.NEW_INFO_ISSUES,
CoreMetrics.FALSE_POSITIVE_ISSUES,
- CoreMetrics.UNASSIGNED_ISSUES,
- CoreMetrics.UNPLANNED_ISSUES,
- CoreMetrics.NEW_UNPLANNED_ISSUES
+ CoreMetrics.UNASSIGNED_ISSUES
);
}
saveTotalIssues(context, issues);
saveNewIssues(context, issues, shouldSaveNewMetrics);
- saveNewUnplannedIssues(context, issues);
saveMeasure(context, CoreMetrics.UNASSIGNED_ISSUES, countUnassigned);
saveMeasure(context, CoreMetrics.FALSE_POSITIVE_ISSUES, falsePositives);
- saveMeasure(context, CoreMetrics.UNPLANNED_ISSUES, unplanned);
}
}
context.saveMeasure(measure);
}
- protected void saveNewUnplannedIssues(DecoratorContext context, Collection<Issue> issues) {
- Measure measure = new Measure(CoreMetrics.NEW_UNPLANNED_ISSUES);
- for (PastSnapshot pastSnapshot : timeMachineConfiguration.getProjectPastSnapshots()) {
- int newUnplannedIssues = countNewUnplannedIssuesForSnapshot(pastSnapshot, issues);
- int variationIndex = pastSnapshot.getIndex();
- Collection<Measure> children = context.getChildrenMeasures(CoreMetrics.NEW_UNPLANNED_ISSUES);
- double sumNewUnplannedIssues = MeasureUtils.sumOnVariation(true, variationIndex, children) + newUnplannedIssues;
- measure.setVariation(variationIndex, sumNewUnplannedIssues);
- }
- context.saveMeasure(measure);
- }
-
- protected int countNewUnplannedIssuesForSnapshot(final PastSnapshot pastSnapshot, Collection<Issue> issues) {
- return newArrayList(Iterables.filter(issues, new Predicate<Issue>() {
- @Override
- public boolean apply(Issue issue) {
- return isAfter(issue, pastSnapshot.getTargetDate()) && issue.actionPlanKey() == null;
- }
- })).size();
- }
-
private void saveMeasure(DecoratorContext context, Metric metric, int value) {
context.saveMeasure(metric, (double) (value + sumChildren(context, metric)));
}
verify(context).saveMeasure(CoreMetrics.FALSE_POSITIVE_ISSUES, 1.0);
}
- @Test
- public void should_save_unplanned_issues() {
- List<Issue> issues = newArrayList();
- issues.add(new DefaultIssue().setRuleKey(ruleA1.ruleKey()).setActionPlanKey("ABCD").setSeverity(RulePriority.CRITICAL.name()));
- issues.add(new DefaultIssue().setRuleKey(ruleA1.ruleKey()).setSeverity(RulePriority.CRITICAL.name()));
- issues.add(new DefaultIssue().setRuleKey(ruleA1.ruleKey()).setSeverity(RulePriority.CRITICAL.name()));
- when(issuable.issues()).thenReturn(issues);
-
- decorator.decorate(resource, context);
-
- verify(context).saveMeasure(CoreMetrics.UNPLANNED_ISSUES, 2.0);
- }
-
@Test
public void same_rule_should_have_different_severities() {
List<Issue> issues = newArrayList();
verify(context, never()).saveMeasure(argThat(new IsMetricMeasure(CoreMetrics.NEW_CRITICAL_ISSUES)));
}
- @Test
- public void should_save_new_unplanned_issues(){
- List<Issue> issues = newArrayList();
- issues.add(new DefaultIssue().setRuleKey(ruleA1.ruleKey()).setActionPlanKey("ABCD").setSeverity(RulePriority.CRITICAL.name()).setCreationDate(rightNow));
- issues.add(new DefaultIssue().setRuleKey(ruleA2.ruleKey()).setSeverity(RulePriority.CRITICAL.name()).setCreationDate(rightNow));
- issues.add(new DefaultIssue().setRuleKey(ruleA1.ruleKey()).setActionPlanKey("ABCD").setSeverity(RulePriority.CRITICAL.name()).setCreationDate(fiveDaysAgo));
- issues.add(new DefaultIssue().setRuleKey(ruleA2.ruleKey()).setSeverity(RulePriority.CRITICAL.name()).setCreationDate(fiveDaysAgo));
- issues.add(new DefaultIssue().setRuleKey(ruleB1.ruleKey()).setSeverity(RulePriority.CRITICAL.name()).setCreationDate(tenDaysAgo));
- when(issuable.issues()).thenReturn(issues);
-
- decorator.decorate(resource, context);
-
- // remember : period1 is 5daysAgo, period2 is 10daysAgo
- verify(context).saveMeasure(argThat(new IsVariationMeasure(CoreMetrics.NEW_UNPLANNED_ISSUES, 1.0, 2.0)));
- }
-
private List<Issue> createIssues() {
List<Issue> issues = newArrayList();
issues.add(new DefaultIssue().setRuleKey(ruleA1.ruleKey()).setSeverity(RulePriority.CRITICAL.name()).setStatus(Issue.STATUS_OPEN));