2015-07-27 4 views
1

Мы анализируем проект java, который использует нумерацию поддеревьев JAVA 7, но мы получаем следующую ошибку. Мы предполагаем, что это должно быть с датчиком JavaSquid. Есть ли обходной путь или любое обновление, доступное для решения этой проблемы?Ошибка SonarQube JavaSquid Sensor с нумерацией подчёркивания

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 

ответ

1

Вроде бы дефект на классе org.sonar.java.model.LiteralUtils. глядя на код, есть исправление для длинного типа данных, но не для целых чисел. Подчеркивания могут использоваться для большинства числовых типов на основе документации Oracle, но Sonarqube, по-видимому, рассматривает только длинные.

Спасибо! Mauricio L.

1

Благодарим вас за отзыв и предоставим трассировку стека. Как вы подчеркнули, в настоящее время недооцененные целые числа не обрабатываются правильно в классе LiteralUtils, который является частью Java Plugin.

Я создал следующий билет для решения проблемы: SONARJAVA-1200. Обратите внимание, что исправление будет доступно, как только билет будет разрешен и будет частью выпуска. Не стесняйтесь предоставить Pull Request on Github исправление, если вы хотите внести свой вклад в проект!

В качестве временного решения и до тех пор, как новая версия Java плагина не доступна, вы можете отключить правило S2252 (условия Петли должно быть правдой, по крайней мере один раз), который в настоящее время инициирующей ошибки.

Обратите внимание, что в других правилах также используется метод LiteralUtils.intLiteralValue() и может вызывать проблемы по той же причине. Если встречая другие связанные проблемы, попробуйте отключить следующие правила:

  • S888 - реляционные операторы должны использоваться в «для» цикла условий окончания
  • S2197 - Модуль упругости результаты не должны быть проверены для прямого равенства
  • S2251 - А «за» цикл обновления пункт должен переместить счетчик в правильном направлении
  • S2695 - Методы «Подготовленность» и «Результат» необходимо называть действительными индексами