private void resolveEffortToFix(IssueDto dbIssue, DefaultIssue issue) { issue.setGap(dbIssue.getGap()); }
public boolean setPastGap(DefaultIssue issue, @Nullable Double previousGap, IssueChangeContext context) { Double currentGap = issue.gap(); issue.setGap(previousGap); return setGap(issue, currentGap, context); }
public boolean setGap(DefaultIssue issue, @Nullable Double d, IssueChangeContext context) { if (!Objects.equals(d, issue.gap())) { issue.setGap(d); issue.setUpdateDate(context.date()); issue.setChanged(true); // Do not send notifications to prevent spam when installing the SQALE plugin, // and do not complete the changelog (for the moment) return true; } return false; }
@Test public void not_set_gap_to_fix_if_unchanged() { issue.setGap(3.14); boolean updated = underTest.setGap(issue, 3.14, context); assertThat(updated).isFalse(); assertThat(issue.isChanged()).isFalse(); assertThat(issue.gap()).isEqualTo(3.14); assertThat(issue.mustSendNotifications()).isFalse(); }
@CheckForNull public DefaultIssue processFile(Component file, String fileLanguage) { DefaultIssue issue = null; RuleKey ruleKey = RuleKey.of(commonRepositoryForLang(fileLanguage), key); Optional<ActiveRule> activeRule = activeRulesHolder.get(ruleKey); if (activeRule.isPresent()) { CommonRuleIssue cri = doProcessFile(file, activeRule.get()); if (cri != null) { issue = new DefaultIssue(); issue.setGap(cri.effortToFix); issue.setMessage(cri.message); issue.setRuleKey(ruleKey); issue.setSeverity(activeRule.get().getSeverity()); issue.setLine(null); issue.setChecksum(""); issue.setIsFromExternalRuleEngine(false); } } return issue; }
@Test public void set_past_gap() { issue.setGap(3.14); boolean updated = underTest.setPastGap(issue, 1.0, context); assertThat(updated).isTrue(); assertThat(issue.gap()).isEqualTo(3.14); // do not save change assertThat(issue.currentChange()).isNull(); assertThat(issue.mustSendNotifications()).isFalse(); }
@Test public void linear_with_offset_function() { double effortToFix = 3.0; int coefficient = 2; int offset = 5; issue.setGap(effortToFix); rule.setFunction(new DefaultDebtRemediationFunction( DebtRemediationFunction.Type.LINEAR_OFFSET, coefficient + "min", offset + "min")); assertThat(underTest.calculate(issue).toMinutes()).isEqualTo((int) ((coefficient * effortToFix) + offset)); } }
@Test public void linear_function() { double effortToFix = 3.0; int coefficient = 2; issue.setGap(effortToFix); rule.setFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.LINEAR, coefficient + "min", null)); assertThat(underTest.calculate(issue).toMinutes()).isEqualTo((int) (coefficient * effortToFix)); }
@Test public void filter_exclude_issues_on_common_rule() { RuleKey ruleKey = RuleKey.of(CommonRuleKeys.commonRepositoryForLang("java"), "InsufficientCoverage"); markRuleAsActive(ruleKey); when(issueFilter.accept(any(), eq(FILE))).thenReturn(false); when(sourceLinesHash.getLineHashesMatchingDBVersion(FILE)).thenReturn(Collections.singletonList("line")); DefaultIssue ceIssue = new DefaultIssue() .setRuleKey(ruleKey) .setMessage("not enough coverage") .setGap(10.0); when(commonRuleEngine.process(FILE)).thenReturn(singletonList(ceIssue)); Input<DefaultIssue> input = underTest.create(FILE); assertThat(input.getIssues()).isEmpty(); }
@Test public void constant_function() { int constant = 2; issue.setGap(null); rule.setFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE, null, constant + "min")); assertThat(underTest.calculate(issue).toMinutes()).isEqualTo(2); }
@Test public void load_issues_of_compute_engine_common_rules() { RuleKey ruleKey = RuleKey.of(CommonRuleKeys.commonRepositoryForLang("java"), "InsufficientCoverage"); markRuleAsActive(ruleKey); when(issueFilter.accept(any(), eq(FILE))).thenReturn(true); when(sourceLinesHash.getLineHashesMatchingDBVersion(FILE)).thenReturn(Collections.singletonList("line")); DefaultIssue ceIssue = new DefaultIssue() .setRuleKey(ruleKey) .setMessage("not enough coverage") .setGap(10.0); when(commonRuleEngine.process(FILE)).thenReturn(singletonList(ceIssue)); Input<DefaultIssue> input = underTest.create(FILE); assertThat(input.getIssues()).containsOnly(ceIssue); assertInitializedIssue(input.getIssues().iterator().next()); }
@Test public void copy_effort_for_external_issues() { issue.setGap(null); issue.setIsFromExternalRuleEngine(true); issue.setEffort(Duration.create(20l)); rule.setFunction(null); assertThat(underTest.calculate(issue).toMinutes()).isEqualTo(20l); }
@Test public void test_nullable_fields() { issue.setGap(null).setSeverity(null).setLine(null); assertThat(issue.gap()).isNull(); assertThat(issue.severity()).isNull(); assertThat(issue.line()).isNull(); }
@Test(expected = IllegalArgumentException.class) public void effort_to_fix_must_not_be_set_with_constant_function() { int constant = 2; issue.setGap(3.0); rule.setFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE, null, constant + "min")); underTest.calculate(issue); }
.setMessage("a message") .setLine(7) .setGap(1.2d) .setEffort(Duration.create(28800L)) .setStatus(Issue.STATUS_CLOSED)
.setLine(10) .setMessage("message") .setGap(15d) .setEffort(Duration.create(15L)) .setManualSeverity(false)
.setLine(10) .setMessage("message") .setGap(15d) .setEffort(Duration.create(15L)) .setManualSeverity(false)
.setLine(10) .setMessage("message") .setGap(15d) .setEffort(Duration.create(15L)) .setManualSeverity(false)
issue.setGap(reportIssue.getGap());
issue.setResolution(resolution); issue.setMessage(message); issue.setGap(gap); issue.setEffort(effort != null ? Duration.create(effort) : null); issue.setLine(line);