[SONAR] Bug in sonar-java, Rule : Week Year ("YYYY") should not be used for date formatting squid:S3986

291 views
Skip to first unread message

xavier....@gmail.com

unread,
Jun 13, 2017, 11:31:56 AM6/13/17
to SonarQube
Hello,

There is a bug in the rule Week Year ("YYYY") should not be used for date formatting squid:S3986 


If the Week year is used in last position (ex: new SimpleDateFormat("DD/mm/YYYY");) the plugin crash with the folowing stacktrace :

org.sonar.squidbridge.api.AnalysisException: SonarQube is unable to analyze file : 'xxxx.java'
at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:96)
at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:63)
at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:119)
at org.sonar.java.JavaSquid.scan(JavaSquid.java:113)
at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:84)
at org.sonarsource.sonarlint.core.analyzer.sensor.SensorWrapper.analyse(SensorWrapper.java:52)
at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.executeSensor(SensorsExecutor.java:75)
at org.sonarsource.sonarlint.core.analyzer.sensor.SensorsExecutor.execute(SensorsExecutor.java:63)
at org.sonarsource.sonarlint.core.analyzer.sensor.PhaseExecutor.execute(PhaseExecutor.java:44)
at org.sonarsource.sonarlint.core.container.analysis.AnalysisContainer.doAfterStart(AnalysisContainer.java:139)
at org.sonarsource.sonarlint.core.container.ComponentContainer.startComponents(ComponentContainer.java:125)
at org.sonarsource.sonarlint.core.container.ComponentContainer.execute(ComponentContainer.java:110)
at org.sonarsource.sonarlint.core.container.storage.StorageAnalyzer.analyze(StorageAnalyzer.java:72)
at org.sonarsource.sonarlint.core.container.storage.StorageContainer.analyze(StorageContainer.java:130)
at org.sonarsource.sonarlint.core.ConnectedSonarLintEngineImpl.analyze(ConnectedSonarLintEngineImpl.java:158)
at org.sonarsource.sonarlint.core.ConnectedSonarLintEngineImpl.analyze(ConnectedSonarLintEngineImpl.java:145)
at org.sonarlint.eclipse.core.internal.server.Server.runAnalysis(Server.java:296)
at org.sonarlint.eclipse.core.internal.jobs.AnalyzeProjectJob.run(AnalyzeProjectJob.java:471)
at org.sonarlint.eclipse.core.internal.jobs.AnalyzeProjectJob$AnalysisThread.run(AnalyzeProjectJob.java:124)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 10
at java.lang.String.charAt(Unknown Source)
at org.sonar.java.checks.DateFormatWeekYearCheck.onConstructorFound(DateFormatWeekYearCheck.java:57)
at org.sonar.java.checks.methods.AbstractMethodDetection.checkInvocation(AbstractMethodDetection.java:58)
at org.sonar.java.checks.methods.AbstractMethodDetection.visitNode(AbstractMethodDetection.java:44)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:95)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:120)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:120)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:120)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:120)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:120)
at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:97)
at org.sonar.java.ast.visitors.SubscriptionVisitor.scanTree(SubscriptionVisitor.java:78)
at org.sonar.java.ast.visitors.SubscriptionVisitor.scanFile(SubscriptionVisitor.java:64)
at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:117)
at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:87)
... 18 more

If I add an extra character in the format expression after the Week Year (ex: new SimpleDateFormat("DD/mm/YYYY ");), the rule does'nt crash.


Sonar Version : Version 6.4 (build 25310)
Plugin SonarJava : 4.10.0.10260 installed



Tibor Blenessy

unread,
Jun 13, 2017, 11:41:21 AM6/13/17
to xavier....@gmail.com, SonarQube
Hello Xavier,

you are right, I created ticket to handle the bug https://jira.sonarsource.com/browse/SONARJAVA-2350 . 
Thanks for reporting!

Cheers

--
You received this message because you are subscribed to the Google Groups "SonarQube" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sonarqube+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sonarqube/42ff9159-6e0c-4aeb-bda9-cf62ac7bdab1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--

Tibor Blenessy | SonarSource

SonarJava Developer

http://sonarsource.com 

Reply all
Reply to author
Forward
0 new messages