False-positive in squid:S2275

85 views
Skip to first unread message

Björn Kautler

unread,
Nov 3, 2015, 9:34:45 AM11/3/15
to SonarQube
Hi,

the "Printf-style format strings should not lead to unexpected
behavior at runtime" rule works wrongly.

It complains about

format("log/protocol_%tY_%<tm_%<td_%<tH_%<tM_%<tS.zip", new Date())

which is perfectly fine, as only one argument is used.
The 2. - 6. occurrence of % in the string use relative indexing and
reuse the index of the first %.
The possible ways to reference arguments in format strings can be
found here: http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#dpos

Regards
Björn

Michael Gumowski

unread,
Nov 3, 2015, 9:41:52 AM11/3/15
to Björn Kautler, SonarQube
Hey Björn,

The issue should have been fixed in version 3.7 of the java plugin (https://jira.sonarsource.com/browse/SONARJAVA-1197), released... hummm, well... today! (3/Nov/2015)
Can you try with this version?

Cheers,

Michael GUMOWSKI | SonarSource
Software Developer @ Language Team
http://sonarsource.com

Björn

--
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/CAKChYSobnrL%2BDxbEQsOgArK-iPL6M_PtG59F1tuAH6bnWC%2BW_w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Björn Kautler

unread,
Nov 5, 2015, 4:29:48 AM11/5/15
to Michael Gumowski, SonarQube
Hey Michael,

to be honest, you made it worse:

ERROR 10:14:07.968 > org.sonar.runner.impl.RunnerException: Unable to
execute Sonar
ERROR 10:14:07.971 > at
org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
ERROR 10:14:07.971 > at
org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
ERROR 10:14:07.972 > at
java.security.AccessController.doPrivileged(Native Method)
ERROR 10:14:07.972 > at
org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
ERROR 10:14:07.972 > at
org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
ERROR 10:14:07.972 > at
org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
ERROR 10:14:07.972 > at org.sonar.runner.api.Runner.execute(Runner.java:100)
ERROR 10:14:07.972 > at org.sonar.runner.Main.executeTask(Main.java:70)
ERROR 10:14:07.972 > at org.sonar.runner.Main.execute(Main.java:59)
ERROR 10:14:07.972 > at org.sonar.runner.Main.main(Main.java:53)
ERROR 10:14:07.972 > Caused by:
org.sonar.squidbridge.api.AnalysisException: SonarQube is unable to
analyze file : 'D:\Sourcecode\EMPIC\EAP\EmpicSuite\v-nox\src\main\java\de\empic\vnox\TaskProcessor2.java'
ERROR 10:14:07.972 > at
org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:105)
ERROR 10:14:07.972 > at
org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:77)
ERROR 10:14:07.972 > at
org.sonar.java.JavaSquid.scanSources(JavaSquid.java:130)
ERROR 10:14:07.972 > at org.sonar.java.JavaSquid.scan(JavaSquid.java:123)
ERROR 10:14:07.972 > at
org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:90)
ERROR 10:14:07.972 > at
org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:59)
ERROR 10:14:07.972 > at
org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:51)
ERROR 10:14:07.972 > at
org.sonar.batch.phases.DatabaseLessPhaseExecutor.execute(DatabaseLessPhaseExecutor.java:95)
ERROR 10:14:07.972 > at
org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:264)
ERROR 10:14:07.972 > at
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
ERROR 10:14:07.972 > at
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
ERROR 10:14:07.972 > at
org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235)
ERROR 10:14:07.972 > at
org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:230)
ERROR 10:14:07.972 > at
org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:228)
ERROR 10:14:07.973 > at
org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:220)
ERROR 10:14:07.973 > at
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
ERROR 10:14:07.973 > at
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
ERROR 10:14:07.973 > at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57)
ERROR 10:14:07.973 > at
org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45)
ERROR 10:14:07.974 > at
org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:135)
ERROR 10:14:07.977 > at
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
ERROR 10:14:07.977 > at
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
ERROR 10:14:07.977 > at
org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:158)
ERROR 10:14:07.977 > at
org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
ERROR 10:14:07.977 > at
org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
ERROR 10:14:07.977 > at
org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
ERROR 10:14:07.977 > at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
ERROR 10:14:07.977 > at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
ERROR 10:14:07.977 > at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
ERROR 10:14:07.977 > at java.lang.reflect.Method.invoke(Method.java:497)
ERROR 10:14:07.977 > at
org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
ERROR 10:14:07.977 > ... 9 more
ERROR 10:14:07.977 > Caused by: java.lang.IndexOutOfBoundsException:
index (1) must be less than size (1)
ERROR 10:14:07.977 > at
com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:301)
ERROR 10:14:07.977 > at
com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:280)
ERROR 10:14:07.977 > at
com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:91)
ERROR 10:14:07.977 > at
org.sonar.java.checks.PrintfCheck.verifyParameters(PrintfCheck.java:173)
ERROR 10:14:07.977 > at
org.sonar.java.checks.PrintfCheck.onMethodInvocationFound(PrintfCheck.java:112)
ERROR 10:14:07.977 > at
org.sonar.java.checks.methods.AbstractMethodDetection.checkInvocation(AbstractMethodDetection.java:52)
ERROR 10:14:07.977 > at
org.sonar.java.checks.methods.AbstractMethodDetection.visitNode(AbstractMethodDetection.java:43)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:89)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
ERROR 10:14:07.977 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
ERROR 10:14:07.978 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
ERROR 10:14:07.978 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
ERROR 10:14:07.978 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
ERROR 10:14:07.978 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.scanTree(SubscriptionVisitor.java:72)
ERROR 10:14:07.978 > at
org.sonar.java.ast.visitors.SubscriptionVisitor.scanFile(SubscriptionVisitor.java:65)
ERROR 10:14:07.978 > at
org.sonar.java.checks.SubscriptionBaseVisitor.scanFile(SubscriptionBaseVisitor.java:33)
ERROR 10:14:07.978 > at
org.sonar.java.model.InternalVisitorsBridge.visitFile(InternalVisitorsBridge.java:111)
ERROR 10:14:07.978 > at
org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:97)
ERROR 10:14:07.978 > ... 39 more

Cheers
Björn

Michael Gumowski

unread,
Nov 5, 2015, 7:43:00 AM11/5/15
to Björn Kautler, SonarQube
Damn it, that's bad. Thank you for the feedback.

Cheers,

Michael GUMOWSKI | SonarSource
Software Developer @ Language Team
http://sonarsource.com

Reply all
Reply to author
Forward
0 new messages