summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueCounter.java3
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/NewEffortCalculator.java14
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java3
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java13
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/utils/DateUtils.java18
5 files changed, 27 insertions, 24 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueCounter.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueCounter.java
index 6be67d9d68e..2f03f8c0b55 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueCounter.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueCounter.java
@@ -64,6 +64,7 @@ import static org.sonar.api.rule.Severity.CRITICAL;
import static org.sonar.api.rule.Severity.INFO;
import static org.sonar.api.rule.Severity.MAJOR;
import static org.sonar.api.rule.Severity.MINOR;
+import static org.sonar.api.utils.DateUtils.truncateToSeconds;
/**
* For each component, computes the measures related to number of issues:
@@ -138,7 +139,7 @@ public class IssueCounter extends IssueVisitor {
}
Period period = periodHolder.getPeriod();
// Add one second to not take into account issues created during current analysis
- if (issue.creationDate().getTime() >= period.getSnapshotDate() + 1000L) {
+ if (issue.creationDate().getTime() > truncateToSeconds(period.getSnapshotDate())) {
currentCounters.addOnPeriod(issue);
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/NewEffortCalculator.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/NewEffortCalculator.java
index f1c3bf603f0..397f3faac1c 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/NewEffortCalculator.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/NewEffortCalculator.java
@@ -24,7 +24,6 @@ import com.google.common.base.MoreObjects;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
-import java.util.Calendar;
import java.util.Collection;
import java.util.Comparator;
import java.util.Date;
@@ -33,7 +32,6 @@ import java.util.List;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.commons.lang.time.DateUtils;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.db.issue.IssueChangeDto;
@@ -41,6 +39,7 @@ import org.sonar.server.computation.task.projectanalysis.period.Period;
import org.sonar.server.issue.IssueFieldsSetter;
import static com.google.common.collect.FluentIterable.from;
+import static org.sonar.api.utils.DateUtils.truncateToSeconds;
/**
* Gets the issue debt that was introduced on a period. The algorithm
@@ -52,15 +51,10 @@ public class NewEffortCalculator {
* Changelog have to be sorted from newest to oldest.
* Null date should be the first as this happen when technical debt has changed since previous analysis.
*/
- private static final Comparator<FieldDiffs> CHANGE_ORDERING = Ordering.natural().reverse().nullsFirst().onResultOf(new Function<FieldDiffs, Date>() {
- @Override
- public Date apply(@Nonnull FieldDiffs dto) {
- return dto.creationDate();
- }
- });
+ private static final Comparator<FieldDiffs> CHANGE_ORDERING = Ordering.natural().reverse().nullsFirst().onResultOf((Function<FieldDiffs, Date>) dto -> dto.creationDate());
public long calculate(DefaultIssue issue, Collection<IssueChangeDto> debtChangelog, Period period) {
- if (issue.creationDate().getTime() > period.getSnapshotDate() + 1000L) {
+ if (issue.creationDate().getTime() > truncateToSeconds(period.getSnapshotDate())) {
return MoreObjects.firstNonNull(issue.effortInMinutes(), 0L);
}
return calculateFromChangelog(issue, debtChangelog, period.getSnapshotDate());
@@ -104,7 +98,7 @@ public class NewEffortCalculator {
}
private static boolean isBeforeOrEqual(@Nullable Date changeDate, Date periodDate) {
- return (changeDate != null) && (DateUtils.truncatedCompareTo(changeDate, periodDate, Calendar.SECOND) <= 0);
+ return (changeDate != null) && (truncateToSeconds(changeDate.getTime()) <= truncateToSeconds(periodDate.getTime()));
}
private static FieldDiffs.Diff debtDiff(FieldDiffs diffs) {
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java
index a9ca63e71f9..347c2fa3393 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java
@@ -43,6 +43,7 @@ import static org.sonar.api.rule.Severity.MAJOR;
import static org.sonar.api.rule.Severity.MINOR;
import static org.sonar.api.rules.RuleType.BUG;
import static org.sonar.api.rules.RuleType.VULNERABILITY;
+import static org.sonar.api.utils.DateUtils.truncateToSeconds;
import static org.sonar.server.computation.task.projectanalysis.component.ComponentVisitor.Order.POST_ORDER;
import static org.sonar.server.computation.task.projectanalysis.component.CrawlerDepthLimit.LEAVES;
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder;
@@ -167,7 +168,7 @@ public class NewReliabilityAndSecurityRatingMeasuresVisitor extends PathAwareVis
private static boolean isOnPeriod(DefaultIssue issue, Period period) {
// Add one second to not take into account issues created during current analysis
- return issue.creationDate().getTime() >= period.getSnapshotDate() + 1000L;
+ return issue.creationDate().getTime() > truncateToSeconds(period.getSnapshotDate());
}
}
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 8ac7a205d58..9685a49bb06 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
@@ -26,8 +26,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import java.io.Serializable;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -51,6 +49,7 @@ import org.sonar.api.utils.Duration;
import org.sonar.core.issue.tracking.Trackable;
import static java.lang.String.format;
+import static org.sonar.api.utils.DateUtils.truncateToSeconds;
public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.Issue {
@@ -368,16 +367,6 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
return this;
}
- @CheckForNull
- private static Date truncateToSeconds(@Nullable Date d) {
- if (d == null) {
- return null;
- }
- Instant instant = d.toInstant();
- instant = instant.truncatedTo(ChronoUnit.SECONDS);
- return Date.from(instant);
- }
-
@Override
@CheckForNull
public Date updateDate() {
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/DateUtils.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/DateUtils.java
index ea232916471..01e93aafa03 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/DateUtils.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/DateUtils.java
@@ -285,4 +285,22 @@ public final class DateUtils {
return Date.from(date.toInstant().plus(numberOfDays, ChronoUnit.DAYS));
}
+ @CheckForNull
+ public static Date truncateToSeconds(@Nullable Date d) {
+ if (d == null) {
+ return null;
+ }
+ return truncateToSecondsImpl(d);
+ }
+
+ public static long truncateToSeconds(long dateTime) {
+ return truncateToSecondsImpl(new Date(dateTime)).getTime();
+ }
+
+ private static Date truncateToSecondsImpl(Date d) {
+ Instant instant = d.toInstant();
+ instant = instant.truncatedTo(ChronoUnit.SECONDS);
+ return Date.from(instant);
+ }
+
}