diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-03-08 11:52:44 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-03-10 10:44:16 +0100 |
commit | 79de4ddfda36dd889c6001a1cd509bd48962dbc0 (patch) | |
tree | 3d46212e3a9866ecf2644baa9605ffb310b2c0ae | |
parent | 46265f075018110760cffd5ae1374c529609dd25 (diff) | |
download | sonarqube-79de4ddfda36dd889c6001a1cd509bd48962dbc0.tar.gz sonarqube-79de4ddfda36dd889c6001a1cd509bd48962dbc0.zip |
SONAR-7345 Rename Issue debt to effort in API
38 files changed, 258 insertions, 132 deletions
diff --git a/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/IssueIndexBenchmarkTest.java b/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/IssueIndexBenchmarkTest.java index b9e661c34da..fc041abff65 100644 --- a/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/IssueIndexBenchmarkTest.java +++ b/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/IssueIndexBenchmarkTest.java @@ -190,7 +190,7 @@ public class IssueIndexBenchmarkTest { issue.setFuncCloseDate(null); issue.setAttributes(null); issue.setDebt(1000L); - issue.setEffortToFix(3.14); + issue.setGap(3.14); issue.setLanguage("php"); issue.setReporter(users.next()); issue.setRuleKey(rules.next()); diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/EffortAggregator.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/EffortAggregator.java index bc65e319e31..c778ec3e2f9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/EffortAggregator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/EffortAggregator.java @@ -126,7 +126,7 @@ public class EffortAggregator extends IssueVisitor { private long securityEffort = 0L; void add(DefaultIssue issue) { - Long issueEffort = issue.debtInMinutes(); + Long issueEffort = issue.effortInMinutes(); if (issueEffort != null && issueEffort != 0L) { switch (issue.type()) { case CODE_SMELL : diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueAssigner.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueAssigner.java index 293c650dafe..9dfc1395b6c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueAssigner.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueAssigner.java @@ -28,11 +28,11 @@ import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import org.sonar.core.issue.DefaultIssue; import org.sonar.core.issue.IssueChangeContext; -import org.sonar.server.issue.IssueUpdater; import org.sonar.server.computation.analysis.AnalysisMetadataHolder; import org.sonar.server.computation.component.Component; import org.sonar.server.computation.scm.ScmInfo; import org.sonar.server.computation.scm.ScmInfoRepository; +import org.sonar.server.issue.IssueUpdater; import static org.apache.commons.lang.StringUtils.defaultIfEmpty; import static org.sonar.core.issue.IssueChangeContext.createScan; @@ -51,7 +51,7 @@ public class IssueAssigner extends IssueVisitor { private static final Logger LOGGER = Loggers.get(IssueAssigner.class); private final ScmInfoRepository scmInfoRepository; - private final DefaultAssignee defaultAssigne; + private final DefaultAssignee defaultAssignee; private final IssueUpdater issueUpdater; private final ScmAccountToUser scmAccountToUser; private final IssueChangeContext changeContext; @@ -59,11 +59,11 @@ public class IssueAssigner extends IssueVisitor { private String lastCommitAuthor = null; private ScmInfo scmChangesets = null; - public IssueAssigner(AnalysisMetadataHolder analysisMetadataHolder, ScmInfoRepository scmInfoRepository, ScmAccountToUser scmAccountToUser, DefaultAssignee defaultAssigne, + public IssueAssigner(AnalysisMetadataHolder analysisMetadataHolder, ScmInfoRepository scmInfoRepository, ScmAccountToUser scmAccountToUser, DefaultAssignee defaultAssignee, IssueUpdater issueUpdater) { this.scmInfoRepository = scmInfoRepository; this.scmAccountToUser = scmAccountToUser; - this.defaultAssigne = defaultAssigne; + this.defaultAssignee = defaultAssignee; this.issueUpdater = issueUpdater; this.changeContext = createScan(new Date(analysisMetadataHolder.getAnalysisDate())); } @@ -80,7 +80,7 @@ public class IssueAssigner extends IssueVisitor { } } if (authorWasSet && issue.assignee() == null) { - String assigneeLogin = StringUtils.defaultIfEmpty(scmAccountToUser.getNullable(issue.authorLogin()), defaultAssigne.getLogin()); + String assigneeLogin = StringUtils.defaultIfEmpty(scmAccountToUser.getNullable(issue.authorLogin()), defaultAssignee.getLogin()); issueUpdater.setNewAssignee(issue, assigneeLogin, changeContext); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueLifecycle.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueLifecycle.java index fb7d388ba29..167755c60d9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueLifecycle.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueLifecycle.java @@ -25,10 +25,10 @@ import javax.annotation.Nullable; import org.sonar.api.issue.Issue; import org.sonar.core.issue.DefaultIssue; import org.sonar.core.issue.IssueChangeContext; -import org.sonar.server.issue.IssueUpdater; -import org.sonar.server.issue.workflow.IssueWorkflow; import org.sonar.core.util.Uuids; import org.sonar.server.computation.analysis.AnalysisMetadataHolder; +import org.sonar.server.issue.IssueUpdater; +import org.sonar.server.issue.workflow.IssueWorkflow; /** * Sets the appropriate fields when an issue is : @@ -62,7 +62,7 @@ public class IssueLifecycle { issue.setCreationDate(changeContext.date()); issue.setUpdateDate(changeContext.date()); issue.setStatus(Issue.STATUS_OPEN); - issue.setDebt(debtCalculator.calculate(issue)); + issue.setEffort(debtCalculator.calculate(issue)); } public void mergeExistingOpenIssue(DefaultIssue raw, DefaultIssue base) { @@ -79,7 +79,7 @@ public class IssueLifecycle { raw.setAuthorLogin(base.authorLogin()); raw.setTags(base.tags()); raw.setAttributes(base.attributes()); - raw.setDebt(debtCalculator.calculate(raw)); + raw.setEffort(debtCalculator.calculate(raw)); raw.setOnDisabledRule(base.isOnDisabledRule()); if (base.manualSeverity()) { raw.setManualSeverity(true); @@ -92,8 +92,8 @@ public class IssueLifecycle { updater.setPastLine(raw, base.getLine()); updater.setPastLocations(raw, base.getLocations()); updater.setPastMessage(raw, base.getMessage(), changeContext); - updater.setPastEffortToFix(raw, base.effortToFix(), changeContext); - updater.setPastTechnicalDebt(raw, base.debt(), changeContext); + updater.setPastGap(raw, base.effortToFix(), changeContext); + updater.setPastEffort(raw, base.debt(), changeContext); raw.setSelectedAt(base.selectedAt()); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortAggregator.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortAggregator.java index 67d3f56ca3e..76f5386249e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortAggregator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortAggregator.java @@ -94,7 +94,7 @@ public class NewEffortAggregator extends IssueVisitor { @Override public void onIssue(Component component, DefaultIssue issue) { - if (issue.resolution() == null && issue.debtInMinutes() != null && !periodsHolder.getPeriods().isEmpty()) { + if (issue.resolution() == null && issue.effortInMinutes() != null && !periodsHolder.getPeriods().isEmpty()) { List<IssueChangeDto> changelog = changesByIssueUuid.get(issue.key()); for (Period period : periodsHolder.getPeriods()) { counter.add(issue, period, changelog); diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortCalculator.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortCalculator.java index 539e0bae9e6..fdb07d5d5be 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortCalculator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/NewEffortCalculator.java @@ -50,7 +50,7 @@ public class NewEffortCalculator { public long calculate(DefaultIssue issue, Collection<IssueChangeDto> debtChangelog, Period period) { if (issue.creationDate().getTime() > period.getSnapshotDate() + 1000L) { - return Objects.firstNonNull(issue.debtInMinutes(), 0L); + return Objects.firstNonNull(issue.effortInMinutes(), 0L); } return calculateFromChangelog(issue, debtChangelog, period.getSnapshotDate()); } @@ -62,7 +62,7 @@ public class NewEffortCalculator { debtDiffs = Lists.newArrayList(debtDiffs); debtDiffs.add(currentChange); } - long newDebt = issue.debtInMinutes(); + long newDebt = issue.effortInMinutes(); for (Iterator<FieldDiffs> it = debtDiffs.iterator(); it.hasNext();) { FieldDiffs diffs = it.next(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/TrackerRawInputFactory.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/TrackerRawInputFactory.java index 8c403dc705a..b557b1a0133 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/TrackerRawInputFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/TrackerRawInputFactory.java @@ -126,7 +126,7 @@ public class TrackerRawInputFactory { issue.setSeverity(reportIssue.getSeverity().name()); } if (reportIssue.hasEffortToFix()) { - issue.setEffortToFix(reportIssue.getEffortToFix()); + issue.setGap(reportIssue.getEffortToFix()); } DbIssues.Locations.Builder dbLocationsBuilder = DbIssues.Locations.newBuilder(); if (reportIssue.hasTextRange()) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/UpdateConflictResolver.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/UpdateConflictResolver.java index 394e458cdd3..3f7c2fcde48 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/UpdateConflictResolver.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/UpdateConflictResolver.java @@ -63,7 +63,7 @@ public class UpdateConflictResolver { } private void resolveEffortToFix(IssueDto dbIssue, DefaultIssue issue) { - issue.setEffortToFix(dbIssue.getGap()); + issue.setGap(dbIssue.getGap()); } private void resolveSeverity(IssueDto dbIssue, DefaultIssue issue) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/commonrule/CommonRule.java b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/commonrule/CommonRule.java index bfa5735e834..6ad789b6162 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/issue/commonrule/CommonRule.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/issue/commonrule/CommonRule.java @@ -49,7 +49,7 @@ public abstract class CommonRule { CommonRuleIssue cri = doProcessFile(file, activeRule.get()); if (cri != null) { issue = new DefaultIssue(); - issue.setEffortToFix(cri.effortToFix); + issue.setGap(cri.effortToFix); issue.setMessage(cri.message); issue.setRuleKey(ruleKey); issue.setSeverity(activeRule.get().getSeverity()); diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/IssueUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/issue/IssueUpdater.java index 803832fc127..ed7ce1737e5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/IssueUpdater.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/IssueUpdater.java @@ -255,9 +255,9 @@ public class IssueUpdater { } } - public boolean setEffortToFix(DefaultIssue issue, @Nullable Double d, IssueChangeContext context) { - if (!Objects.equal(d, issue.effortToFix())) { - issue.setEffortToFix(d); + public boolean setGap(DefaultIssue issue, @Nullable Double d, IssueChangeContext context) { + if (!Objects.equal(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, @@ -267,16 +267,16 @@ public class IssueUpdater { return false; } - public boolean setPastEffortToFix(DefaultIssue issue, @Nullable Double previousEffort, IssueChangeContext context) { - Double currentEffort = issue.effortToFix(); - issue.setEffortToFix(previousEffort); - return setEffortToFix(issue, currentEffort, context); + public boolean setPastGap(DefaultIssue issue, @Nullable Double previousGap, IssueChangeContext context) { + Double currentGap = issue.gap(); + issue.setGap(previousGap); + return setGap(issue, currentGap, context); } - public boolean setTechnicalDebt(DefaultIssue issue, @Nullable Duration value, IssueChangeContext context) { - Duration oldValue = issue.debt(); + public boolean setEffort(DefaultIssue issue, @Nullable Duration value, IssueChangeContext context) { + Duration oldValue = issue.effort(); if (!Objects.equal(value, oldValue)) { - issue.setDebt(value != null ? value : null); + issue.setEffort(value != null ? value : null); issue.setFieldChange(context, TECHNICAL_DEBT, oldValue != null ? oldValue.toMinutes() : null, value != null ? value.toMinutes() : null); issue.setUpdateDate(context.date()); issue.setChanged(true); @@ -285,10 +285,10 @@ public class IssueUpdater { return false; } - public boolean setPastTechnicalDebt(DefaultIssue issue, @Nullable Duration previousTechnicalDebt, IssueChangeContext context) { - Duration currentTechnicalDebt = issue.debt(); - issue.setDebt(previousTechnicalDebt); - return setTechnicalDebt(issue, currentTechnicalDebt, context); + public boolean setPastEffort(DefaultIssue issue, @Nullable Duration previousEffort, IssueChangeContext context) { + Duration currentEffort = issue.effort(); + issue.setEffort(previousEffort); + return setEffort(issue, currentEffort, context); } public boolean setAttribute(DefaultIssue issue, String key, @Nullable String value, IssueChangeContext context) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueDoc.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueDoc.java index b0dac03d667..1fa468e3704 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueDoc.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueDoc.java @@ -117,9 +117,16 @@ public class IssueDoc extends BaseDoc implements Issue { return getNullableField(IssueIndexDefinition.FIELD_ISSUE_LINE); } + @Deprecated @Override @CheckForNull public Double effortToFix() { + throw new UnsupportedOperationException("effortToFix is replaced by gap"); + } + + @Override + @CheckForNull + public Double gap() { return getNullableField(IssueIndexDefinition.FIELD_ISSUE_EFFORT); } @@ -218,6 +225,12 @@ public class IssueDoc extends BaseDoc implements Issue { @Override @CheckForNull public Duration debt() { + throw new UnsupportedOperationException("debt is replaced by effort"); + } + + @Override + @CheckForNull + public Duration effort() { Number debt = getNullableField(IssueIndexDefinition.FIELD_ISSUE_DEBT); return (debt != null) ? Duration.create(debt.longValue()) : null; } @@ -288,7 +301,7 @@ public class IssueDoc extends BaseDoc implements Issue { return this; } - public IssueDoc setEffortToFix(@Nullable Double d) { + public IssueDoc setGap(@Nullable Double d) { setField(IssueIndexDefinition.FIELD_ISSUE_EFFORT, d); return this; } diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java index 3a7c6f3375c..c9b569afb99 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java @@ -164,7 +164,7 @@ class IssueResultSetIterator extends ResultSetIterator<IssueDoc> { doc.setTechnicalUpdateDate(new Date(rs.getLong(3))); doc.setActionPlanKey(rs.getString(4)); doc.setAssignee(rs.getString(5)); - doc.setEffortToFix(DatabaseUtils.getDouble(rs, 6)); + doc.setGap(DatabaseUtils.getDouble(rs, 6)); doc.setAttributes(rs.getString(7)); doc.setLine(DatabaseUtils.getInt(rs, 8)); doc.setMessage(rs.getString(9)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/DebtCalculatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/DebtCalculatorTest.java index 78625faf798..71de564497f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/DebtCalculatorTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/DebtCalculatorTest.java @@ -69,7 +69,7 @@ public class DebtCalculatorTest { public void linear_function() { double effortToFix = 3.0; int coefficient = 2; - issue.setEffortToFix(effortToFix); + issue.setGap(effortToFix); rule.setFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.LINEAR, coefficient + "min", null)); assertThat(underTest.calculate(issue).toMinutes()).isEqualTo((int) (coefficient * effortToFix)); @@ -78,7 +78,7 @@ public class DebtCalculatorTest { @Test public void constant_function() { int constant = 2; - issue.setEffortToFix(null); + issue.setGap(null); rule.setFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE, null, constant + "min")); assertThat(underTest.calculate(issue).toMinutes()).isEqualTo(2); @@ -87,7 +87,7 @@ public class DebtCalculatorTest { @Test(expected = IllegalArgumentException.class) public void effort_to_fix_must_not_be_set_with_constant_function() { int constant = 2; - issue.setEffortToFix(3.0); + issue.setGap(3.0); rule.setFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE, null, constant + "min")); underTest.calculate(issue); @@ -98,7 +98,7 @@ public class DebtCalculatorTest { double effortToFix = 3.0; int coefficient = 2; int offset = 5; - issue.setEffortToFix(effortToFix); + issue.setGap(effortToFix); rule.setFunction(new DefaultDebtRemediationFunction( DebtRemediationFunction.Type.LINEAR_OFFSET, coefficient + "min", offset + "min")); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/EffortAggregatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/EffortAggregatorTest.java index 5c1e3f43754..7ce171dd72d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/EffortAggregatorTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/EffortAggregatorTest.java @@ -217,15 +217,15 @@ public class EffortAggregatorTest { } private static DefaultIssue newCodeSmellIssue(long effort) { - return newCodeSmellIssueWithoutEffort().setDebt(Duration.create(effort)).setType(CODE_SMELL); + return newCodeSmellIssueWithoutEffort().setEffort(Duration.create(effort)).setType(CODE_SMELL); } private static DefaultIssue newBugIssue(long effort) { - return newCodeSmellIssueWithoutEffort().setDebt(Duration.create(effort)).setType(BUG); + return newCodeSmellIssueWithoutEffort().setEffort(Duration.create(effort)).setType(BUG); } private static DefaultIssue newVulnerabilityIssue(long effort) { - return newCodeSmellIssueWithoutEffort().setDebt(Duration.create(effort)).setType(VULNERABILITY); + return newCodeSmellIssueWithoutEffort().setEffort(Duration.create(effort)).setType(VULNERABILITY); } private static DefaultIssue newCodeSmellIssueWithoutEffort() { diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueAssignerTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueAssignerTest.java index 4b5e05b6a9d..45dbe30b7ac 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueAssignerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueAssignerTest.java @@ -181,7 +181,7 @@ public class IssueAssignerTest { underTest.onIssue(FILE, issue); assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly( - "No SCM info has been found for issue DefaultIssue[key=<null>,type=VULNERABILITY,componentUuid=<null>,componentKey=<null>,moduleUuid=<null>,moduleUuidPath=<null>,projectUuid=<null>,projectKey=<null>,ruleKey=<null>,language=<null>,severity=<null>,manualSeverity=false,message=<null>,line=2,effortToFix=<null>,debt=<null>,status=<null>,resolution=<null>,reporter=<null>,assignee=<null>,checksum=<null>,attributes=<null>,authorLogin=<null>,actionPlanKey=<null>,comments=<null>,tags=<null>,locations=<null>,creationDate=<null>,updateDate=<null>,closeDate=<null>,currentChange=<null>,changes=<null>,isNew=true,beingClosed=false,onDisabledRule=false,isChanged=false,sendNotifications=false,selectedAt=<null>]"); + "No SCM info has been found for issue DefaultIssue[key=<null>,type=VULNERABILITY,componentUuid=<null>,componentKey=<null>,moduleUuid=<null>,moduleUuidPath=<null>,projectUuid=<null>,projectKey=<null>,ruleKey=<null>,language=<null>,severity=<null>,manualSeverity=false,message=<null>,line=2,gap=<null>,effort=<null>,status=<null>,resolution=<null>,reporter=<null>,assignee=<null>,checksum=<null>,attributes=<null>,authorLogin=<null>,actionPlanKey=<null>,comments=<null>,tags=<null>,locations=<null>,creationDate=<null>,updateDate=<null>,closeDate=<null>,currentChange=<null>,changes=<null>,isNew=true,beingClosed=false,onDisabledRule=false,isChanged=false,sendNotifications=false,selectedAt=<null>]"); } private void setSingleChangeset(String author, Long date, String revision) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueLifecycleTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueLifecycleTest.java index f9957a41dce..f9eafe22b03 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueLifecycleTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/IssueLifecycleTest.java @@ -25,10 +25,10 @@ import org.junit.Test; import org.sonar.api.utils.Duration; import org.sonar.core.issue.DefaultIssue; import org.sonar.core.issue.IssueChangeContext; -import org.sonar.server.issue.IssueUpdater; -import org.sonar.server.issue.workflow.IssueWorkflow; import org.sonar.db.protobuf.DbCommons; import org.sonar.db.protobuf.DbIssues; +import org.sonar.server.issue.IssueUpdater; +import org.sonar.server.issue.workflow.IssueWorkflow; import static com.google.common.collect.Lists.newArrayList; import static org.assertj.core.api.Assertions.assertThat; @@ -121,8 +121,8 @@ public class IssueLifecycleTest { .setSelectedAt(1000L) .setLine(10) .setMessage("message") - .setEffortToFix(15d) - .setDebt(Duration.create(15L)) + .setGap(15d) + .setEffort(Duration.create(15L)) .setManualSeverity(false) .setLocations(issueLocations); @@ -148,7 +148,7 @@ public class IssueLifecycleTest { verify(updater).setPastSeverity(raw, BLOCKER, issueChangeContext); verify(updater).setPastLine(raw, 10); verify(updater).setPastMessage(raw, "message", issueChangeContext); - verify(updater).setPastTechnicalDebt(raw, Duration.create(15L), issueChangeContext); + verify(updater).setPastEffort(raw, Duration.create(15L), issueChangeContext); verify(updater).setPastLocations(raw, issueLocations); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortAggregatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortAggregatorTest.java index 5d2d2e21a96..b3ad6e62692 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortAggregatorTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortAggregatorTest.java @@ -247,7 +247,7 @@ public class NewEffortAggregatorTest { @Test public void no_measures_if_no_periods() { periodsHolder.setPeriods(); - DefaultIssue unresolved = new DefaultIssue().setDebt(Duration.create(10)); + DefaultIssue unresolved = new DefaultIssue().setEffort(Duration.create(10)); verifyZeroInteractions(calculator); underTest.beforeComponent(FILE); @@ -264,15 +264,15 @@ public class NewEffortAggregatorTest { } private static DefaultIssue newCodeSmellIssue(long effort) { - return newCodeSmellIssueWithoutEffort().setDebt(Duration.create(effort)).setType(RuleType.CODE_SMELL); + return newCodeSmellIssueWithoutEffort().setEffort(Duration.create(effort)).setType(RuleType.CODE_SMELL); } private static DefaultIssue newBugIssue(long effort) { - return newCodeSmellIssueWithoutEffort().setDebt(Duration.create(effort)).setType(RuleType.BUG); + return newCodeSmellIssueWithoutEffort().setEffort(Duration.create(effort)).setType(RuleType.BUG); } private static DefaultIssue newVulnerabilityIssue(long effort) { - return newCodeSmellIssueWithoutEffort().setDebt(Duration.create(effort)).setType(RuleType.VULNERABILITY); + return newCodeSmellIssueWithoutEffort().setEffort(Duration.create(effort)).setType(RuleType.VULNERABILITY); } private static DefaultIssue newCodeSmellIssueWithoutEffort() { diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortCalculatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortCalculatorTest.java index 4b80660f7bc..daba976f03d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortCalculatorTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/NewEffortCalculatorTest.java @@ -54,7 +54,7 @@ public class NewEffortCalculatorTest { */ @Test public void total_debt_if_issue_created_during_period() { - issue.setDebt(TWO_DAYS).setCreationDate(new Date(PERIOD_DATE + 10000)); + issue.setEffort(TWO_DAYS).setCreationDate(new Date(PERIOD_DATE + 10000)); long newDebt = underTest.calculate(issue, Collections.<IssueChangeDto>emptyList(), PERIOD); @@ -67,7 +67,7 @@ public class NewEffortCalculatorTest { // before period: increased to 2d // after period: increased to 5d, decreased to 4d then increased to 10d // -> new debt is 10d - 2d = 8d - issue.setDebt(TEN_DAYS).setCreationDate(new Date(PERIOD_DATE - 10000)); + issue.setEffort(TEN_DAYS).setCreationDate(new Date(PERIOD_DATE - 10000)); List<IssueChangeDto> changelog = Arrays.asList( newDebtChangelog(ONE_DAY.toMinutes(), TWO_DAYS.toMinutes(), PERIOD_DATE - 9000), newDebtChangelog(TWO_DAYS.toMinutes(), FIVE_DAYS.toMinutes(), PERIOD_DATE + 10000), @@ -86,7 +86,7 @@ public class NewEffortCalculatorTest { // before period: increased to 10d // after period: decreased to 2d // -> new debt is 2d - 10d = -8d -> 0d - issue.setDebt(TWO_DAYS).setCreationDate(new Date(PERIOD_DATE - 10000)); + issue.setEffort(TWO_DAYS).setCreationDate(new Date(PERIOD_DATE - 10000)); List<IssueChangeDto> changelog = Arrays.asList( newDebtChangelog(ONE_DAY.toMinutes(), TEN_DAYS.toMinutes(), PERIOD_DATE - 9000), newDebtChangelog(TEN_DAYS.toMinutes(), TWO_DAYS.toMinutes(), PERIOD_DATE + 30000) @@ -102,7 +102,7 @@ public class NewEffortCalculatorTest { // creation: 1d // after period: increased to 2d, then to 5d // -> new debt is 5d - 1d = 4d - issue.setDebt(FIVE_DAYS).setCreationDate(new Date(PERIOD_DATE - 10000)); + issue.setEffort(FIVE_DAYS).setCreationDate(new Date(PERIOD_DATE - 10000)); List<IssueChangeDto> changelog = Arrays.asList( newDebtChangelog(ONE_DAY.toMinutes(), TWO_DAYS.toMinutes(), PERIOD_DATE + 20000), newDebtChangelog(TWO_DAYS.toMinutes(), FIVE_DAYS.toMinutes(), PERIOD_DATE + 30000) diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/TrackerRawInputFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/TrackerRawInputFactoryTest.java index 1b62f81a208..90c6399d0ab 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/issue/TrackerRawInputFactoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/issue/TrackerRawInputFactoryTest.java @@ -137,7 +137,7 @@ public class TrackerRawInputFactoryTest { DefaultIssue ceIssue = new DefaultIssue() .setRuleKey(RuleKey.of(CommonRuleKeys.commonRepositoryForLang("java"), "InsufficientCoverage")) .setMessage("not enough coverage") - .setEffortToFix(10.0); + .setGap(10.0); when(commonRuleEngine.process(FILE)).thenReturn(asList(ceIssue)); Input<DefaultIssue> input = underTest.create(FILE); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java index 9af64d86756..73d1c58d208 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/measure/api/MeasureComputerContextImplTest.java @@ -256,7 +256,7 @@ public class MeasureComputerContextImplTest { .setSeverity("MAJOR") .setStatus("CLOSED") .setResolution("FIXED") - .setDebt(Duration.create(10l)); + .setEffort(Duration.create(10l)); MeasureComputerContextImpl underTest = newContext(PROJECT_REF, Arrays.asList(issue)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/qualitymodel/QualityModelMeasuresVisitorForReportTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/qualitymodel/QualityModelMeasuresVisitorForReportTest.java index 871a396b5af..3068fad340b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/qualitymodel/QualityModelMeasuresVisitorForReportTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/qualitymodel/QualityModelMeasuresVisitorForReportTest.java @@ -573,7 +573,7 @@ public class QualityModelMeasuresVisitorForReportTest { private static DefaultIssue newIssue(long effort, String severity, RuleType type) { return newIssue(severity, type) - .setDebt(Duration.create(effort)); + .setEffort(Duration.create(effort)); } private static DefaultIssue newIssue(String severity, RuleType type) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java index a3084392b89..f110769f80c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java @@ -106,7 +106,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { @Test public void send_global_new_issues_notification() throws Exception { issueCache.newAppender().append( - new DefaultIssue().setSeverity(Severity.BLOCKER).setDebt(ISSUE_DURATION) + new DefaultIssue().setSeverity(Severity.BLOCKER).setEffort(ISSUE_DURATION) ).close(); when(notificationService.hasProjectSubscribersForTypes(PROJECT_UUID, SendIssueNotificationsStep.NOTIF_TYPES)).thenReturn(true); @@ -123,7 +123,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { @Test public void send_new_issues_notification_to_user() throws Exception { issueCache.newAppender().append( - new DefaultIssue().setSeverity(Severity.BLOCKER).setDebt(ISSUE_DURATION).setAssignee(ISSUE_ASSIGNEE) + new DefaultIssue().setSeverity(Severity.BLOCKER).setEffort(ISSUE_DURATION).setAssignee(ISSUE_ASSIGNEE) ).close(); when(notificationService.hasProjectSubscribersForTypes(PROJECT_UUID, SendIssueNotificationsStep.NOTIF_TYPES)).thenReturn(true); @@ -140,7 +140,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { @Test public void send_issues_change_notification() throws Exception { - DefaultIssue issue = new DefaultIssue().setSeverity(Severity.BLOCKER).setDebt(ISSUE_DURATION).setChanged(true).setSendNotifications(true); + DefaultIssue issue = new DefaultIssue().setSeverity(Severity.BLOCKER).setEffort(ISSUE_DURATION).setChanged(true).setSendNotifications(true); issueCache.newAppender().append(issue).close(); when(notificationService.hasProjectSubscribersForTypes(PROJECT_UUID, SendIssueNotificationsStep.NOTIF_TYPES)).thenReturn(true); diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueStorageTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueStorageTest.java index 282f3fef408..0ae426537a1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueStorageTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueStorageTest.java @@ -66,7 +66,7 @@ public class IssueStorageTest { .setRuleKey(RuleKey.of("squid", "AvoidCycle")) .setLine(5000) - .setDebt(Duration.create(10L)) + .setEffort(Duration.create(10L)) .setReporter("emmerik") .setResolution("OPEN") .setStatus("OPEN") @@ -103,7 +103,7 @@ public class IssueStorageTest { .setRuleKey(RuleKey.of("squid", "AvoidCycle")) .setLine(5000) - .setDebt(Duration.create(10L)) + .setEffort(Duration.create(10L)) .setReporter("emmerik") .setResolution("OPEN") .setStatus("OPEN") @@ -143,7 +143,7 @@ public class IssueStorageTest { .setRuleKey(RuleKey.of("squid", "AvoidCycle")) .setLine(5000) - .setDebt(Duration.create(10L)) + .setEffort(Duration.create(10L)) .setReporter("emmerik") .setResolution("OPEN") .setStatus("OPEN") @@ -184,7 +184,7 @@ public class IssueStorageTest { // updated fields .setLine(5000) - .setDebt(Duration.create(10L)) + .setEffort(Duration.create(10L)) .setChecksum("FFFFF") .setAuthorLogin("simon") .setAssignee("loic") @@ -231,7 +231,7 @@ public class IssueStorageTest { // updated fields .setLine(5000) - .setDebt(Duration.create(10L)) + .setEffort(Duration.create(10L)) .setChecksum("FFFFF") .setAuthorLogin("simon") .setAssignee("loic") diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueTesting.java b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueTesting.java index b9a4f8b097b..0dc4759ed23 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueTesting.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueTesting.java @@ -70,7 +70,7 @@ public class IssueTesting { doc.setAuthorLogin("roger"); doc.setLanguage("xoo"); doc.setComponentUuid("FILE_1"); - doc.setEffortToFix(3.14); + doc.setGap(3.14); doc.setFilePath("src/Foo.xoo"); doc.setDirectoryPath("/src"); doc.setMessage("the message"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueUpdaterTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueUpdaterTest.java index 7e8544ce2ef..977a3863042 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/IssueUpdaterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/IssueUpdaterTest.java @@ -411,7 +411,7 @@ public class IssueUpdaterTest { @Test public void set_effort_to_fix() { - boolean updated = updater.setEffortToFix(issue, 3.14, context); + boolean updated = updater.setGap(issue, 3.14, context); assertThat(updated).isTrue(); assertThat(issue.isChanged()).isTrue(); assertThat(issue.effortToFix()).isEqualTo(3.14); @@ -420,8 +420,8 @@ public class IssueUpdaterTest { @Test public void not_set_effort_to_fix_if_unchanged() { - issue.setEffortToFix(3.14); - boolean updated = updater.setEffortToFix(issue, 3.14, context); + issue.setGap(3.14); + boolean updated = updater.setGap(issue, 3.14, context); assertThat(updated).isFalse(); assertThat(issue.isChanged()).isFalse(); assertThat(issue.effortToFix()).isEqualTo(3.14); @@ -430,8 +430,8 @@ public class IssueUpdaterTest { @Test public void set_past_effort() { - issue.setEffortToFix(3.14); - boolean updated = updater.setPastEffortToFix(issue, 1.0, context); + issue.setGap(3.14); + boolean updated = updater.setPastGap(issue, 1.0, context); assertThat(updated).isTrue(); assertThat(issue.effortToFix()).isEqualTo(3.14); @@ -444,8 +444,8 @@ public class IssueUpdaterTest { public void set_past_technical_debt() { Duration newDebt = Duration.create(15 * 8 * 60); Duration previousDebt = Duration.create(10 * 8 * 60); - issue.setDebt(newDebt); - boolean updated = updater.setPastTechnicalDebt(issue, previousDebt, context); + issue.setEffort(newDebt); + boolean updated = updater.setPastEffort(issue, previousDebt, context); assertThat(updated).isTrue(); assertThat(issue.debt()).isEqualTo(newDebt); assertThat(issue.mustSendNotifications()).isFalse(); @@ -458,8 +458,8 @@ public class IssueUpdaterTest { @Test public void set_past_technical_debt_without_previous_value() { Duration newDebt = Duration.create(15 * 8 * 60); - issue.setDebt(newDebt); - boolean updated = updater.setPastTechnicalDebt(issue, null, context); + issue.setEffort(newDebt); + boolean updated = updater.setPastEffort(issue, null, context); assertThat(updated).isTrue(); assertThat(issue.debt()).isEqualTo(newDebt); assertThat(issue.mustSendNotifications()).isFalse(); @@ -471,9 +471,9 @@ public class IssueUpdaterTest { @Test public void set_past_technical_debt_with_null_new_value() { - issue.setDebt(null); + issue.setEffort(null); Duration previousDebt = Duration.create(10 * 8 * 60); - boolean updated = updater.setPastTechnicalDebt(issue, previousDebt, context); + boolean updated = updater.setPastEffort(issue, previousDebt, context); assertThat(updated).isTrue(); assertThat(issue.debt()).isNull(); assertThat(issue.mustSendNotifications()).isFalse(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java index 0b8ea3bb3b2..064588828e7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueStorageTest.java @@ -94,7 +94,7 @@ public class ServerIssueStorageTest { .setRuleKey(RuleKey.of("squid", "AvoidCycle")) .setProjectKey("struts") .setLine(5000) - .setDebt(Duration.create(10L)) + .setEffort(Duration.create(10L)) .setReporter("emmerik") .setResolution("OPEN") .setStatus("OPEN") @@ -133,7 +133,7 @@ public class ServerIssueStorageTest { // updated fields .setLine(5000) .setProjectUuid("CDEF") - .setDebt(Duration.create(10L)) + .setEffort(Duration.create(10L)) .setChecksum("FFFFF") .setAuthorLogin("simon") .setAssignee("loic") diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesNotificationTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesNotificationTest.java index 95cf12389be..23353762b2e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesNotificationTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesNotificationTest.java @@ -127,7 +127,7 @@ public class NewIssuesNotificationTest { .setSeverity(Severity.INFO) .setTags(Lists.newArrayList("bug", "owasp")) .setRuleKey(RuleKey.of("SonarQube", "rule-the-world")) - .setDebt(Duration.create(5L)); + .setEffort(Duration.create(5L)); } private DefaultIssue newIssue2() { @@ -137,7 +137,7 @@ public class NewIssuesNotificationTest { .setSeverity(Severity.BLOCKER) .setTags(Lists.newArrayList("owasp")) .setRuleKey(RuleKey.of("SonarQube", "rule-the-universe")) - .setDebt(Duration.create(10L)); + .setEffort(Duration.create(10L)); } private RuleDto newRule(String name, String language) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesStatisticsTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesStatisticsTest.java index 3af2917e107..8d9f966f869 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesStatisticsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesStatisticsTest.java @@ -21,10 +21,10 @@ package org.sonar.server.issue.notification; import com.google.common.collect.Lists; import org.junit.Test; -import org.sonar.core.issue.DefaultIssue; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.Severity; import org.sonar.api.utils.Duration; +import org.sonar.core.issue.DefaultIssue; import org.sonar.server.issue.notification.NewIssuesStatistics.Metric; import static org.assertj.core.api.Assertions.assertThat; @@ -76,6 +76,6 @@ public class NewIssuesStatisticsTest { .setSeverity(Severity.INFO) .setRuleKey(RuleKey.of("SonarQube", "rule-the-world")) .setTags(Lists.newArrayList("bug", "owasp")) - .setDebt(Duration.create(5L)); + .setEffort(Duration.create(5L)); } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueAdapterForFilter.java b/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueAdapterForFilter.java index d4f604a6624..567f66a3fcf 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueAdapterForFilter.java +++ b/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueAdapterForFilter.java @@ -19,17 +19,16 @@ */ package org.sonar.batch.issue; -import org.sonar.api.issue.Issue; -import org.sonar.api.issue.IssueComment; -import org.sonar.api.resources.Project; -import org.sonar.api.rule.RuleKey; -import org.sonar.api.utils.Duration; - import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; +import org.sonar.api.issue.Issue; +import org.sonar.api.issue.IssueComment; +import org.sonar.api.resources.Project; +import org.sonar.api.rule.RuleKey; +import org.sonar.api.utils.Duration; /** * @deprecated since 5.3 @@ -82,7 +81,13 @@ class DeprecatedIssueAdapterForFilter implements Issue { } @Override + @Deprecated public Double effortToFix() { + return gap(); + } + + @Override + public Double gap() { return rawIssue.hasEffortToFix() ? rawIssue.getEffortToFix() : null; } @@ -151,8 +156,14 @@ class DeprecatedIssueAdapterForFilter implements Issue { throw unsupported(); } + @Deprecated @Override public Duration debt() { + return effort(); + } + + @Override + public Duration effort() { throw unsupported(); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueWrapper.java b/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueWrapper.java index 0d63b4d8011..61e215cc931 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueWrapper.java +++ b/sonar-batch/src/main/java/org/sonar/batch/issue/DeprecatedIssueWrapper.java @@ -81,8 +81,17 @@ public class DeprecatedIssueWrapper implements Issue { return textRange != null ? textRange.start().line() : null; } + /** + * @deprecated since 5.5, replaced by {@link #gap()} + */ @Override + @Deprecated public Double effortToFix() { + return gap(); + } + + @Override + public Double gap() { return newIssue.effortToFix(); } @@ -157,6 +166,11 @@ public class DeprecatedIssueWrapper implements Issue { } @Override + public Duration effort() { + return null; + } + + @Override public String projectKey() { return null; } diff --git a/sonar-batch/src/main/java/org/sonar/batch/issue/TrackedIssueAdapter.java b/sonar-batch/src/main/java/org/sonar/batch/issue/TrackedIssueAdapter.java index c48b7a45895..f8f21ea2e0e 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/issue/TrackedIssueAdapter.java +++ b/sonar-batch/src/main/java/org/sonar/batch/issue/TrackedIssueAdapter.java @@ -68,8 +68,17 @@ public class TrackedIssueAdapter implements Issue { return issue.startLine(); } + /** + * @deprecated since 5.5, replaced by {@link #gap()} + */ @Override + @Deprecated public Double effortToFix() { + return gap(); + } + + @Override + public Double gap() { return issue.effortToFix(); } @@ -143,12 +152,21 @@ public class TrackedIssueAdapter implements Issue { return new ArrayList<>(); } + /** + * @deprecated since 5.5, replaced by {@link #effort()} + */ @Override + @Deprecated public Duration debt() { return null; } @Override + public Duration effort() { + return null; + } + + @Override public String projectKey() { return null; } diff --git a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java index cb8e08a4981..37eebd3f91b 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java @@ -71,8 +71,8 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure. private boolean manualSeverity = false; private String message; private Integer line; - private Double effortToFix; - private Duration debt; + private Double gap; + private Duration effort; private String status; private String resolution; private String reporter; @@ -267,34 +267,55 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure. return this; } + /** + * @deprecated since5.5, replaced by {@link #gap()} + */ + @Deprecated @Override @CheckForNull public Double effortToFix() { - return effortToFix; + return gap(); + } + + @Override + @CheckForNull + public Double gap() { + return gap; } - public DefaultIssue setEffortToFix(@Nullable Double d) { - Preconditions.checkArgument(d == null || d >= 0, format("Effort to fix must be greater than or equal 0 (got %s)", d)); - this.effortToFix = d; + public DefaultIssue setGap(@Nullable Double d) { + Preconditions.checkArgument(d == null || d >= 0, format("Gap must be greater than or equal 0 (got %s)", d)); + this.gap = d; return this; } /** - * Elapsed time to fix the issue + * @deprecated since5.5, replaced by {@link #effort()} */ + @Deprecated @Override @CheckForNull public Duration debt() { - return debt; + return effort(); } + /** + * Elapsed time to fix the issue + */ + @Override + @CheckForNull + public Duration effort() { + return effort; + } + + @CheckForNull - public Long debtInMinutes() { - return debt != null ? debt.toMinutes() : null; + public Long effortInMinutes() { + return effort != null ? effort.toMinutes() : null; } - public DefaultIssue setDebt(@Nullable Duration t) { - this.debt = t; + public DefaultIssue setEffort(@Nullable Duration t) { + this.effort = t; return this; } diff --git a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueBuilder.java b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueBuilder.java index 5055e705c91..a97a4c089bd 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueBuilder.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssueBuilder.java @@ -155,7 +155,7 @@ public class DefaultIssueBuilder implements Issuable.IssueBuilder { issue.setMessage(message); issue.setSeverity(severity); issue.setManualSeverity(false); - issue.setEffortToFix(effortToFix); + issue.setGap(effortToFix); issue.setLine(line); issue.setReporter(reporter); issue.setAssignee(assignee); diff --git a/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java b/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java index 9bbd084c980..2dc8be7b155 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java @@ -49,8 +49,8 @@ public class DefaultIssueTest { .setManualSeverity(true) .setMessage("a message") .setLine(7) - .setEffortToFix(1.2d) - .setDebt(Duration.create(28800L)) + .setGap(1.2d) + .setEffort(Duration.create(28800L)) .setActionPlanKey("BCDE") .setStatus(Issue.STATUS_CLOSED) .setResolution(Issue.RESOLUTION_FIXED) @@ -174,7 +174,7 @@ public class DefaultIssueTest { @Test public void test_nullable_fields() throws Exception { - issue.setEffortToFix(null).setSeverity(null).setLine(null); + issue.setGap(null).setSeverity(null).setLine(null); assertThat(issue.effortToFix()).isNull(); assertThat(issue.severity()).isNull(); assertThat(issue.line()).isNull(); diff --git a/sonar-db/src/main/java/org/sonar/db/issue/IssueDto.java b/sonar-db/src/main/java/org/sonar/db/issue/IssueDto.java index 1afe96c55c5..0fe823de213 100644 --- a/sonar-db/src/main/java/org/sonar/db/issue/IssueDto.java +++ b/sonar-db/src/main/java/org/sonar/db/issue/IssueDto.java @@ -109,8 +109,8 @@ public final class IssueDto implements Serializable { .setLine(issue.line()) .setLocations((DbIssues.Locations) issue.getLocations()) .setMessage(issue.message()) - .setGap(issue.effortToFix()) - .setEffort(issue.debtInMinutes()) + .setGap(issue.gap()) + .setEffort(issue.effortInMinutes()) .setResolution(issue.resolution()) .setStatus(issue.status()) .setSeverity(issue.severity()) @@ -158,8 +158,8 @@ public final class IssueDto implements Serializable { .setLine(issue.line()) .setLocations((DbIssues.Locations) issue.getLocations()) .setMessage(issue.message()) - .setGap(issue.effortToFix()) - .setEffort(issue.debtInMinutes()) + .setGap(issue.gap()) + .setEffort(issue.effortInMinutes()) .setResolution(issue.resolution()) .setStatus(issue.status()) .setSeverity(issue.severity()) @@ -302,7 +302,7 @@ public final class IssueDto implements Serializable { } public IssueDto setGap(@Nullable Double d) { - checkArgument(d == null || d >= 0, "Value of issue effort to fix must be positive: %d", d); + checkArgument(d == null || d >= 0, "Value of issue gap must be positive: %d", d); this.gap = d; return this; } @@ -313,7 +313,7 @@ public final class IssueDto implements Serializable { } public IssueDto setEffort(@Nullable Long l) { - checkArgument(l == null || l >= 0, "Value of issue debt must be positive: %d", l); + checkArgument(l == null || l >= 0, "Value of issue effort must be positive: %d", l); this.effort = l; return this; } @@ -726,8 +726,8 @@ public final class IssueDto implements Serializable { issue.setStatus(status); issue.setResolution(resolution); issue.setMessage(message); - issue.setEffortToFix(gap); - issue.setDebt(effort != null ? Duration.create(effort) : null); + issue.setGap(gap); + issue.setEffort(effort != null ? Duration.create(effort) : null); issue.setLine(line); issue.setChecksum(checksum); issue.setSeverity(severity); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/Issue.java b/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/Issue.java index 4dd391e8f39..45da30ad5e5 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/Issue.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/Issue.java @@ -51,9 +51,18 @@ public interface Issue { */ String severity(); - @CheckForNull + /** + * @deprecated since 5.5, replaced by {@link #effort()} + */ + @Deprecated Duration debt(); + /** + * @since 5.5 + */ + @CheckForNull + Duration effort(); + RuleType type(); } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/test/TestIssue.java b/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/test/TestIssue.java index aa743661b36..01f19e4c52e 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/test/TestIssue.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/ce/measure/test/TestIssue.java @@ -39,7 +39,7 @@ public class TestIssue implements Issue { private String resolution; private String severity; private RuleKey ruleKey; - private Duration debt; + private Duration effort; private RuleType type; private TestIssue(Builder builder) { @@ -48,7 +48,7 @@ public class TestIssue implements Issue { this.resolution = builder.resolution; this.severity = builder.severity; this.ruleKey = builder.ruleKey; - this.debt = builder.debt; + this.effort = builder.effort; this.type = builder.type; } @@ -78,16 +78,27 @@ public class TestIssue implements Issue { return severity; } + /** + * @deprecated since 5.5, replaced by {@link #effort} + */ @Override @CheckForNull + @Deprecated public Duration debt() { - return debt; + return effort(); } + /** + * @since 5.5 + */ + @Override public Duration effort() { - return debt; + return effort; } + /** + * @since 5.5 + */ @Override public RuleType type() { return type; @@ -99,7 +110,7 @@ public class TestIssue implements Issue { private String resolution; private String severity; private RuleKey ruleKey; - private Duration debt; + private Duration effort; private RuleType type; public Builder setKey(String key) { @@ -127,49 +138,63 @@ public class TestIssue implements Issue { return this; } + /** + * @deprecated since 5.5, use {@link #setEffort(Duration)} instead + */ + @Deprecated public Builder setDebt(@Nullable Duration debt) { - this.debt = debt; + return setEffort(debt); + } + + /** + * @since 5.5 + */ + public Builder setEffort(@Nullable Duration effort) { + this.effort = effort; return this; } + /** + * @since 5.5 + */ public Builder setType(RuleType type) { this.type = validateType(type); return this; } - private static String validateKey(String key){ + private static String validateKey(String key) { checkNotNull(key, "key cannot be null"); return key; } - private static RuleKey validateRuleKey(RuleKey ruleKey){ + private static RuleKey validateRuleKey(RuleKey ruleKey) { checkNotNull(ruleKey, "ruleKey cannot be null"); return ruleKey; } - private static String validateResolution(@Nullable String resolution){ + private static String validateResolution(@Nullable String resolution) { checkArgument(resolution == null || org.sonar.api.issue.Issue.RESOLUTIONS.contains(resolution), String.format("resolution '%s' is invalid", resolution)); return resolution; } - private static String validateSeverity(String severity){ + private static String validateSeverity(String severity) { checkNotNull(severity, "severity cannot be null"); checkArgument(Severity.ALL.contains(severity), String.format("severity '%s' is invalid", severity)); return severity; } - private static String validateStatus(String status){ + private static String validateStatus(String status) { checkNotNull(status, "status cannot be null"); checkArgument(org.sonar.api.issue.Issue.STATUSES.contains(status), String.format("status '%s' is invalid", status)); return status; } - private static RuleType validateType(RuleType type){ + private static RuleType validateType(RuleType type) { checkNotNull(type, "type cannot be null"); return type; } - public Issue build(){ + public Issue build() { validateKey(key); validateResolution(resolution); validateSeverity(severity); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/issue/Issue.java b/sonar-plugin-api/src/main/java/org/sonar/api/issue/Issue.java index f3aae0b962d..539ad85feef 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/issue/Issue.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/issue/Issue.java @@ -106,6 +106,13 @@ public interface Issue extends Serializable { Integer line(); /** + * @deprecated since 5.5, replaced by {@link #gap()} + */ + @Deprecated + @CheckForNull + Double effortToFix(); + + /** * Arbitrary distance to threshold for resolving the issue. * <p/> * For examples: @@ -114,9 +121,11 @@ public interface Issue extends Serializable { * <li>for the rule "Avoid Duplications" : number of duplicated blocks</li> * <li>for the rule "Insufficient Line Coverage" : number of lines to cover to reach the accepted threshold</li> * </ul> + * + * @since 5.5 */ @CheckForNull - Double effortToFix(); + Double gap(); /** * See constant values in {@link Issue}. @@ -186,12 +195,18 @@ public interface Issue extends Serializable { boolean isNew(); /** - * @since 5.0 + * @deprecated since 5.5, replaced by {@link #effort()} */ - @CheckForNull + @Deprecated Duration debt(); /** + * @since 5.5 + */ + @CheckForNull + Duration effort(); + + /** * @since 5.0 */ String projectKey(); |