diff --git a/its/autoscan/src/test/resources/autoscan/diffs/diff_S5786.json b/its/autoscan/src/test/resources/autoscan/diffs/diff_S5786.json index 2f3eda238aa..fedbd61059e 100644 --- a/its/autoscan/src/test/resources/autoscan/diffs/diff_S5786.json +++ b/its/autoscan/src/test/resources/autoscan/diffs/diff_S5786.json @@ -1,6 +1,6 @@ { "ruleKey": "S5786", "hasTruePositives": true, - "falseNegatives": 63, + "falseNegatives": 71, "falsePositives": 0 -} +} \ No newline at end of file diff --git a/its/autoscan/src/test/resources/autoscan/diffs/diff_S5810.json b/its/autoscan/src/test/resources/autoscan/diffs/diff_S5810.json index 18fc9c78dbc..52914673711 100644 --- a/its/autoscan/src/test/resources/autoscan/diffs/diff_S5810.json +++ b/its/autoscan/src/test/resources/autoscan/diffs/diff_S5810.json @@ -1,6 +1,6 @@ { "ruleKey": "S5810", "hasTruePositives": false, - "falseNegatives": 16, + "falseNegatives": 20, "falsePositives": 0 } \ No newline at end of file diff --git a/its/ruling/src/test/resources/eclipse-jetty-similar-to-main/java-S5786.json b/its/ruling/src/test/resources/eclipse-jetty-similar-to-main/java-S5786.json index 64043b507d4..da003abc8d1 100644 --- a/its/ruling/src/test/resources/eclipse-jetty-similar-to-main/java-S5786.json +++ b/its/ruling/src/test/resources/eclipse-jetty-similar-to-main/java-S5786.json @@ -24,6 +24,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-http/src/test/java/org/eclipse/jetty/http/GZIPContentDecoderTest.java": [ 44, +50, +73, 79, 89, 102, @@ -245,7 +247,8 @@ 2554, 2630, 2703, -2758 +2758, +2819 ], "org.eclipse.jetty:jetty-project:jetty-http/src/test/java/org/eclipse/jetty/http/HttpSchemeTest.java": [ 34, @@ -432,6 +435,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java": [ 45, +50, +57, 63, 110, 133, @@ -441,6 +446,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/CyclicTimeoutTest.java": [ 34, +41, +59, 66, 77, 89, @@ -463,6 +470,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/IdleTimeoutTest.java": [ 32, +41, +65, 72, 84, 96, @@ -487,17 +496,24 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SelectorManagerTest.java": [ 43, +49, +56, 64 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointInterestsTest.java": [ 48, +110, 123 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointOpenCloseTest.java": [ +34, +45, +52, 68, 142 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java": [ +126, 136, 190, 239, @@ -507,6 +523,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java": [ 62, +145, +173, 278, 307, 335, @@ -517,6 +535,9 @@ 522 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SslEngineBehaviorTest.java": [ +39, +44, +54, 61 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java": [ @@ -536,6 +557,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ConnectorServerTest.java": [ 55, +61, 68, 78, 93, @@ -550,12 +572,15 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerLifeCycleTest.java": [ 34, +40, +50, 56, 73, 101 ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java": [ 37, +46, 53, 63, 85, @@ -573,6 +598,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java": [ 41, +46, +52, 59, 66, 77, @@ -584,6 +611,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java": [ 42, +53, 62, 73, 84, @@ -605,12 +633,15 @@ 37 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/AsyncCompletionTest.java": [ +118, 204, 486, 647 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/AsyncRequestReadTest.java": [ 49, +56, +66, 73, 120, 219, @@ -619,6 +650,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/AsyncStressTest.java": [ 54, +76, +90, 97 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/CheckReverseProxyHeadersTest.java": [ @@ -651,10 +684,13 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java": [ 45, +54, +76, 82 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/DetectorConnectionTest.java": [ 51, +122, 129, 149, 169, @@ -676,6 +712,9 @@ 634 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ErrorHandlerTest.java": [ +54, +61, +133, 140, 157, 172, @@ -698,15 +737,19 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ExtendedServerTest.java": [ 48, +51, 115 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ForwardedRequestCustomizerTest.java": [ +69, +127, 589, 605, 624 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/GracefulStopTest.java": [ 55, +113, 285, 300, 320, @@ -725,6 +768,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpChannelEventTest.java": [ 44, +59, 66, 109, 143, @@ -733,6 +777,8 @@ 244 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java": [ +79, +100, 107, 156, 175, @@ -786,6 +832,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpInputAsyncStateTest.java": [ 49, +95, +269, 275, 291, 308, @@ -812,6 +860,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpInputTest.java": [ 41, +178, +192, 198, 210, 254, @@ -885,6 +935,8 @@ 677 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpOutputTest.java": [ +69, +103, 110, 117, 124, @@ -930,6 +982,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpWriterTest.java": [ 36, +43, 69, 77, 85, @@ -971,15 +1024,20 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/InsufficientThreadsDetectionTest.java": [ 28, +34, 40, 60, 77 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LargeHeaderTest.java": [ 48, +53, +93, 99 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LocalAsyncContextTest.java": [ +53, +79, 86, 98, 110, @@ -992,6 +1050,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LocalConnectorTest.java": [ 38, +44, +55, 63, 93, 101, @@ -1014,6 +1074,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java": [ 44, +52, +79, 85, 120, 170, @@ -1088,6 +1150,8 @@ 650 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/NotAcceptingTest.java": [ +57, +79, 86, 153, 215, @@ -1096,6 +1160,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/OptionalSslConnectionTest.java": [ 43, +72, 89, 137, 158, @@ -1104,6 +1169,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java": [ 45, +51, +74, 81, 107, 132, diff --git a/its/ruling/src/test/resources/eclipse-jetty/java-S5786.json b/its/ruling/src/test/resources/eclipse-jetty/java-S5786.json index b93f9e3d39a..4620626c690 100644 --- a/its/ruling/src/test/resources/eclipse-jetty/java-S5786.json +++ b/its/ruling/src/test/resources/eclipse-jetty/java-S5786.json @@ -24,6 +24,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-http/src/test/java/org/eclipse/jetty/http/GZIPContentDecoderTest.java": [ 44, +50, +73, 79, 89, 102, @@ -245,7 +247,8 @@ 2554, 2630, 2703, -2758 +2758, +2819 ], "org.eclipse.jetty:jetty-project:jetty-http/src/test/java/org/eclipse/jetty/http/HttpSchemeTest.java": [ 34, @@ -432,6 +435,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java": [ 45, +50, +57, 63, 110, 133, @@ -441,6 +446,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/CyclicTimeoutTest.java": [ 34, +41, +59, 66, 77, 89, @@ -463,6 +470,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/IdleTimeoutTest.java": [ 32, +41, +65, 72, 84, 96, @@ -487,17 +496,24 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SelectorManagerTest.java": [ 43, +49, +56, 64 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointInterestsTest.java": [ 48, +110, 123 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointOpenCloseTest.java": [ +34, +45, +52, 68, 142 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java": [ +126, 136, 190, 239, @@ -507,6 +523,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java": [ 62, +145, +173, 278, 307, 335, @@ -517,6 +535,9 @@ 522 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/SslEngineBehaviorTest.java": [ +39, +44, +54, 61 ], "org.eclipse.jetty:jetty-project:jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java": [ @@ -536,6 +557,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ConnectorServerTest.java": [ 55, +61, 68, 78, 93, @@ -550,12 +572,15 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerLifeCycleTest.java": [ 34, +40, +50, 56, 73, 101 ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java": [ 37, +46, 53, 63, 85, @@ -573,6 +598,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java": [ 41, +46, +52, 59, 66, 77, @@ -584,6 +611,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java": [ 42, +53, 62, 73, 84, @@ -605,12 +633,15 @@ 37 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/AsyncCompletionTest.java": [ +118, 204, 486, 647 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/AsyncRequestReadTest.java": [ 49, +56, +66, 73, 120, 219, @@ -619,6 +650,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/AsyncStressTest.java": [ 54, +76, +90, 97 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/CheckReverseProxyHeadersTest.java": [ @@ -651,10 +684,17 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java": [ 45, +54, +76, 82 ], +"org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/DelayedServerTest.java": [ +33, +36 +], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/DetectorConnectionTest.java": [ 51, +122, 129, 149, 169, @@ -676,6 +716,9 @@ 634 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ErrorHandlerTest.java": [ +54, +61, +133, 140, 157, 172, @@ -698,15 +741,19 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ExtendedServerTest.java": [ 48, +51, 115 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ForwardedRequestCustomizerTest.java": [ +69, +127, 589, 605, 624 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/GracefulStopTest.java": [ 55, +113, 285, 300, 320, @@ -725,6 +772,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpChannelEventTest.java": [ 44, +59, 66, 109, 143, @@ -733,6 +781,8 @@ 244 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java": [ +79, +100, 107, 156, 175, @@ -786,6 +836,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpInputAsyncStateTest.java": [ 49, +95, +269, 275, 291, 308, @@ -812,6 +864,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpInputTest.java": [ 41, +178, +192, 198, 210, 254, @@ -885,6 +939,8 @@ 677 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpOutputTest.java": [ +69, +103, 110, 117, 124, @@ -928,8 +984,14 @@ 921, 976 ], +"org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestFixture.java": [ +43, +67, +90 +], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/HttpWriterTest.java": [ 36, +43, 69, 77, 85, @@ -971,15 +1033,20 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/InsufficientThreadsDetectionTest.java": [ 28, +34, 40, 60, 77 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LargeHeaderTest.java": [ 48, +53, +93, 99 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LocalAsyncContextTest.java": [ +53, +79, 86, 98, 110, @@ -992,6 +1059,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LocalConnectorTest.java": [ 38, +44, +55, 63, 93, 101, @@ -1014,6 +1083,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java": [ 44, +52, +79, 85, 120, 170, @@ -1088,6 +1159,8 @@ 650 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/NotAcceptingTest.java": [ +57, +79, 86, 153, 215, @@ -1096,6 +1169,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/OptionalSslConnectionTest.java": [ 43, +72, 89, 137, 158, @@ -1104,6 +1178,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java": [ 45, +51, +74, 81, 107, 132, @@ -1151,12 +1227,15 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ProxyProtocolTest.java": [ 42, +57, 64, 120, 221 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java": [ 103, +111, +134, 141, 201, 236, @@ -1205,6 +1284,8 @@ 350 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java": [ +122, +182, 190, 295, 310, @@ -1247,6 +1328,15 @@ 1417, 1431 ], +"org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorCloseTest.java": [ +24, +27, +33 +], +"org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorHttpServerTest.java": [ +26, +29 +], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorTest.java": [ 62, 122, @@ -1259,6 +1349,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorTimeoutTest.java": [ 49, +52, 60, 70, 89, @@ -1267,14 +1358,17 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ServletRequestWrapperTest.java": [ 36, +43, 55 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ServletWriterTest.java": [ 45, +63, 69 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ShutdownMonitorTest.java": [ 38, +41, 47, 78, 85, @@ -1284,6 +1378,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/SlowClientWithPipelinedRequestTest.java": [ 44, +77, 87 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/StopTest.java": [ @@ -1297,20 +1392,31 @@ 457 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/StressTest.java": [ +55, +95, +114, +121, 131, 137, 147, 153 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ThreadStarvationTest.java": [ +155, 162, 190, 280 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/AllowSymLinkAliasCheckerTest.java": [ +79, +86, 195 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/BufferedResponseHandlerTest.java": [ +44, +54, +79, +85, 99, 112, 122, @@ -1332,6 +1438,9 @@ 343 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerGetResourceTest.java": [ +49, +60, +132, 138, 146, 159, @@ -1375,11 +1484,15 @@ 758 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/DebugHandlerTest.java": [ +69, +134, 140, 154 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/DefaultHandlerTest.java": [ 39, +46, +66, 72, 98, 124 @@ -1403,9 +1516,13 @@ 262 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/InetAccessHandlerTest.java": [ +55, +80, 87 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/NcsaRequestLogTest.java": [ +107, +113, 127, 139, 163, @@ -1434,9 +1551,16 @@ 563 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerRangeTest.java": [ +42, +48, +87, 93 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java": [ +67, +78, +143, +149, 155, 164, 178, @@ -1453,6 +1577,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/ScopedHandlerTest.java": [ 34, +39, 45, 57, 72, @@ -1460,6 +1585,9 @@ 114 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerTest.java": [ +57, +66, +150, 160, 172, 185, @@ -1474,6 +1602,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java": [ 53, +62, +79, 86, 179, 240, @@ -1486,12 +1616,15 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/handler/ThreadLimitHandlerTest.java": [ 46, +53, +63, 70, 108, 141, 174 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/resource/RangeWriterTest.java": [ +56, 119, 130, 145, @@ -1517,6 +1650,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java": [ 68, +111, +130, 137, 166, 194, @@ -1527,12 +1662,16 @@ 53 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLSelectChannelConnectorLoadTest.java": [ +55, +62, +89, 96, 105, 158 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java": [ 72, +83, 188, 248 ], @@ -1542,6 +1681,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java": [ 76, +84, +158, 165, 173, 187, @@ -1557,6 +1698,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslConnectionFactoryTest.java": [ 63, +70, +114, 121, 128, 135, @@ -1564,10 +1707,18 @@ 192 ], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslContextFactoryReloadTest.java": [ +90, 97, 155 ], +"org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslSelectChannelTimeoutTest.java": [ +33, +44 +], "org.eclipse.jetty:jetty-project:jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslUploadTest.java": [ +54, +61, +79, 87 ], "org.eclipse.jetty:jetty-project:jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/JMXTest.java": [ @@ -1596,6 +1747,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/JettyLoggerTest.java": [ 38, +41, 48, 83, 108, @@ -1652,6 +1804,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java": [ 44, +67, 73, 129, 147, @@ -1779,6 +1932,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/IteratingCallbackTest.java": [ 34, +39, +46, 52, 77, 104, @@ -2057,6 +2212,9 @@ 333 ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/ScannerTest.java": [ +48, +56, +107, 126, 201, 277, @@ -2103,6 +2261,7 @@ 249 ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/TestIntrospectionUtil.java": [ +108, 130, 146, 159, @@ -2377,6 +2536,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/ssl/SslContextFactoryTest.java": [ 69, +74, 88, 108, 139, @@ -2430,6 +2590,7 @@ ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/thread/EatWhatYouKillTest.java": [ 34, +55, 62 ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java": [ @@ -2450,6 +2611,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/thread/ReservedThreadExecutorTest.java": [ 40, +61, +70, 76, 83, 117, @@ -2458,6 +2621,7 @@ 271 ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/thread/SchedulerTest.java": [ +63, 80, 102, 140, @@ -2470,6 +2634,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/thread/SweeperTest.java": [ 32, +37, +44, 50, 56, 95 @@ -2485,6 +2651,8 @@ ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/thread/strategy/ExecuteProduceConsumeTest.java": [ 36, +48, +79, 87, 94, 105, @@ -2494,6 +2662,8 @@ 265 ], "org.eclipse.jetty:jetty-project:jetty-util/src/test/java/org/eclipse/jetty/util/thread/strategy/ExecutionStrategyTest.java": [ +68, +75, 92, 112, 150 diff --git a/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheckSample.java b/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheckSample.java index 208b9bf2ff5..301775fe00b 100644 --- a/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheckSample.java +++ b/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheckSample.java @@ -1,6 +1,10 @@ package checks.tests; import java.util.Locale; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -8,6 +12,30 @@ class JUnit5DefaultPackageClassAndMethodCheckSample { + @BeforeAll + public static void beforeAll() {} // Noncompliant {{Remove this 'public' modifier.}} [[quickfixes=qf5]] +//^^^^^^ + // fix@qf5 {{Remove "public" modifier}} + // edit@qf5 [[sc=3;ec=10]] {{}} + + @AfterAll + protected static void afterAll() {} // Noncompliant {{Remove this 'protected' modifier.}} [[quickfixes=qf6]] +//^^^^^^^^^ + // fix@qf6 {{Remove "protected" modifier}} + // edit@qf6 [[sc=3;ec=13]] {{}} + + @BeforeEach + public void beforeEach() {} // Noncompliant {{Remove this 'public' modifier.}} [[quickfixes=qf7]] +//^^^^^^ + // fix@qf7 {{Remove "public" modifier}} + // edit@qf7 [[sc=3;ec=10]] {{}} + + @AfterEach + public void afterEach() {} // Noncompliant {{Remove this 'public' modifier.}} [[quickfixes=qf8]] +//^^^^^^ + // fix@qf8 {{Remove "public" modifier}} + // edit@qf8 [[sc=3;ec=10]] {{}} + @Test public void testPublic() {} // Noncompliant {{Remove this 'public' modifier.}} [[quickfixes=qf1]] //^^^^^^ @@ -89,6 +117,12 @@ void test() {} public abstract class AbstractTest { + @BeforeAll + public void beforeAll() {} // Compliant, the rule does not report on abstract classes + + @BeforeEach + public void beforeEach() {} // Compliant, the rule does not report on abstract classes + @Test protected void test_inherited() { assertEquals(42, 21 * 2); @@ -114,6 +148,14 @@ default void default_test() { class ChildTest extends AbstractTest implements InterfaceTest { + @BeforeAll + @Override + public void beforeAll() {} // Compliant, the rule does not report because it overrides a method from a superclass + + @BeforeEach + @Override + public void beforeEach() {} // Compliant, the rule does not report because it overrides a method from a superclass + @Test @Override public void test_to_implement() { diff --git a/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheckSample.java b/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheckSample.java index 6c0cbb69979..6ca1bcf3f55 100644 --- a/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheckSample.java +++ b/java-checks-test-sources/default/src/test/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheckSample.java @@ -3,6 +3,10 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -10,6 +14,9 @@ class JUnit5SilentlyIgnoreClassAndMethodCheckSample { + @BeforeAll + void beforeAll() {} // Compliant, limitation: we don't report missing "static" modifier. + @Test private void testPrivate() {} // Noncompliant {{Remove this 'private' modifier.}} //^^^^^^^ @@ -77,41 +84,66 @@ void test() { @Nested class Quickfixes { - @Test - private void testPrivate() {} // Noncompliant [[quickfixes=qf4]] + + @BeforeAll + private static void beforeAll() {} // Noncompliant {{Remove this 'private' modifier.}} [[quickfixes=qf1]] // ^^^^^^^ - // fix@qf4 {{Remove modifier}} + // fix@qf1 {{Remove "private" modifier}} + // edit@qf1 [[sc=5;ec=13]] {{}} + + @AfterAll + private static void afterAll() {} // Noncompliant {{Remove this 'private' modifier.}} [[quickfixes=qf2]] +// ^^^^^^^ + // fix@qf2 {{Remove "private" modifier}} + // edit@qf2 [[sc=5;ec=13]] {{}} + + @BeforeEach + static void beforeEach() {} // Noncompliant {{Remove this 'static' modifier.}} [[quickfixes=qf3]] +// ^^^^^^ + // fix@qf3 {{Remove "static" modifier}} + // edit@qf3 [[sc=5;ec=12]] {{}} + + @AfterEach + static void afterEach() {} // Noncompliant {{Remove this 'static' modifier.}} [[quickfixes=qf4]] +// ^^^^^^ + // fix@qf4 {{Remove "static" modifier}} // edit@qf4 [[sc=5;ec=12]] {{}} @Test - static void staticTest() {} // Noncompliant [[quickfixes=qf5]] + private void testPrivate() {} // Noncompliant [[quickfixes=qf5]] +// ^^^^^^^ + // fix@qf5 {{Remove "private" modifier}} + // edit@qf5 [[sc=5;ec=13]] {{}} + + @Test + static void staticTest() {} // Noncompliant [[quickfixes=qf6]] // ^^^^^^ - // fix@qf5 {{Remove modifier}} - // edit@qf5 [[sc=5;ec=11]] {{}} + // fix@qf6 {{Remove "static" modifier}} + // edit@qf6 [[sc=5;ec=12]] {{}} @Nested - private class PrivateWithOneTest { // Noncompliant [[quickfixes=qf3]] + private class PrivateWithOneTest { // Noncompliant [[quickfixes=qf7]] // ^^^^^^^ - // fix@qf3 {{Remove modifier}} - // edit@qf3 [[sc=5;ec=12]] {{}} + // fix@qf7 {{Remove "private" modifier}} + // edit@qf7 [[sc=5;ec=13]] {{}} @Test void test() {} } @Test - List quickFixes() { return Collections.emptyList(); } // Noncompliant [[quickfixes=qf1]] + List quickFixes() { return Collections.emptyList(); } // Noncompliant [[quickfixes=qf8]] // ^^^^^^^^^^^^ - // fix@qf1 {{Replace with void}} - // edit@qf1 [[sc=5;ec=17]] {{void}} - // edit@qf1 [[sc=40;ec=63]] {{}} + // fix@qf8 {{Replace with void}} + // edit@qf8 [[sc=5;ec=17]] {{void}} + // edit@qf8 [[sc=40;ec=63]] {{}} @Test - Object bar(boolean b, Object o) { // Noncompliant [[quickfixes=qf2]] + Object bar(boolean b, Object o) { // Noncompliant [[quickfixes=qf9]] // ^^^^^^ - // fix@qf2 {{Replace with void}} - // edit@qf2 [[sc=5;ec=11]] {{void}} - // edit@qf2 [[sl=+7;sc=16;el=+7;ec=39]] {{}} - // edit@qf2 [[sl=+9;sc=14;el=+9;ec=15]] {{}} + // fix@qf9 {{Replace with void}} + // edit@qf9 [[sc=5;ec=11]] {{void}} + // edit@qf9 [[sl=+7;sc=16;el=+7;ec=39]] {{}} + // edit@qf9 [[sl=+9;sc=14;el=+9;ec=15]] {{}} if (b) { return Collections.emptyList(); } diff --git a/java-checks/src/main/java/org/sonar/java/checks/helpers/UnitTestUtils.java b/java-checks/src/main/java/org/sonar/java/checks/helpers/UnitTestUtils.java index 61ae4d8f19a..bd57be8820f 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/helpers/UnitTestUtils.java +++ b/java-checks/src/main/java/org/sonar/java/checks/helpers/UnitTestUtils.java @@ -131,12 +131,21 @@ public final class UnitTestUtils { FAIL_METHOD_MATCHER, ASSERTIONS_METHOD_MATCHER); private static final Set TEST_ANNOTATIONS = new HashSet<>(asList(ORG_JUNIT_TEST, "org.testng.annotations.Test")); - private static final Set JUNIT5_TEST_ANNOTATIONS = new HashSet<>(asList( + private static final Set JUNIT5_TEST_ANNOTATIONS = Set.of( "org.junit.jupiter.api.Test", "org.junit.jupiter.api.RepeatedTest", "org.junit.jupiter.api.TestFactory", "org.junit.jupiter.api.TestTemplate", - "org.junit.jupiter.params.ParameterizedTest")); + "org.junit.jupiter.params.ParameterizedTest"); + + private static final Set JUNIT5_INSTANCE_LIFECYCLE_ANNOTATIONS = Set.of( + "org.junit.jupiter.api.BeforeEach", + "org.junit.jupiter.api.AfterEach"); + + private static final Set JUNIT5_CLASS_LIFECYCLE_ANNOTATIONS = Set.of( + "org.junit.jupiter.api.BeforeAll", + "org.junit.jupiter.api.AfterAll"); + private static final String NESTED_ANNOTATION = "org.junit.jupiter.api.Nested"; private static final Pattern UNIT_TEST_NAME_RELATED_TO_OBJECT_METHODS_REGEX = Pattern.compile("equal|hash_?code|object_?method|to_?string", Pattern.CASE_INSENSITIVE); @@ -162,6 +171,17 @@ private static boolean hasJUnit5TestAnnotation(SymbolMetadata symbolMetadata) { return JUNIT5_TEST_ANNOTATIONS.stream().anyMatch(symbolMetadata::isAnnotatedWith); } + public static boolean hasJUnit5InstanceLifecycleAnnotation(MethodTree tree) { + SymbolMetadata symbolMetadata = tree.symbol().metadata(); + return JUNIT5_INSTANCE_LIFECYCLE_ANNOTATIONS.stream().anyMatch(symbolMetadata::isAnnotatedWith); + } + + + public static boolean hasJUnit5ClassLifecycleAnnotation(MethodTree tree) { + SymbolMetadata symbolMetadata = tree.symbol().metadata(); + return JUNIT5_CLASS_LIFECYCLE_ANNOTATIONS.stream().anyMatch(symbolMetadata::isAnnotatedWith); + } + public static boolean isInUnitTestRelatedToObjectMethods(ExpressionTree expr) { return isUnitTestRelatedToObjectMethods(ExpressionUtils.getEnclosingMethod(expr)); } diff --git a/java-checks/src/main/java/org/sonar/java/checks/tests/AbstractJUnit5NotCompliantModifierChecker.java b/java-checks/src/main/java/org/sonar/java/checks/tests/AbstractJUnit5NotCompliantModifierChecker.java index e3192f7c2b5..41eab3a93b1 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/tests/AbstractJUnit5NotCompliantModifierChecker.java +++ b/java-checks/src/main/java/org/sonar/java/checks/tests/AbstractJUnit5NotCompliantModifierChecker.java @@ -19,10 +19,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; import org.sonar.java.checks.helpers.QuickFixHelper; import org.sonar.java.checks.helpers.UnitTestUtils; import org.sonar.java.model.ModifiersUtils; +import org.sonar.java.reporting.AnalyzerMessage; import org.sonar.java.reporting.JavaQuickFix; import org.sonar.java.reporting.JavaTextEdit; import org.sonar.plugins.java.api.IssuableSubscriptionVisitor; @@ -36,9 +36,18 @@ public abstract class AbstractJUnit5NotCompliantModifierChecker extends IssuableSubscriptionVisitor { + public enum ModifierScope { + // annotation like @Nested that applies to class + CLASS, + // annotation like @BeforeAll that applies to static class method + CLASS_METHOD, + // annotation like @BeforeEach that applies to non-static method + INSTANCE_METHOD + } + protected static final String WRONG_MODIFIER_ISSUE_MESSAGE = "Remove this '%s' modifier."; - protected abstract boolean isNonCompliantModifier(Modifier modifier, boolean isMethod); + protected abstract boolean isNonCompliantModifier(Modifier modifier, ModifierScope modifierScope); protected abstract void raiseIssueOnNonCompliantReturnType(MethodTree methodTree); @@ -46,11 +55,11 @@ protected void raiseIssueOnNonCompliantModifier(ModifierKeywordTree modifier) { QuickFixHelper.newIssue(context) .forRule(this) .onTree(modifier) - .withMessage(String.format(WRONG_MODIFIER_ISSUE_MESSAGE, modifier.keyword().text())) + .withMessage(WRONG_MODIFIER_ISSUE_MESSAGE, modifier.keyword().text()) .withQuickFix(() -> - JavaQuickFix.newQuickFix("Remove modifier") - .addTextEdit(JavaTextEdit.removeTree(modifier)) - .build()) + JavaQuickFix.newQuickFix("Remove \"%s\" modifier", modifier.keyword().text()) + .addTextEdit(JavaTextEdit.removeTextSpan(AnalyzerMessage.textSpanBetween(modifier, true, QuickFixHelper.nextToken(modifier), false))) + .build()) .report(); } @@ -65,23 +74,44 @@ public void visitNode(Tree tree) { if (classTree.symbol().isAbstract()) { return; } - List methods = classTree.members().stream() + + List junit5ClassMethods = new ArrayList<>(); + List junit5InstanceMethods = new ArrayList<>(); + List nonJunit5Methods = new ArrayList<>(); + classTree.members().stream() .filter(member -> member.is(Tree.Kind.METHOD)) .map(MethodTree.class::cast) - .collect(Collectors.toCollection(ArrayList::new)); - - List testMethods = methods.stream() - .filter(UnitTestUtils::hasJUnit5TestAnnotation) - .filter(AbstractJUnit5NotCompliantModifierChecker::isNotOverriding) - .toList(); + .forEach(method -> { + if (UnitTestUtils.hasJUnit5TestAnnotation(method) || UnitTestUtils.hasJUnit5InstanceLifecycleAnnotation(method)) { + if (isNotOverriding(method)) { + junit5InstanceMethods.add(method); + } + } else if (UnitTestUtils.hasJUnit5ClassLifecycleAnnotation(method)) { + if (isNotOverriding(method)) { + junit5ClassMethods.add(method); + } + } else { + nonJunit5Methods.add(method); + } + }); + + raiseIssueOnMethods(junit5ClassMethods, ModifierScope.CLASS_METHOD); + raiseIssueOnMethods(junit5InstanceMethods, ModifierScope.INSTANCE_METHOD); + boolean classHasJunit5InstanceMethods = !junit5InstanceMethods.isEmpty(); + if (classHasJunit5InstanceMethods) { + raiseIssueOnClass(nonJunit5Methods, classTree); + } + } - for (MethodTree testMethod : testMethods) { - raiseIssueOnNotCompliantModifiers(testMethod.modifiers(), true); - raiseIssueOnNonCompliantReturnType(testMethod); + private void raiseIssueOnMethods(List junit5ClassMethods, ModifierScope classMethod) { + for (MethodTree junit5ClassMethod : junit5ClassMethods) { + raiseIssueOnNotCompliantModifiers(junit5ClassMethod.modifiers(), classMethod); + raiseIssueOnNonCompliantReturnType(junit5ClassMethod); } + } - methods.removeAll(testMethods); - boolean hasPublicStaticMethods = methods.stream() + private void raiseIssueOnClass(List nonJunit5Methods, ClassTree classTree) { + boolean hasPublicStaticMethods = nonJunit5Methods.stream() .map(MethodTree::modifiers) .anyMatch(AbstractJUnit5NotCompliantModifierChecker::isPublicStatic); @@ -91,23 +121,20 @@ public void visitNode(Tree tree) { .map(VariableTree::modifiers) .anyMatch(AbstractJUnit5NotCompliantModifierChecker::isPublicStatic); + // Can we change the visibility of the class? if (hasPublicStaticMethods || hasPublicStaticFields) { - // we can not ask for a change of visibility of the class return; } - - if (!testMethods.isEmpty()) { - raiseIssueOnNotCompliantModifiers(classTree.modifiers(), false); - } + raiseIssueOnNotCompliantModifiers(classTree.modifiers(), ModifierScope.CLASS); } private static boolean isPublicStatic(ModifiersTree modifiers) { return ModifiersUtils.hasAll(modifiers, Modifier.PUBLIC, Modifier.STATIC); } - private void raiseIssueOnNotCompliantModifiers(ModifiersTree modifierTree, boolean isMethod) { + private void raiseIssueOnNotCompliantModifiers(ModifiersTree modifierTree, ModifierScope modifierScope) { modifierTree.modifiers().stream() - .filter(modifier -> isNonCompliantModifier(modifier.modifier(), isMethod)) + .filter(modifier -> isNonCompliantModifier(modifier.modifier(), modifierScope)) .findFirst() .ifPresent(this::raiseIssueOnNonCompliantModifier); } diff --git a/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheck.java b/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheck.java index 768aea3d155..ebaf6cfc95a 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheck.java +++ b/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5DefaultPackageClassAndMethodCheck.java @@ -17,19 +17,14 @@ package org.sonar.java.checks.tests; import org.sonar.check.Rule; -import org.sonar.java.checks.helpers.QuickFixHelper; -import org.sonar.java.reporting.AnalyzerMessage; -import org.sonar.java.reporting.JavaQuickFix; -import org.sonar.java.reporting.JavaTextEdit; import org.sonar.plugins.java.api.tree.MethodTree; import org.sonar.plugins.java.api.tree.Modifier; -import org.sonar.plugins.java.api.tree.ModifierKeywordTree; @Rule(key = "S5786") public class JUnit5DefaultPackageClassAndMethodCheck extends AbstractJUnit5NotCompliantModifierChecker { @Override - protected boolean isNonCompliantModifier(Modifier modifier, boolean isMethod) { + protected boolean isNonCompliantModifier(Modifier modifier, ModifierScope modifierScope) { // All visibility modifiers except 'private' handled by S5810 return modifier == Modifier.PUBLIC || modifier == Modifier.PROTECTED; } @@ -39,19 +34,4 @@ protected void raiseIssueOnNonCompliantReturnType(MethodTree methodTree) { // Handled by S5810 } - @Override - protected void raiseIssueOnNonCompliantModifier(ModifierKeywordTree modifier) { - QuickFixHelper.newIssue(context) - .forRule(this) - .onTree(modifier) - .withMessage(WRONG_MODIFIER_ISSUE_MESSAGE, modifier.keyword().text()) - .withQuickFix(() -> quickFix(modifier)) - .report(); - } - - private static JavaQuickFix quickFix(ModifierKeywordTree modifier) { - return JavaQuickFix.newQuickFix("Remove \"%s\" modifier", modifier.keyword().text()) - .addTextEdit(JavaTextEdit.removeTextSpan(AnalyzerMessage.textSpanBetween(modifier, true, QuickFixHelper.nextToken(modifier), false))) - .build(); - } } diff --git a/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheck.java b/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheck.java index 3bbe14b090f..55f2269f9ed 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheck.java +++ b/java-checks/src/main/java/org/sonar/java/checks/tests/JUnit5SilentlyIgnoreClassAndMethodCheck.java @@ -35,8 +35,8 @@ public class JUnit5SilentlyIgnoreClassAndMethodCheck extends AbstractJUnit5NotCompliantModifierChecker { @Override - protected boolean isNonCompliantModifier(Modifier modifier, boolean isMethod) { - return modifier == Modifier.PRIVATE || (isMethod && modifier == Modifier.STATIC); + protected boolean isNonCompliantModifier(Modifier modifier, ModifierScope modifierScope) { + return modifier == Modifier.PRIVATE || (modifierScope == ModifierScope.INSTANCE_METHOD && modifier == Modifier.STATIC); } @Override