Skip to content

Commit ea4509d

Browse files
authored
SONARJAVA-6102 : Relax rule to avoid raising too many FPs (#5483)
1 parent 1458893 commit ea4509d

5 files changed

Lines changed: 6 additions & 17 deletions

File tree

its/autoscan/src/test/java/org/sonar/java/it/AutoScanTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ public void javaCheckTestSources() throws Exception {
199199
softly.assertThat(newDiffs).containsExactlyInAnyOrderElementsOf(knownDiffs.values());
200200
softly.assertThat(newTotal).isEqualTo(knownTotal);
201201
softly.assertThat(rulesCausingFPs).hasSize(10);
202-
softly.assertThat(rulesNotReporting).hasSize(18);
202+
softly.assertThat(rulesNotReporting).hasSize(19);
203203

204204
/**
205205
* 4. Check total number of differences (FPs + FNs)

its/autoscan/src/test/resources/autoscan/autoscan-diff-by-rules.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2881,7 +2881,7 @@
28812881
},
28822882
{
28832883
"ruleKey": "8447",
2884-
"hasTruePositives": true,
2884+
"hasTruePositives": false,
28852885
"falseNegatives": 0,
28862886
"falsePositives": 0
28872887
},
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"ruleKey": "S8447",
3-
"hasTruePositives": true,
3+
"hasTruePositives": false,
44
"falseNegatives": 0,
55
"falsePositives": 0
66
}

java-checks-test-sources/default/src/main/files/non-compiling/checks/InitializeSubclassFieldsBeforeSuperSample.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -173,22 +173,11 @@ abstract class Middle extends Base {
173173

174174
Middle() {
175175
super();
176-
this.label = "value"; // Noncompliant
176+
this.label = "value"; // Compliant : cannot resolve describe() implementation, conservative approach is to not flag
177177
}
178178

179179
abstract void describe();
180180
}
181-
182-
abstract class Leaf extends Middle {
183-
Leaf() {
184-
super();
185-
}
186-
187-
@Override
188-
void describe() {
189-
IO.println(label);
190-
}
191-
}
192181
}
193182

194183
// Parameter with same name as field: bare name resolves to parameter, this.field resolves to field

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ private static boolean isFieldUsedInMethod(
7979
) {
8080
BlockTree methodBlock;
8181
if (method == null || (methodBlock = method.block()) == null) {
82-
// Can't resolve body, conservatively assume field may be used.
83-
return true;
82+
// Can't resolve body, assume field is not used to avoid false positives
83+
return false;
8484
}
8585
SymbolUsedVisitor symbolUsedVisitor = new SymbolUsedVisitor(symbol, childClass, visitedMethods);
8686
methodBlock.body().forEach(statement -> statement.accept(symbolUsedVisitor));

0 commit comments

Comments
 (0)