Skip to content

Commit f978f2f

Browse files
committed
SONARJAVA-1360 Fix IllegalArgumentException when BytecodeVisitor raise an issue at file level
1 parent 2345ae8 commit f978f2f

6 files changed

Lines changed: 23 additions & 5 deletions

File tree

its/plugin/projects/squid/src/main/java/package2/Class2.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ public class Class2 {
66
public Class1 method() {
77
return null;
88
}
9+
10+
enum EmptyEnum {
11+
12+
}
913
}

its/plugin/tests/src/test/java/com/sonar/it/java/suite/SquidTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import com.sonar.orchestrator.Orchestrator;
2323
import com.sonar.orchestrator.build.MavenBuild;
24-
import org.junit.Assume;
2524
import org.junit.BeforeClass;
2625
import org.junit.ClassRule;
2726
import org.junit.Test;
@@ -71,4 +70,13 @@ public void should_detect_missing_package_info() throws Exception {
7170
issues = issueClient.find(IssueQuery.create().components("com.sonarsource.it.samples:squid:src/test/java/package1")).list();
7271
assertThat(issues).isEmpty();
7372
}
73+
74+
@Test
75+
public void should_not_fail_on_bytecode_visitor_issue_on_file() throws Exception {
76+
IssueClient issueClient = orchestrator.getServer().wsClient().issueClient();
77+
List<Issue> issues = issueClient.find(IssueQuery.create().components(JavaTestSuite.keyFor("com.sonarsource.it.samples:squid", "package2/", "Class2.java"))).list();
78+
assertThat(issues).hasSize(1);
79+
assertThat(issues.get(0).ruleKey()).isEqualTo("squid:UnusedPrivateMethod");
80+
assertThat(issues.get(0).line()).isNull();
81+
}
7482
}

its/plugin/tests/src/test/resources/com/sonar/it/java/SquidTest/squid-backup.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,10 @@
1313
<key>S1228</key>
1414
<priority>MAJOR</priority>
1515
</rule>
16+
<rule>
17+
<repositoryKey>squid</repositoryKey>
18+
<key>UnusedPrivateMethod</key>
19+
<priority>MAJOR</priority>
20+
</rule>
1621
</rules>
17-
</profile>
22+
</profile>

java-checks/src/main/java/org/sonar/java/checks/UnusedPrivateMethodCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void visitMethod(AsmMethod asmMethod) {
7171
messageStr += Joiner.on(",").join(params) + ")' is never used.";
7272
}
7373
int line = getMethodLineNumber(asmMethod);
74-
getContext().reportIssue(this, getSourceFile(asmClass), messageStr, line > 0 ? line : 0);
74+
getContext().reportIssue(this, getSourceFile(asmClass), messageStr, line);
7575
}
7676
}
7777

java-checks/src/main/java/org/sonar/java/checks/UnusedProtectedMethodCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void visitClass(AsmClass asmClass) {
4949
public void visitMethod(AsmMethod asmMethod) {
5050
if (isUnusedNonOverridenProtectedMethod(asmMethod) && !asmClass.isAbstract() && !SerializableContract.methodMatch(asmMethod)) {
5151
int methodLineNumber = getMethodLineNumber(asmMethod);
52-
getContext().reportIssue(this, getSourceFile(asmClass), "Protected method '" + asmMethod.getName() + "(...)' is never used.", methodLineNumber > 0 ? methodLineNumber : 0);
52+
getContext().reportIssue(this, getSourceFile(asmClass), "Protected method '" + asmMethod.getName() + "(...)' is never used.", methodLineNumber);
5353
}
5454
}
5555

java-squid/src/main/java/org/sonar/java/SonarComponents.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ public void addIssue(File file, JavaCheck check, int line, String message, @Null
192192
Issuable.IssueBuilder issueBuilder = issuable.newIssueBuilder()
193193
.ruleKey(key)
194194
.message(message);
195-
if (line > -1) {
195+
if (line > 0) {
196+
// Optional line index, starting from 1. It must not be zero or negative.
196197
issueBuilder.line(line);
197198
}
198199
if (cost == null) {

0 commit comments

Comments
 (0)