SonarQube Nullpointer при анализе, отсутствующих полях или параметрах правил

Я сталкиваюсь с исключением нулевого указателя при анализе проекта Java.

Условие, которое вызывает сбой анализа, возникает только тогда, когда я активирую определенные правила в профиле качества. В частности, любое правило с параметром, который вы можете переопределить, вызывает сбой нулевого указателя. Это не удается, независимо от того, предоставляю ли я значение переопределения или если параметр оставлен по умолчанию.

Я должен отметить, что я могу завершить успешный анализ, если эти конкретные правила деактивированы в профиле качества. Кажется, это связано только с определенными правилами, которые имеют параметры.

Я могу воспроизвести этот сбой Nullpointer как с помощью sonar-runner, так и с плагином org.sonarqube gradle (v 1.0). Поэтому я подозреваю, что это не проблема с бегуном или плагином, а какая-то проблема с настройкой сервера и/или базы данных SonarQube.

Проблема в том, что я не знаю, как войти и решить эту проблему. База данных SonarQube не документирована (насколько мне известно). Я подозреваю, что в базе данных чего-то не хватает, но я даже не уверен, где они могут быть.

Любые предложения о том, где я мог бы посмотреть?

Версии:
SonarQube 4.5.2
SonarQube Runner 2.4
Java 1.8.0_40 Oracle Corporation (64-разрядная версия)
Mac OS X 10.10.4 x86_64

Вот трассировка стека ошибки:

INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 1:43.316s
Final Memory: 27M/635M
INFO: ------------------------------------------------------------------------
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: java.lang.NullPointerException
    at org.sonar.api.batch.rule.Checks.getField(Checks.java:180)
    at org.sonar.api.batch.rule.Checks.configureFields(Checks.java:167)
    at org.sonar.api.batch.rule.Checks.instantiate(Checks.java:152)
    at org.sonar.api.batch.rule.Checks.addAnnotatedChecks(Checks.java:127)
    at org.sonar.java.SonarComponents.registerTestCheckClasses(SonarComponents.java:128)
    at org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:82)
    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:119)
    at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:194)
    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:233)
    at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:228)
    at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:221)
    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:64)
    at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
    at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:125)
    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:173)
    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:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
    ... 9 more

person Nathan England    schedule 09.07.2015    source источник
comment
Судя по ошибке, скорее всего проблема с плагином. Какие плагины у вас установлены. Какие из них связаны с правилами, которые вы активируете для воспроизведения ошибки?   -  person Seb - SonarSource Team    schedule 10.07.2015
comment
Это похоже на проблему в java-плагине. Можете ли вы сказать нам, какую версию плагина Java вы используете? Можете ли вы попробовать последнюю версию (3.4)?   -  person benzonico    schedule 10.07.2015
comment
Спасибо за ответ, вот установленные плагины: [Java [java] 3.3 Механизм правил SonarQube] [Checkstyle [checkstyle] 2.3] [Clover [clover] 3.0] [Cobertura [cobertura] 1.6.3] [Findbugs [findbugs] 3.2 ] [Java [java] 3.3] [JIRA [jira] 1.2] [LDAP [ldap] 1.4] [PMD [pmd] 2.3]   -  person Nathan England    schedule 10.07.2015
comment
Некоторыми примерами правил, вызывающих сбой, являются [в операторах switch не должно быть слишком много предложений case (значение по умолчанию 30)] или [классы не должны быть слишком сложными (значение по умолчанию 200)]. Я собираюсь попробовать последнюю версию, которую вы предложили.   -  person Nathan England    schedule 10.07.2015
comment
Обновление плагина Java не помогло, но откат сделал. Это определенно была проблема с версией плагина. Спасибо за вашу помощь!   -  person Nathan England    schedule 10.07.2015


Ответы (1)


Мы решили проблему, и проблема действительно заключалась в подключаемом модуле Java на сервере SonarQube. Однако решение заключалось в том, чтобы понизить версию плагина Java. Вот версии, которые мы в итоге использовали:

  • Checkstyle [checkstyle] 2.2 Анализ кода Java с помощью Checkstyle.
  • Clover [clover] 3.0 Получите покрытие кода с помощью Atlassian Clover.
  • Cobertura [cobertura] 1.6.3 Получите покрытие кода с помощью Cobertura.
  • Findbugs [findbugs] 3.1 Анализ кода Java с помощью Findbugs 3.0.0.
  • Java [java] 2.9.1 Механизм правил SonarQube.
  • JIRA [jira] 1.2 Соединяет SonarQube с Atlassian JIRA различными способами.
  • LDAP [ldap] 1.4 Делегирует аутентификацию LDAP.
  • PMD [pmd] 2.3 Анализ кода Java с помощью PMD.
person Nathan England    schedule 10.07.2015