]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4865 Do not fail when issue message is greater than 4000 (just truncate)
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 24 Aug 2015 11:23:12 +0000 (13:23 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 24 Aug 2015 11:23:50 +0000 (13:23 +0200)
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultIssue.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultIssueLocation.java
sonar-plugin-api/src/test/java/org/sonar/api/batch/sensor/issue/internal/DefaultIssueLocationTest.java

index 5538e155b7b571e143fd74eeb3a1d5646c62df72..e4c3b73ba85dfda3311e41487452a05e01b3bdf2 100644 (file)
@@ -39,6 +39,8 @@ import org.sonar.api.batch.sensor.issue.NewIssue;
 import org.sonar.api.batch.sensor.issue.NewIssueLocation;
 import org.sonar.api.rule.RuleKey;
 
+import static java.lang.String.format;
+
 public class DefaultIssue extends DefaultStorable implements Issue, NewIssue {
 
   private static final class ToExecutionFlow implements Function<List<IssueLocation>, ExecutionFlow> {
@@ -77,6 +79,7 @@ public class DefaultIssue extends DefaultStorable implements Issue, NewIssue {
 
   @Override
   public DefaultIssue effortToFix(@Nullable Double effortToFix) {
+    Preconditions.checkArgument(effortToFix == null || effortToFix >= 0, format("Effort to fix must be greater than or equal 0 (got %s)", effortToFix));
     this.effortToFix = effortToFix;
     return this;
   }
index df800a0bba242af2a91399c795472b3896070f14..36673218db070b3245960628bc4acef5927ff8bd 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.api.batch.sensor.issue.internal;
 
 import com.google.common.base.Preconditions;
+import org.apache.commons.lang.StringUtils;
 import org.sonar.api.batch.fs.InputComponent;
 import org.sonar.api.batch.fs.TextRange;
 import org.sonar.api.batch.fs.internal.DefaultInputFile;
@@ -33,7 +34,7 @@ public class DefaultIssueLocation implements NewIssueLocation, IssueLocation {
   private String message;
 
   @Override
-  public NewIssueLocation on(InputComponent component) {
+  public DefaultIssueLocation on(InputComponent component) {
     Preconditions.checkArgument(component != null, "Component can't be null");
     Preconditions.checkState(this.component == null, "on() already called");
     this.component = component;
@@ -53,9 +54,7 @@ public class DefaultIssueLocation implements NewIssueLocation, IssueLocation {
   @Override
   public DefaultIssueLocation message(String message) {
     Preconditions.checkNotNull(message, "Message can't be null");
-    Preconditions.checkArgument(message.length() <= MESSAGE_MAX_SIZE,
-      "Message of an issue can't be greater than " + MESSAGE_MAX_SIZE + ": [" + message + "] size is " + message.length());
-    this.message = message;
+    this.message = StringUtils.abbreviate(StringUtils.trim(message), MESSAGE_MAX_SIZE);
     return this;
   }
 
index cffb6367bafd1fe0245aa16ce57e20af035855f2..f5d11c26a0703ac24f063c29d0fa538035ecf60f 100644 (file)
@@ -27,6 +27,8 @@ import org.junit.rules.ExpectedException;
 import org.sonar.api.batch.fs.internal.DefaultInputFile;
 import org.sonar.api.batch.fs.internal.FileMetadata;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class DefaultIssueLocationTest {
 
   @Rule
@@ -46,18 +48,13 @@ public class DefaultIssueLocationTest {
 
   @Test
   public void prevent_too_long_messages() {
-    new DefaultIssueLocation()
+    assertThat(new DefaultIssueLocation()
       .on(inputFile)
-      .message(StringUtils.repeat("a", 4000));
-
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("Message of an issue can't be greater than 4000: [aaa");
-    thrown.expectMessage("aaa] size is 4001");
+      .message(StringUtils.repeat("a", 4000)).message()).hasSize(4000);
 
-    new DefaultIssueLocation()
+    assertThat(new DefaultIssueLocation()
       .on(inputFile)
-      .message(StringUtils.repeat("a", 4001));
-
+      .message(StringUtils.repeat("a", 4001)).message()).hasSize(4000);
   }
 
 }