1

我们正在分析一个使用 JAVA 7 下划线编号的 java 项目,但我们得到了下一个错误。我们假设它必须与 JavaSquid 传感器一起使用。是否有解决方法或任何更新可解决此问题?

ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
        at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
        at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
        at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
        at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
        at org.sonar.runner.api.Runner.execute(Runner.java:100)
        at org.sonar.runner.Main.executeTask(Main.java:70)
        at org.sonar.runner.Main.execute(Main.java:59)
        at org.sonar.runner.Main.main(Main.java:53)
Caused by: org.sonar.squidbridge.api.AnalysisException: SonarQube is unable to analyze file : '/opt/ATLASSIAN/bamboo-home/xml-data/build-dir/78217217/ER-EADC-JOB1/erpsaas/src/test/java/co/com/psl/erpsaas/general/importacion/comprobantesContables/ComprobanteContableExcelTest.java'
        at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:102)
        at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:75)
        at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:131)
        at org.sonar.java.JavaSquid.scan(JavaSquid.java:124)
        at org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:86)
        at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:79)
        at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:70)
        at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:122)
        at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:222)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
        at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235)
        at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:230)
        at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:223)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
        at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:65)
        at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:52)
        at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:128)
        at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
        at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
        at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:171)
        at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
        at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
        at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
        ... 9 more
Caused by: java.lang.NumberFormatException: For input string: "100_000"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:492)
        at java.lang.Integer.valueOf(Integer.java:582)
        at org.sonar.java.model.LiteralUtils.intLiteralValue(LiteralUtils.java:57)
        at org.sonar.java.model.LiteralUtils.intLiteralValue(LiteralUtils.java:41)
        at org.sonar.java.checks.ForLoopFalseConditionCheck.eval(ForLoopFalseConditionCheck.java:106)
        at org.sonar.java.checks.ForLoopFalseConditionCheck.isConditionFalseAtInitialization(ForLoopFalseConditionCheck.java:84)
        at org.sonar.java.checks.ForLoopFalseConditionCheck.visitForStatement(ForLoopFalseConditionCheck.java:52)
        at org.sonar.java.checks.AbstractForLoopRule.visitNode(AbstractForLoopRule.java:53)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:89)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visitChildren(SubscriptionVisitor.java:115)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.visit(SubscriptionVisitor.java:91)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.scanTree(SubscriptionVisitor.java:72)
        at org.sonar.java.ast.visitors.SubscriptionVisitor.scanFile(SubscriptionVisitor.java:65)
        at org.sonar.java.checks.SubscriptionBaseVisitor.scanFile(SubscriptionBaseVisitor.java:33)
        at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:123)
        at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:94)
        ... 38 more
4

2 回答 2

1

这似乎是 org.sonar.java.model.LiteralUtils 类的缺陷。查看代码,有一个针对 long 数据类型的修复,但不是针对整数。根据 Oracle 的文档,下划线可用于大多数数字类型,但 Sonarqube 似乎只考虑 long-s。

谢谢!毛里西奥·L。

于 2015-07-27T13:34:14.443 回答
1

感谢您的反馈并提供堆栈跟踪。正如您所强调的,带下划线的整数当前在类中没有被正确处理LiteralUtils,这是Java Plugin.

我创建了以下票证来处理该问题:SONARJAVA-1200。请注意,一旦故障单得到解决并且是发布的一部分,该修复程序将立即可用。如果您想为项目做出贡献,请随时在 Github 上提供带有修复的 Pull Request!

作为临时解决方法并且只要没有新版本的 java 插件可用,您可以禁用当前触发错误的规则S2252循环条件应至少为真一次)。

请注意,其他规则也使用该LiteralUtils.intLiteralValue()方法,并且可能出于相同原因给您带来麻烦。如果遇到其他相关问题,请尝试禁用以下规则:

  • S888-关系运算符应用于“for”循环终止条件
  • S2197-不应检查模数结果是否直接相等
  • S2251- “for”循环更新子句应将计数器移动到正确的方向
  • S2695-应使用有效索引调用“PreparedStatement”和“ResultSet”方法
于 2015-07-28T08:16:16.147 回答