Skip to content

Commit 2cb03dd

Browse files
committed
Review API
1 parent 875c62d commit 2cb03dd

File tree

4 files changed

+38
-45
lines changed

4 files changed

+38
-45
lines changed

plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorContext.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.io.InputStream;
2323
import java.io.Serializable;
24+
import java.util.Collection;
2425
import org.sonar.api.Beta;
2526
import org.sonar.api.SonarRuntime;
2627
import org.sonar.api.batch.fs.FileSystem;
@@ -45,6 +46,7 @@
4546
import org.sonar.api.batch.sensor.symbol.NewSymbolTable;
4647
import org.sonar.api.config.Configuration;
4748
import org.sonar.api.config.Settings;
49+
import org.sonar.api.issue.SonarResolveData;
4850
import org.sonar.api.scanner.fs.InputProject;
4951
import org.sonar.api.scanner.sensor.ProjectSensor;
5052
import org.sonar.api.utils.Version;
@@ -305,4 +307,12 @@ public interface SensorContext {
305307
*/
306308
@Beta
307309
boolean isFeatureAvailable(String featureName);
310+
311+
/**
312+
* Register sonar-resolve annotations for a file.
313+
* @param inputFile the file containing the annotations
314+
* @param data the annotation data parsed from the file
315+
* @since 13.5
316+
*/
317+
void addSonarResolveData(InputFile inputFile, Collection<SonarResolveData> data);
308318
}

plugin-api/src/main/java/org/sonar/api/issue/SonarResolveData.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
/**
2727
* Holds per-line annotation data parsed from {@code sonar-resolve}.
28+
*
2829
* @since 13.5
2930
*/
3031
public final class SonarResolveData {
@@ -35,20 +36,30 @@ public enum Status {
3536
}
3637

3738
private final Set<RuleKey> ruleKeys;
39+
private final Set<Integer> lines;
3840
private final String comment;
3941
private final Status status;
4042

4143
/**
44+
* @param lines line numbers where matching issues should be resolved
4245
* @param ruleKeys the set of rule keys targeted by the annotation
4346
* @param comment the justification comment
4447
* @param status the target status, or {@code null} to default to {@link Status#ACCEPT}
4548
*/
46-
public SonarResolveData(Set<RuleKey> ruleKeys, String comment, @Nullable Status status) {
49+
public SonarResolveData(Set<Integer> lines, Set<RuleKey> ruleKeys, String comment, @Nullable Status status) {
50+
this.lines = lines;
4751
this.ruleKeys = ruleKeys;
4852
this.comment = comment;
4953
this.status = status != null ? status : Status.ACCEPT;
5054
}
5155

56+
/**
57+
* @return line numbers where matching issues should be resolved
58+
*/
59+
public Set<Integer> lines() {
60+
return lines;
61+
}
62+
5263
/**
5364
* @return the set of rule keys targeted by the annotation
5465
*/
@@ -69,4 +80,14 @@ public String comment() {
6980
public Status status() {
7081
return status;
7182
}
83+
84+
@Override
85+
public String toString() {
86+
return "SonarResolveData{" +
87+
"ruleKeys=" + ruleKeys +
88+
", lines=" + lines +
89+
", comment='" + comment + '\'' +
90+
", status=" + status +
91+
'}';
92+
}
7293
}

plugin-api/src/main/java/org/sonar/api/issue/SonarResolveFilter.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

plugin-api/src/test/java/org/sonar/api/issue/SonarResolveDataTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,31 +30,33 @@ public class SonarResolveDataTest {
3030
@Test
3131
public void constructor_shouldStoreFields() {
3232
Set<RuleKey> ruleKeys = Set.of(RuleKey.of("java", "S123"));
33-
SonarResolveData data = new SonarResolveData(ruleKeys, "reason", SonarResolveData.Status.FALSE_POSITIVE);
33+
Set<Integer> lines = Set.of(10, 20);
34+
SonarResolveData data = new SonarResolveData(lines, ruleKeys, "reason", SonarResolveData.Status.FALSE_POSITIVE);
3435

3536
assertThat(data.ruleKeys()).isEqualTo(ruleKeys);
37+
assertThat(data.lines()).containsExactlyInAnyOrder(10, 20);
3638
assertThat(data.comment()).isEqualTo("reason");
3739
assertThat(data.status()).isEqualTo(SonarResolveData.Status.FALSE_POSITIVE);
3840
}
3941

4042
@Test
4143
public void constructor_whenStatusIsNull_shouldDefaultToAccept() {
42-
SonarResolveData data = new SonarResolveData(Set.of(RuleKey.of("java", "S123")), "reason", null);
44+
SonarResolveData data = new SonarResolveData(Set.of(1), Set.of(RuleKey.of("java", "S123")), "reason", null);
4345

4446
assertThat(data.status()).isEqualTo(SonarResolveData.Status.ACCEPT);
4547
}
4648

4749
@Test
4850
public void constructor_whenStatusIsAccept_shouldKeepAccept() {
49-
SonarResolveData data = new SonarResolveData(Set.of(RuleKey.of("java", "S123")), "reason", SonarResolveData.Status.ACCEPT);
51+
SonarResolveData data = new SonarResolveData(Set.of(1), Set.of(RuleKey.of("java", "S123")), "reason", SonarResolveData.Status.ACCEPT);
5052

5153
assertThat(data.status()).isEqualTo(SonarResolveData.Status.ACCEPT);
5254
}
5355

5456
@Test
5557
public void constructor_shouldSupportMultipleRuleKeys() {
5658
Set<RuleKey> ruleKeys = Set.of(RuleKey.of("java", "S123"), RuleKey.of("java", "S456"));
57-
SonarResolveData data = new SonarResolveData(ruleKeys, "comment", null);
59+
SonarResolveData data = new SonarResolveData(Set.of(5), ruleKeys, "comment", null);
5860

5961
assertThat(data.ruleKeys()).containsExactlyInAnyOrder(
6062
RuleKey.of("java", "S123"),

0 commit comments

Comments
 (0)