checkstyle / sonar-checkstyle

Support on Checkstyle in SonarQube. Officially transfered from https://github.com/SonarQubeCommunity/sonar-checkstyle
GNU Lesser General Public License v3.0
171 stars 70 forks source link

Exception thrown when Analysis Runs #519

Closed rupreck closed 4 months ago

rupreck commented 4 months ago

Sonar version: 9.9.4 Enterprise Checkstyle sonar plugin version: 10.9.3 (and also latest 10.14.2)

Steps to reproduce or description of problem:

An exception is thrown on some files where there is an @Order(value=3) statement is present. For other files where there is an @Order statement, the exception is not thrown. So far only the Order statement triggers it.

Here is the exception and trace:

17:23:15.5444376 - [125] - [INFO] ------------------------------------------------------------------------ 17:23:15.5446622 - [126] - [INFO] BUILD FAILURE 17:23:15.5447382 - [127] - [INFO] ------------------------------------------------------------------------ 17:23:15.5465937 - [128] - [INFO] Total time: 49.552 s 17:23:15.5469587 - [129] - [INFO] Finished at: 2024-04-11T17:23:15+01:00 17:23:15.5471019 - [130] - [INFO] ------------------------------------------------------------------------ 17:23:15.5479748 - [131] - [ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.11.0.3922:sonar (default-cli) on project 921f0e90: Can not execute Checkstyle: Exception was thrown while processing S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\vitality\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java: NullPointerException -> [Help 1] 17:23:15.5480842 - [132] - org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.11.0.3922:sonar (default-cli) on project 921f0e90: Can not execute Checkstyle 17:23:15.5482422 - [133] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333) 17:23:15.5483159 - [134] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316) 17:23:15.5483674 - [135] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) 17:23:15.5484313 - [136] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) 17:23:15.5484811 - [137] - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) 17:23:15.5485370 - [138] - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) 17:23:15.5485883 - [139] - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) 17:23:15.5486579 - [140] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) 17:23:15.5487088 - [141] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) 17:23:15.5487564 - [142] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) 17:23:15.5488045 - [143] - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) 17:23:15.5488513 - [144] - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) 17:23:15.5488982 - [145] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) 17:23:15.5489446 - [146] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) 17:23:15.5489920 - [147] - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) 17:23:15.5490499 - [148] - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) 17:23:15.5490993 - [149] - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) 17:23:15.5491463 - [150] - at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) 17:23:15.5492741 - [151] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5494706 - [152] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5496651 - [153] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5498462 - [154] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5500153 - [155] - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) 17:23:15.5501810 - [156] - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) 17:23:15.5503536 - [157] - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) 17:23:15.5505182 - [158] - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) 17:23:15.5507166 - [159] - Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute Checkstyle 17:23:15.5510720 - [160] - at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute (ScannerBootstrapper.java:90) 17:23:15.5511528 - [161] - at org.sonarsource.scanner.maven.SonarQubeMojo.execute (SonarQubeMojo.java:106) 17:23:15.5512036 - [162] - at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126) 17:23:15.5512515 - [163] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328) 17:23:15.5514479 - [164] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316) 17:23:15.5515024 - [165] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) 17:23:15.5515640 - [166] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) 17:23:15.5516140 - [167] - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) 17:23:15.5516650 - [168] - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) 17:23:15.5517256 - [169] - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) 17:23:15.5517766 - [170] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) 17:23:15.5518236 - [171] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) 17:23:15.5518780 - [172] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) 17:23:15.5520443 - [173] - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) 17:23:15.5522547 - [174] - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) 17:23:15.5524542 - [175] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) 17:23:15.5525527 - [176] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) 17:23:15.5526208 - [177] - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) 17:23:15.5526768 - [178] - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) 17:23:15.5527385 - [179] - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) 17:23:15.5528395 - [180] - at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) 17:23:15.5529882 - [181] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5531946 - [182] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5533836 - [183] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5535723 - [184] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5537376 - [185] - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) 17:23:15.5539250 - [186] - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) 17:23:15.5540164 - [187] - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) 17:23:15.5542050 - [188] - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) 17:23:15.5543827 - [189] - Caused by: java.lang.IllegalStateException: Can not execute Checkstyle 17:23:15.5547112 - [190] - at org.sonar.plugins.checkstyle.CheckstyleExecutor.executeWithClassLoader (CheckstyleExecutor.java:113) 17:23:15.5548526 - [191] - at org.sonar.plugins.checkstyle.CheckstyleExecutor.execute (CheckstyleExecutor.java:81) 17:23:15.5549209 - [192] - at org.sonar.plugins.checkstyle.CheckstyleSensor.execute (CheckstyleSensor.java:41) 17:23:15.5549719 - [193] - at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse (AbstractSensorWrapper.java:64) 17:23:15.5550368 - [194] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute (ModuleSensorsExecutor.java:88) 17:23:15.5550874 - [195] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1 (ModuleSensorsExecutor.java:61) 17:23:15.5551346 - [196] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy (ModuleSensorsExecutor.java:79) 17:23:15.5551794 - [197] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute (ModuleSensorsExecutor.java:61) 17:23:15.5552316 - [198] - at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart (SpringModuleScanContainer.java:82) 17:23:15.5552964 - [199] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5554341 - [200] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5554873 - [201] - at org.sonar.scanner.scan.SpringProjectScanContainer.scan (SpringProjectScanContainer.java:403) 17:23:15.5555628 - [202] - at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively (SpringProjectScanContainer.java:399) 17:23:15.5556233 - [203] - at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart (SpringProjectScanContainer.java:368) 17:23:15.5556729 - [204] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5557197 - [205] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5557693 - [206] - at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart (SpringGlobalContainer.java:137) 17:23:15.5558190 - [207] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5558671 - [208] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5559161 - [209] - at org.sonar.batch.bootstrapper.Batch.doExecute (Batch.java:72) 17:23:15.5559630 - [210] - at org.sonar.batch.bootstrapper.Batch.execute (Batch.java:66) 17:23:15.5560153 - [211] - at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute (BatchIsolatedLauncher.java:46) 17:23:15.5560633 - [212] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5561404 - [213] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5561924 - [214] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5562421 - [215] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5562885 - [216] - at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke (IsolatedLauncherProxy.java:60) 17:23:15.5563342 - [217] - at com.sun.proxy.$Proxy28.execute (Unknown Source) 17:23:15.5563813 - [218] - at org.sonarsource.scanner.api.EmbeddedScanner.doExecute (EmbeddedScanner.java:189) 17:23:15.5564275 - [219] - at org.sonarsource.scanner.api.EmbeddedScanner.execute (EmbeddedScanner.java:138) 17:23:15.5564747 - [220] - at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute (ScannerBootstrapper.java:88) 17:23:15.5565220 - [221] - at org.sonarsource.scanner.maven.SonarQubeMojo.execute (SonarQubeMojo.java:106) 17:23:15.5565703 - [222] - at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126) 17:23:15.5566266 - [223] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328) 17:23:15.5567022 - [224] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316) 17:23:15.5567529 - [225] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) 17:23:15.5568046 - [226] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) 17:23:15.5568637 - [227] - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) 17:23:15.5569184 - [228] - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) 17:23:15.5569719 - [229] - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) 17:23:15.5570176 - [230] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) 17:23:15.5570632 - [231] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) 17:23:15.5571073 - [232] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) 17:23:15.5571527 - [233] - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) 17:23:15.5573178 - [234] - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) 17:23:15.5573751 - [235] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) 17:23:15.5574215 - [236] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) 17:23:15.5574703 - [237] - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) 17:23:15.5575170 - [238] - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) 17:23:15.5575627 - [239] - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) 17:23:15.5576184 - [240] - at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) 17:23:15.5576642 - [241] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5577126 - [242] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5577596 - [243] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5578051 - [244] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5578504 - [245] - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) 17:23:15.5578956 - [246] - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) 17:23:15.5579620 - [247] - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) 17:23:15.5580116 - [248] - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) 17:23:15.5580583 - [249] - Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: Exception was thrown while processing S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\vitality\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java 17:23:15.5581028 - [250] - at com.puppycrawl.tools.checkstyle.Checker.processFiles (Checker.java:306) 17:23:15.5581484 - [251] - at com.puppycrawl.tools.checkstyle.Checker.process (Checker.java:223) 17:23:15.5581934 - [252] - at org.sonar.plugins.checkstyle.CheckstyleExecutor.executeWithClassLoader (CheckstyleExecutor.java:106) 17:23:15.5582391 - [253] - at org.sonar.plugins.checkstyle.CheckstyleExecutor.execute (CheckstyleExecutor.java:81) 17:23:15.5582928 - [254] - at org.sonar.plugins.checkstyle.CheckstyleSensor.execute (CheckstyleSensor.java:41) 17:23:15.5583409 - [255] - at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse (AbstractSensorWrapper.java:64) 17:23:15.5584620 - [256] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute (ModuleSensorsExecutor.java:88) 17:23:15.5586374 - [257] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1 (ModuleSensorsExecutor.java:61) 17:23:15.5587973 - [258] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy (ModuleSensorsExecutor.java:79) 17:23:15.5589716 - [259] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute (ModuleSensorsExecutor.java:61) 17:23:15.5591341 - [260] - at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart (SpringModuleScanContainer.java:82) 17:23:15.5593194 - [261] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5594169 - [262] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5595040 - [263] - at org.sonar.scanner.scan.SpringProjectScanContainer.scan (SpringProjectScanContainer.java:403) 17:23:15.5595819 - [264] - at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively (SpringProjectScanContainer.java:399) 17:23:15.5596417 - [265] - at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart (SpringProjectScanContainer.java:368) 17:23:15.5596895 - [266] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5597377 - [267] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5598111 - [268] - at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart (SpringGlobalContainer.java:137) 17:23:15.5599479 - [269] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5600026 - [270] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5600519 - [271] - at org.sonar.batch.bootstrapper.Batch.doExecute (Batch.java:72) 17:23:15.5600990 - [272] - at org.sonar.batch.bootstrapper.Batch.execute (Batch.java:66) 17:23:15.5601466 - [273] - at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute (BatchIsolatedLauncher.java:46) 17:23:15.5601931 - [274] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5602394 - [275] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5602867 - [276] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5603329 - [277] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5603808 - [278] - at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke (IsolatedLauncherProxy.java:60) 17:23:15.5604560 - [279] - at com.sun.proxy.$Proxy28.execute (Unknown Source) 17:23:15.5605076 - [280] - at org.sonarsource.scanner.api.EmbeddedScanner.doExecute (EmbeddedScanner.java:189) 17:23:15.5605645 - [281] - at org.sonarsource.scanner.api.EmbeddedScanner.execute (EmbeddedScanner.java:138) 17:23:15.5606251 - [282] - at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute (ScannerBootstrapper.java:88) 17:23:15.5606717 - [283] - at org.sonarsource.scanner.maven.SonarQubeMojo.execute (SonarQubeMojo.java:106) 17:23:15.5607199 - [284] - at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126) 17:23:15.5607669 - [285] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328) 17:23:15.5608130 - [286] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316) 17:23:15.5608609 - [287] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) 17:23:15.5609075 - [288] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) 17:23:15.5609549 - [289] - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) 17:23:15.5610265 - [290] - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) 17:23:15.5610772 - [291] - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) 17:23:15.5611242 - [292] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) 17:23:15.5611711 - [293] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) 17:23:15.5612174 - [294] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) 17:23:15.5612647 - [295] - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) 17:23:15.5613112 - [296] - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) 17:23:15.5613577 - [297] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) 17:23:15.5614054 - [298] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) 17:23:15.5614523 - [299] - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) 17:23:15.5614991 - [300] - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) 17:23:15.5615549 - [301] - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) 17:23:15.5616170 - [302] - at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) 17:23:15.5616680 - [303] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5617155 - [304] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5619663 - [305] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5621396 - [306] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5622382 - [307] - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) 17:23:15.5622953 - [308] - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) 17:23:15.5623451 - [309] - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) 17:23:15.5623910 - [310] - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) 17:23:15.5624377 - [311] - Caused by: java.lang.NullPointerException 17:23:15.5625067 - [312] - at com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck.isFieldDeclaration (MagicNumberCheck.java:529) 17:23:15.5625570 - [313] - at com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck.visitToken (MagicNumberCheck.java:358) 17:23:15.5626112 - [314] - at com.puppycrawl.tools.checkstyle.TreeWalker.notifyVisit (TreeWalker.java:335) 17:23:15.5626576 - [315] - at com.puppycrawl.tools.checkstyle.TreeWalker.processIter (TreeWalker.java:406) 17:23:15.5627020 - [316] - at com.puppycrawl.tools.checkstyle.TreeWalker.walk (TreeWalker.java:273) 17:23:15.5627455 - [317] - at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered (TreeWalker.java:154) 17:23:15.5627900 - [318] - at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process (AbstractFileSetCheck.java:98) 17:23:15.5628335 - [319] - at com.puppycrawl.tools.checkstyle.Checker.processFile (Checker.java:334) 17:23:15.5628975 - [320] - at com.puppycrawl.tools.checkstyle.Checker.processFiles (Checker.java:293) 17:23:15.5629463 - [321] - at com.puppycrawl.tools.checkstyle.Checker.process (Checker.java:223) 17:23:15.5629912 - [322] - at org.sonar.plugins.checkstyle.CheckstyleExecutor.executeWithClassLoader (CheckstyleExecutor.java:106) 17:23:15.5630358 - [323] - at org.sonar.plugins.checkstyle.CheckstyleExecutor.execute (CheckstyleExecutor.java:81) 17:23:15.5630805 - [324] - at org.sonar.plugins.checkstyle.CheckstyleSensor.execute (CheckstyleSensor.java:41) 17:23:15.5631253 - [325] - at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse (AbstractSensorWrapper.java:64) 17:23:15.5631713 - [326] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute (ModuleSensorsExecutor.java:88) 17:23:15.5632403 - [327] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1 (ModuleSensorsExecutor.java:61) 17:23:15.5632905 - [328] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy (ModuleSensorsExecutor.java:79) 17:23:15.5633350 - [329] - at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute (ModuleSensorsExecutor.java:61) 17:23:15.5633787 - [330] - at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart (SpringModuleScanContainer.java:82) 17:23:15.5634216 - [331] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5634658 - [332] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5635090 - [333] - at org.sonar.scanner.scan.SpringProjectScanContainer.scan (SpringProjectScanContainer.java:403) 17:23:15.5635522 - [334] - at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively (SpringProjectScanContainer.java:399) 17:23:15.5636058 - [335] - at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart (SpringProjectScanContainer.java:368) 17:23:15.5636518 - [336] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5637329 - [337] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5637831 - [338] - at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart (SpringGlobalContainer.java:137) 17:23:15.5638375 - [339] - at org.sonar.core.platform.SpringComponentContainer.startComponents (SpringComponentContainer.java:188) 17:23:15.5639676 - [340] - at org.sonar.core.platform.SpringComponentContainer.execute (SpringComponentContainer.java:167) 17:23:15.5640231 - [341] - at org.sonar.batch.bootstrapper.Batch.doExecute (Batch.java:72) 17:23:15.5640703 - [342] - at org.sonar.batch.bootstrapper.Batch.execute (Batch.java:66) 17:23:15.5641174 - [343] - at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute (BatchIsolatedLauncher.java:46) 17:23:15.5641618 - [344] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5642070 - [345] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5642521 - [346] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5642950 - [347] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5643683 - [348] - at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke (IsolatedLauncherProxy.java:60) 17:23:15.5644186 - [349] - at com.sun.proxy.$Proxy28.execute (Unknown Source) 17:23:15.5644626 - [350] - at org.sonarsource.scanner.api.EmbeddedScanner.doExecute (EmbeddedScanner.java:189) 17:23:15.5645058 - [351] - at org.sonarsource.scanner.api.EmbeddedScanner.execute (EmbeddedScanner.java:138) 17:23:15.5645506 - [352] - at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute (ScannerBootstrapper.java:88) 17:23:15.5646021 - [353] - at org.sonarsource.scanner.maven.SonarQubeMojo.execute (SonarQubeMojo.java:106) 17:23:15.5646480 - [354] - at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126) 17:23:15.5646951 - [355] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328) 17:23:15.5647442 - [356] - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316) 17:23:15.5647898 - [357] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) 17:23:15.5648445 - [358] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) 17:23:15.5648906 - [359] - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) 17:23:15.5649680 - [360] - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) 17:23:15.5650270 - [361] - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) 17:23:15.5650795 - [362] - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) 17:23:15.5651284 - [363] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) 17:23:15.5651769 - [364] - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) 17:23:15.5652256 - [365] - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) 17:23:15.5652705 - [366] - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) 17:23:15.5653164 - [367] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) 17:23:15.5653647 - [368] - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) 17:23:15.5654159 - [369] - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) 17:23:15.5654679 - [370] - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) 17:23:15.5655494 - [371] - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) 17:23:15.5656176 - [372] - at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) 17:23:15.5656764 - [373] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) 17:23:15.5657302 - [374] - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 17:23:15.5657822 - [375] - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 17:23:15.5658342 - [376] - at java.lang.reflect.Method.invoke (Method.java:566) 17:23:15.5659683 - [377] - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) 17:23:15.5660333 - [378] - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) 17:23:15.5660908 - [379] - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) 17:23:15.5661521 - [380] - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) 17:23:15.5662176 - [381] - [ERROR] 17:23:15.5662880 - [382] - [ERROR] Re-run Maven using the -X switch to enable full debug logging. 17:23:15.5663549 - [383] - [ERROR] 17:23:15.5664219 - [384] - [ERROR] For more information about the errors and possible solutions, please read the following articles: 17:23:15.5665035 - [385] - [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Here is an example of a file that fails. Only by excluding the file or removing the @Order statement can the analysis complete.

package uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service;

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.jpa.DeviceAttributeValue;
import uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.jpa.DeviceData;
import uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.dto.ddp.PointsEvent;

import java.util.LinkedHashMap;
import java.util.Map;

import static uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service.AttributeUtil.parseDouble;
import static uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service.AttributeUtil.parseString;

/**
 * @author XXXX
 * @since 20/01/2024
 */
@Order(value = 3)
@Component
public class ActiveDurationEventRule implements PointsEventRule {

    @Override
    public LinkedHashMap<String, PointsEvent> createEvents(Map<Long, DeviceAttributeValue> deviceAttributeValueMap, DeviceData deviceData, LinkedHashMap<String, PointsEvent> pointsEventMap) {
        Double totalSessionDurationMS = parseDouble(deviceAttributeValueMap
                .get(AttributeId.ACTIVE_DURATION.getId()));
        String manufacturer = parseString(deviceAttributeValueMap
                .get(AttributeId.DEVICE_MANUFACTURER.getId()));

        if ((totalSessionDurationMS != null)  && (manufacturer != null && manufacturer.equalsIgnoreCase("Fiit"))) {
            double sessionDurationInMinutes = totalSessionDurationMS / 60;
            if (sessionDurationInMinutes >= 20) {
                pointsEventMap.put(
                        PointsEventId.FIIT_HOME_WORKOUT_PLAN.getMnemonic(),
                        new PointsEvent(PointsEventId.FIIT_HOME_WORKOUT_PLAN
                                .getMnemonic(), deviceData.getEntityNo(), deviceData.getEventDate().toDate()));
            }
        }
        return pointsEventMap;
    }
}
muhlba91 commented 4 months ago

this sounds like an issue related to the main Checkstyle project. could you try running the analysis with Checkstyle itself and not through Sonar to verify this?

rupreck commented 4 months ago

I've tested directly with the latest checkstyle jar and it did not reappear. There was a similar failure with the sonar codehawk plugin on the above file which we removed.

This is what was run... is there an alternative way I should test this?

S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service>S:\sqa\node\tools\java\jdk17\bin\java -jar checkstyle-10.15.0-all.jar -c /sun_checks.xml ActiveDurationEventRule Files to process must be specified, found 0.

S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service> S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service>S:\sqa\node\tools\java\jdk17\bin\java -jar checkstyle-10.15.0-all.jar -c /sun_checks.xml ActiveDurationEventRule.java Starting audit... [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:1: File does not end with a newline. [NewlineAtEndOfFile] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:1: Missing package-info.java file. [JavadocPackage] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:20:16: '3' is a magic number. [MagicNumber] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:24:5: Class 'ActiveDurationEventRule' looks like designed for extension (can be subclassed), but the method 'createEvents' does not have javadoc that explains how to do that safely. If class is not designed for extension consider making the class 'ActiveDurationEventRule' final or making the method 'createEvents' static/final/abstract/empty, or adding allowed annotation for the method. [DesignForExtension] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:25: Line is longer than 80 characters (found 191). [LineLength] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:25:60: Parameter deviceAttributeValueMap should be final. [FinalParameters] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:25:117: Parameter deviceData should be final. [FinalParameters] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:25:140: Parameter pointsEventMap should be final. [FinalParameters] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:31: Line is longer than 80 characters (found 115). [LineLength] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:32:72: '60' is a magic number. [MagicNumber] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:33:45: '20' is a magic number. [MagicNumber] [ERROR] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:37: Line is longer than 80 characters (found 111). [LineLength] Audit done. Checkstyle ends with 12 errors.

S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service>S:\sqa\node\tools\java\jdk17\bin\java -jar checkstyle-10.15.0-all.jar -c /google_checks.xml ActiveDurationEventRule.java Starting audit... [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:7:1: Wrong lexicographical order for 'uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.dto.ddp.PointsEvent' import. Should be before 'uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.jpa.DeviceData'. [CustomImportOrder] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:9:1: Extra separation in import group before 'java.util.LinkedHashMap' [CustomImportOrder] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:9:1: Wrong lexicographical order for 'java.util.LinkedHashMap' import. Should be before 'uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.jpa.DeviceData'. [CustomImportOrder] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:10:1: Wrong lexicographical order for 'java.util.Map' import. Should be before 'uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.jpa.DeviceData'. [CustomImportOrder] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:12:1: Import statement for 'uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service.AttributeUtil.parseDouble' is in the wrong order. Should be in the 'STATIC' group, expecting not assigned imports on this line. [CustomImportOrder] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:13:1: Import statement for 'uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service.AttributeUtil.parseString' is in the wrong order. Should be in the 'STATIC' group, expecting not assigned imports on this line. [CustomImportOrder] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:16: Summary javadoc is missing. [SummaryJavadoc] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:24:5: 'method def modifier' has incorrect indentation level 4, expected level should be 2. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:25: Line is longer than 100 characters (found 191). [LineLength] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:26:9: 'method def' child has incorrect indentation level 8, expected level should be 4. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:26:16: Abbreviation in name 'totalSessionDurationMS' must contain no more than '1' consecutive capital letters. [AbbreviationAsWordInName] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:28:9: 'method def' child has incorrect indentation level 8, expected level should be 4. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:31: Line is longer than 100 characters (found 115). [LineLength] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:31:9: 'if' has incorrect indentation level 8, expected level should be 4. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:32:13: 'if' child has incorrect indentation level 12, expected level should be 6. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:33:13: 'if' has incorrect indentation level 12, expected level should be 6. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:34:17: 'if' child has incorrect indentation level 16, expected level should be 8. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:37: Line is longer than 100 characters (found 111). [LineLength] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:38:13: 'if rcurly' has incorrect indentation level 12, expected level should be 6. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:39:9: 'if rcurly' has incorrect indentation level 8, expected level should be 4. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:40:9: 'method def' child has incorrect indentation level 8, expected level should be 4. [Indentation] [WARN] S:\s\131675\V126\vps-pm-vdp-events-service.git\service\src\main\java\uk\co\XXX\msa\vpspointsmanager\vpspmvdpeventsservice\service\ddp\service\ActiveDurationEventRule.java:41:5: 'method def rcurly' has incorrect indentation level 4, expected level should be 2. [Indentation] Audit done.

Bananeweizen commented 4 months ago

@rnveach The nested exception in the above stack trace is interesting:

17:23:15.5624377 - [311] - Caused by: java.lang.NullPointerException
17:23:15.5625067 - [312] - at com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck.isFieldDeclaration (MagicNumberCheck.java:529)
17:23:15.5625570 - [313] - at com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck.visitToken (MagicNumberCheck.java:358)
17:23:15.5626112 - [314] - at com.puppycrawl.tools.checkstyle.TreeWalker.notifyVisit (TreeWalker.java:335)
17:23:15.5626576 - [315] - at com.puppycrawl.tools.checkstyle.TreeWalker.processIter (TreeWalker.java:406)
17:23:15.5627020 - [316] - at com.puppycrawl.tools.checkstyle.TreeWalker.walk (TreeWalker.java:273)

Going back through the call stack here means that the TreeWalker gives a null AST element to the MagicNumberCheck, see https://github.com/checkstyle/checkstyle/blob/7b8d368e130ebd3623838db1c24ecc93bcdd7d29/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/MagicNumberCheck.java#L529 and go back according to stack trace. Are you aware of any bug in 10.9.3 that would cause such a null AST element visit? I would expect that such a situation must not happen and should even be handled in TreeWalker already.

rnveach commented 4 months ago

We are on 10.15 right now. 10.9.3 was a year ago. I don't remember the specifics from back then.

https://checkstyle.org/releasenotes.html MagicNumber was modified in this release, https://github.com/checkstyle/checkstyle/issues/12687 .

~If someone could provide the reproducible config and Java file then it can be determined if this is still an issue in the current release and file a bug report for it.~ I see the case, sorry.

Edit: I could not reproduce the issue, even with the old release, with the Java code at https://github.com/checkstyle/sonar-checkstyle/issues/519#issue-2239071347 . No config file was provided which may help reproduce.

rnveach commented 4 months ago

Are you aware of any bug in 10.9.3 that would cause such a null AST element visit?

Looking at the code, if the NPE is valid, I don't think this is what is happening. isFieldDeclaration is given the AST from the visit. I assume we are getting a valid AST object. The issue is more likely at isFieldDeclaration where it is scanning the parent hierarchy. It keeps going up the parent tree until it finds a VARIABLE_DEF. In this kind of situation if the stop trigger is never met, getParent will eventually return null as it went beyond the tree limit.

findContainingConstantDef has a similar parent scan, but it has a NPE guard in the scan.

My thought is the line of code in question is @Order(value = 3). 3 is a NUM_INT so it would be stopped on this token and there is no VARIABLE_DEF here.

This is all conjecture until something is provided that is reproducible.

rnveach commented 4 months ago

I was able to reproduce it. My assumption above was correct. I am reporting.

$ cat TestClass.java
package uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service;

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.jpa.DeviceAttributeValue;
import uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.jpa.DeviceData;
import uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.model.dto.ddp.PointsEvent;

import java.util.LinkedHashMap;
import java.util.Map;

import static uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service.AttributeUtil.parseDouble;
import static uk.co.XXX.msa.vpspointsmanager.vpspmvdpeventsservice.service.ddp.service.AttributeUtil.parseString;

/**
 * @author XXXX
 * @since 20/01/2024
 */
@Order(value = 3)
@Component
public class ActiveDurationEventRule implements PointsEventRule {

    @Override
    public LinkedHashMap<String, PointsEvent> createEvents(Map<Long, DeviceAttributeValue> deviceAttributeValueMap, DeviceData deviceData, LinkedHashMap<String, PointsEvent> pointsEventMap) {
        Double totalSessionDurationMS = parseDouble(deviceAttributeValueMap
                .get(AttributeId.ACTIVE_DURATION.getId()));
        String manufacturer = parseString(deviceAttributeValueMap
                .get(AttributeId.DEVICE_MANUFACTURER.getId()));

        if ((totalSessionDurationMS != null)  && (manufacturer != null && manufacturer.equalsIgnoreCase("Fiit"))) {
            double sessionDurationInMinutes = totalSessionDurationMS / 60;
            if (sessionDurationInMinutes >= 20) {
                pointsEventMap.put(
                        PointsEventId.FIIT_HOME_WORKOUT_PLAN.getMnemonic(),
                        new PointsEvent(PointsEventId.FIIT_HOME_WORKOUT_PLAN
                                .getMnemonic(), deviceData.getEntityNo(), deviceData.getEventDate().toDate()));
            }
        }
        return pointsEventMap;
    }
}

$ cat TestConfig.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">

<module name="Checker">
    <property name="charset" value="UTF-8"/>
    <property name="severity" value="warning"/>
    <property name="haltOnException" value="false"/>

    <module name="TreeWalker">
    <module name="MagicNumber">
      <property name="ignoreAnnotationElementDefaults" value="false"/>
      <property name="ignoreNumbers" value="0.99"/>
      <property name="ignoreFieldDeclaration" value="true"/>
    </module>
    </module>
</module>

$ java -jar checkstyle-10.15.0-all.jar -c TestConfig.xml TestClass.java
Starting audit...
[ERROR] TestClass.java:1: Got an exception - java.lang.NullPointerException
    at com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck.isFieldDeclaration(MagicNumberCheck.java:390)
    at com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck.visitToken(MagicNumberCheck.java:219)
    at com.puppycrawl.tools.checkstyle.TreeWalker.notifyVisit(TreeWalker.java:335)
    at com.puppycrawl.tools.checkstyle.TreeWalker.processIter(TreeWalker.java:408)
    at com.puppycrawl.tools.checkstyle.TreeWalker.walk(TreeWalker.java:273)
    at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered(TreeWalker.java:154)
    at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process(AbstractFileSetCheck.java:101)
    at com.puppycrawl.tools.checkstyle.Checker.processFile(Checker.java:340)
    at com.puppycrawl.tools.checkstyle.Checker.processFiles(Checker.java:299)
    at com.puppycrawl.tools.checkstyle.Checker.process(Checker.java:226)
    at com.puppycrawl.tools.checkstyle.Main.runCheckstyle(Main.java:415)
    at com.puppycrawl.tools.checkstyle.Main.runCli(Main.java:338)
    at com.puppycrawl.tools.checkstyle.Main.execute(Main.java:195)
    at com.puppycrawl.tools.checkstyle.Main.main(Main.java:130)
[Checker]
Audit done.
Checkstyle ends with 1 errors.
rnveach commented 4 months ago

Closing as this is not a sonar checkstyle issue. It is a checkstyle issue.

Issue can be followed at https://github.com/checkstyle/checkstyle/issues/14788

This issue does not exist in checkstyle releases before 10.9.3 .