Skip to content

Commit 9cc9a8a

Browse files
SONARJAVA-4913 Properly reset visitor's state in S1181
1 parent 78ab16d commit 9cc9a8a

6 files changed

Lines changed: 198 additions & 4 deletions

File tree

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"ruleKey": "S1181",
33
"hasTruePositives": true,
4-
"falseNegatives": 2,
4+
"falseNegatives": 3,
55
"falsePositives": 0
6-
}
6+
}

its/ruling/src/test/resources/commons-beanutils/java-S1181.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
2+
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/BeanUtilsBean.java": [
3+
1057,
4+
1116
5+
],
26
"commons-beanutils:commons-beanutils:src/main/java/org/apache/commons/beanutils2/ConvertingWrapDynaBean.java": [
37
72
48
],
@@ -9,5 +13,5 @@
913
286,
1014
323,
1115
356
12-
],
16+
]
1317
}

its/ruling/src/test/resources/eclipse-jetty-similar-to-main/java-S1181.json

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,66 @@
9393
154,
9494
188
9595
],
96+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java": [
97+
674,
98+
735
99+
],
100+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/AsyncRequestLogWriter.java": [
101+
86
102+
],
96103
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/DetectorConnectionFactory.java": [
97104
216
98105
],
106+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java": [
107+
414,
108+
427,
109+
516,
110+
551,
111+
569,
112+
649,
113+
787,
114+
820,
115+
878,
116+
999,
117+
1016,
118+
1032
119+
],
120+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java": [
121+
562,
122+
672,
123+
819,
124+
1006
125+
],
126+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java": [
127+
596,
128+
705,
129+
859,
130+
934,
131+
1002,
132+
1279,
133+
1296,
134+
1456,
135+
1466,
136+
1552
137+
],
99138
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/MultiPartFormInputStream.java": [
100139
627
101140
],
141+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/ProxyConnectionFactory.java": [
142+
200,
143+
229,
144+
542
145+
],
146+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/Request.java": [
147+
1436,
148+
2344
149+
],
102150
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/ResourceContentFactory.java": [
103151
63
104152
],
153+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/ResponseWriter.java": [
154+
152
155+
],
105156
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/Server.java": [
106157
405,
107158
431,
@@ -123,7 +174,10 @@
123174
1380,
124175
1401
125176
],
177+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java": [
178+
91
179+
],
126180
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionData.java": [
127181
107
128-
],
182+
]
129183
}

its/ruling/src/test/resources/eclipse-jetty/java-S1181.json

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,66 @@
9393
154,
9494
188
9595
],
96+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java": [
97+
674,
98+
735
99+
],
100+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/AsyncRequestLogWriter.java": [
101+
86
102+
],
96103
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/DetectorConnectionFactory.java": [
97104
216
98105
],
106+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java": [
107+
414,
108+
427,
109+
516,
110+
551,
111+
569,
112+
649,
113+
787,
114+
820,
115+
878,
116+
999,
117+
1016,
118+
1032
119+
],
120+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java": [
121+
562,
122+
672,
123+
819,
124+
1006
125+
],
126+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java": [
127+
596,
128+
705,
129+
859,
130+
934,
131+
1002,
132+
1279,
133+
1296,
134+
1456,
135+
1466,
136+
1552
137+
],
99138
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/MultiPartFormInputStream.java": [
100139
627
101140
],
141+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/ProxyConnectionFactory.java": [
142+
200,
143+
229,
144+
542
145+
],
146+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/Request.java": [
147+
1436,
148+
2344
149+
],
102150
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/ResourceContentFactory.java": [
103151
63
104152
],
153+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/ResponseWriter.java": [
154+
152
155+
],
105156
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/Server.java": [
106157
405,
107158
431,
@@ -123,6 +174,9 @@
123174
1380,
124175
1401
125176
],
177+
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java": [
178+
91
179+
],
126180
"org.eclipse.jetty:jetty-project:jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionData.java": [
127181
107
128182
],
@@ -135,11 +189,47 @@
135189
"org.eclipse.jetty:jetty-project:jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONObjectConvertor.java": [
136190
94
137191
],
192+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/BufferUtil.java": [
193+
1179
194+
],
138195
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/Callback.java": [
139196
197,
140197
210,
141198
380
142199
],
200+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/DeprecationWarning.java": [
201+
46,
202+
76
203+
],
204+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/JavaVersion.java": [
205+
49
206+
],
207+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/ManifestUtils.java": [
208+
54,
209+
82
210+
],
211+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/PathWatcher.java": [
212+
938,
213+
1030,
214+
1327,
215+
1350
216+
],
217+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/Pool.java": [
218+
250
219+
],
220+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java": [
221+
414
222+
],
223+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java": [
224+
680,
225+
825,
226+
846,
227+
867,
228+
888
229+
],
230+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/ServiceLoaderSpliterator.java": [
231+
46
232+
],
143233
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/SocketAddressResolver.java": [
144234
77,
145235
189
@@ -148,12 +238,28 @@
148238
110,
149239
140
150240
],
241+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/component/ContainerLifeCycle.java": [
242+
138,
243+
154,
244+
210,
245+
237,
246+
412,
247+
444,
248+
685
249+
],
151250
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/component/Dumpable.java": [
152251
126
153252
],
154253
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/component/Graceful.java": [
155254
176
156255
],
256+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java": [
257+
718,
258+
744
259+
],
260+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/ssl/KeyStoreScanner.java": [
261+
140
262+
],
157263
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SniX509ExtendedKeyManager.java": [
158264
166
159265
],
@@ -165,10 +271,30 @@
165271
1748,
166272
1771
167273
],
274+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java": [
275+
268,
276+
922
277+
],
168278
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java": [
169279
281,
170280
377
171281
],
282+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/thread/SerializedExecutor.java": [
283+
69
284+
],
285+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/thread/Sweeper.java": [
286+
144
287+
],
288+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/thread/TimerScheduler.java": [
289+
113
290+
],
291+
"org.eclipse.jetty:jetty-project:jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java": [
292+
177,
293+
340,
294+
352,
295+
364,
296+
390
297+
],
172298
"org.eclipse.jetty:jetty-project:jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java": [
173299
1838
174300
]

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ private void doNotReportWhenUnknownMethodInTryBlock() {
8585
return unknown();
8686
} catch (java.lang.Throwable e) { // Compliant with incomplete semantics, we cannot asess whether unknown will throw something.
8787
}
88+
89+
// Ensure that we still raise an issue after encountering unrelated blocks containing incomplete semantics:
90+
try {} catch (Throwable e) { // Noncompliant
91+
}
8892
}
8993

9094
class ThrowingThrowable {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public List<Tree.Kind> nodesToVisit() {
5252
@Override
5353
public void visitNode(Tree tree) {
5454
TryStatementTree tryStatement = (TryStatementTree) tree;
55+
tryBlockVisitor.reset();
5556
tryStatement.block().accept(tryBlockVisitor);
5657
if (tryBlockVisitor.containsExplicitThrowable || tryBlockVisitor.containsUnresolvableCall) {
5758
return;
@@ -128,6 +129,11 @@ private static class TryBlockVisitor extends BaseTreeVisitor {
128129
private boolean containsExplicitThrowable;
129130
private boolean containsUnresolvableCall;
130131

132+
public void reset() {
133+
containsUnresolvableCall = false;
134+
containsExplicitThrowable = false;
135+
}
136+
131137
@Override
132138
public void visitMethodInvocation(MethodInvocationTree tree) {
133139
checkIfThrowThrowable(tree.methodSymbol());

0 commit comments

Comments
 (0)