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> {
@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;
}
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;
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;
@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;
}
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
@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);
}
}