@Override public void handleResult(ResultContext<? extends IssueDto> resultContext) { IssueDto resultObject = resultContext.getResultObject(); // issue are ordered by most recent change first, only the first row for a given issue is of interest if (previousIssueKey != null && previousIssueKey.equals(resultObject.getKey())) { return; } FieldDiffs fieldDiffs = FieldDiffs.parse(resultObject.getClosedChangeData() .orElseThrow(() -> new IllegalStateException("Close change data should be populated"))); checkState(Optional.ofNullable(fieldDiffs.get("status")) .map(FieldDiffs.Diff::newValue) .filter(STATUS_CLOSED::equals) .isPresent(), "Close change data should have a status diff with new value %s", STATUS_CLOSED); Integer line = Optional.ofNullable(fieldDiffs.get("line")) .map(diff -> (String) diff.oldValue()) .filter(str -> !str.isEmpty()) .map(Integer::parseInt) .orElse(null); previousIssueKey = resultObject.getKey(); DefaultIssue issue = resultObject.toDefaultIssue(); issue.setLine(line); // FIXME issue.setSelectedAt(System.currentTimeMillis()); issues.add(issue); } }
public boolean unsetLine(DefaultIssue issue, IssueChangeContext context) { Integer currentValue = issue.line(); if (currentValue != null) { issue.setFieldChange(context, LINE, currentValue, ""); issue.setLine(null); issue.setChanged(true); return true; } return false; }
@Test public void set_past_line() { issue.setLine(42); boolean updated = underTest.setPastLine(issue, 123); assertThat(updated).isTrue(); assertThat(issue.isChanged()).isTrue(); assertThat(issue.line()).isEqualTo(42); assertThat(issue.mustSendNotifications()).isFalse(); // do not save change assertThat(issue.currentChange()).isNull(); }
@Test public void set_past_line_has_no_effect_if_line_already_had_value() { issue.setLine(42); boolean updated = underTest.setPastLine(issue, 42); assertThat(updated).isFalse(); assertThat(issue.isChanged()).isFalse(); assertThat(issue.line()).isEqualTo(42); assertThat(issue.mustSendNotifications()).isFalse(); // do not save change assertThat(issue.currentChange()).isNull(); }
@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 unset_line_has_no_effect_if_line_is_already_null() { issue.setLine(null); boolean updated = underTest.unsetLine(issue, context); assertThat(updated).isFalse(); assertThat(issue.line()).isNull(); assertThat(issue.isChanged()).isFalse(); assertThat(issue.currentChange()).isNull(); assertThat(issue.mustSendNotifications()).isFalse(); }
@Test public void line_number_must_be_unset() { Issue issue = new DefaultIssue().setBeingClosed(true).setLine(10); when(context.issue()).thenReturn(issue); INSTANCE.execute(context); verify(context).unsetLine(); } }
@Test public void unset_line() { int line = 1 + new Random().nextInt(500); issue.setLine(line); boolean updated = underTest.unsetLine(issue, context); assertThat(updated).isTrue(); assertThat(issue.isChanged()).isTrue(); assertThat(issue.line()).isNull(); assertThat(issue.mustSendNotifications()).isFalse(); assertThat(issue.currentChange()) .extracting(FieldDiffs::diffs) .hasSize(1); FieldDiffs.Diff diff = issue.currentChange().diffs().get("line"); assertThat(diff.oldValue()).isEqualTo(line); assertThat(diff.newValue()).isEqualTo(""); }
private DefaultIssue createIssue(int line, RuleKey ruleKey) { DefaultIssue issue = new DefaultIssue() .setRuleKey(ruleKey) .setLine(line) .setMessage("msg" + line); return issue; }
@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(); }
private static DefaultIssue createIssue(String key, RuleKey ruleKey, String status, @Nullable String resolution, Date creationDate) { DefaultIssue issue = new DefaultIssue(); issue.setKey(key); issue.setRuleKey(ruleKey); issue.setMessage("msg"); issue.setLine(1); issue.setStatus(status); issue.setResolution(resolution); issue.setCreationDate(creationDate); issue.setChecksum("checksum"); return issue; }
.setManualSeverity(true) .setMessage("a message") .setLine(7) .setGap(1.2d) .setEffort(Duration.create(28800L))
.setOnDisabledRule(true) .setSelectedAt(1000L) .setLine(10) .setMessage("message") .setGap(15d)
issue.setLine(200); issue.setSeverity(Severity.BLOCKER); issue.setManualSeverity(false);
.setTags(newArrayList("base tag")) .setSelectedAt(1000L) .setLine(10) .setMessage("message") .setGap(15d)
if (reportExternalIssue.hasTextRange()) { int startLine = reportExternalIssue.getTextRange().getStartLine(); issue.setLine(startLine); issue.setChecksum(lineHashSeq.getHashForLine(startLine)); } else {
if (reportIssue.hasTextRange()) { int startLine = reportIssue.getTextRange().getStartLine(); issue.setLine(startLine); issue.setChecksum(lineHashSeq.getHashForLine(startLine)); } else {
issue.setGap(gap); issue.setEffort(effort != null ? Duration.create(effort) : null); issue.setLine(line); issue.setChecksum(checksum); issue.setSeverity(severity);
.setProjectUuid(project.uuid()) .setComponentUuid(file.uuid()) .setLine(5000) .setEffort(Duration.create(10L)) .setResolution("OPEN")