From: Simon Brandhof Date: Fri, 20 Jun 2014 10:02:30 +0000 (+0200) Subject: SONAR-5007 do not generate event on QProfile change on first analysis X-Git-Tag: 4.4-RC1~257 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7f8e4f2dccbd747d3c5c726ee1d1281fe2a91167;p=sonarqube.git SONAR-5007 do not generate event on QProfile change on first analysis --- diff --git a/sonar-batch/src/main/java/org/sonar/batch/rule/QProfileEventsDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/rule/QProfileEventsDecorator.java index 9f05d4e5fa0..eeb1c7fd777 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/rule/QProfileEventsDecorator.java +++ b/sonar-batch/src/main/java/org/sonar/batch/rule/QProfileEventsDecorator.java @@ -19,7 +19,6 @@ */ package org.sonar.batch.rule; -import com.google.common.collect.Maps; import org.sonar.api.batch.Decorator; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; @@ -66,16 +65,17 @@ public class QProfileEventsDecorator implements Decorator { return; } - // Load current profiles - Measure currentMeasure = context.getMeasure(CoreMetrics.QUALITY_PROFILES); - Map currentProfiles = UsedQProfiles.fromJson(currentMeasure.getData()).profilesByKey(); - // Load previous profiles - Map previousProfiles = Maps.newHashMap(); Measure previousMeasure = getPreviousMeasure(resource, CoreMetrics.QUALITY_PROFILES); - if (previousMeasure != null && previousMeasure.getData() != null) { - previousProfiles = UsedQProfiles.fromJson(previousMeasure.getData()).profilesByKey(); + if (previousMeasure == null || previousMeasure.getData() == null) { + // first analysis -> do not generate events + return; } + Map previousProfiles = UsedQProfiles.fromJson(previousMeasure.getData()).profilesByKey(); + + // Load current profiles + Measure currentMeasure = context.getMeasure(CoreMetrics.QUALITY_PROFILES); + Map currentProfiles = UsedQProfiles.fromJson(currentMeasure.getData()).profilesByKey(); // Detect new profiles or updated profiles for (QProfile profile : currentProfiles.values()) { diff --git a/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java b/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java index 5401261cfa5..e2d9ab3c51a 100644 --- a/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java +++ b/sonar-core/src/main/java/org/sonar/core/purge/PurgeableSnapshotDto.java @@ -31,7 +31,7 @@ public class PurgeableSnapshotDto implements Comparable { private boolean isLast; public Date getDate() { - return date;//NOSONAR May expose internal representation by returning reference to mutable object + return date; } public long getSnapshotId() { @@ -47,7 +47,7 @@ public class PurgeableSnapshotDto implements Comparable { } public PurgeableSnapshotDto setDate(Date date) { - this.date = date;//NOSONAR May expose internal representation by incorporating reference to mutable object + this.date = date; return this; } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rules/QProfile.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rules/QProfile.java index 189cdc06158..7a8d62152d7 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rules/QProfile.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rules/QProfile.java @@ -19,6 +19,8 @@ */ package org.sonar.api.batch.rules; +import com.google.common.base.Objects; + public class QProfile { private final String key, name, language; @@ -58,4 +60,13 @@ public class QProfile { public int hashCode() { return key.hashCode(); } + + @Override + public String toString() { + return Objects.toStringHelper(this) + .add("key", key) + .add("name", name) + .add("language", language) + .toString(); + } }