Обновление SonarQube с 6.4 до 6.5 ломает сканер

  1. Эхолот-сканер 3.0.3
  2. Теперь после обновления сканер дает сбой всякий раз, когда в исходном пути есть файл java. Если я не сканирую java-файлы, все работает нормально.
  3. Однако, если я откатываю версию use 6.4, все работает нормально, так есть ли регресс? Это трассировка стека, когда я запускаю команду сканера с командой -X. Итак, в 6.5 есть мандат на предоставление местоположения всех скомпилированных классов, есть ли способ игнорировать это.
  4. Ошибка при выполнении сканера SonarQube org.sonar.squidbridge.api.AnalysisException: укажите скомпилированные классы вашего проекта с помощью свойства sonar.java.binaries

Когда я запускаю то же самое с 6.4, он работает нормально, и единственное предупреждение, которое я вижу в консоли:

04: 52: 42.738 ПРЕДУПРЕЖДЕНИЕ: байт-код зависимостей не был предоставлен для анализа исходных файлов, вы можете получить менее точные результаты. Байт-код может быть предоставлен с помощью свойства sonar.java.libraries.

Я использую sonarQube6.4 и обновился до 6.5


person Prashant Saddi    schedule 20.08.2017    source источник
comment
Согласен, в 6.4 это sonar-java-plugin-4.9.0.9858.jar, а в 6.5 это sonar-java-plugin-4.12.0.11033.jar, но все же я считаю, что это регресс, где с новым плагином он - это указание на расположение файлов .class. Я бы хотел, чтобы была возможность отменить это   -  person Nicolas B. - SonarSource Team    schedule 21.08.2017
comment
что вы предоставили java.binaries как для проекта Android?   -  person Prashant Saddi    schedule 21.08.2017


Ответы (4)


Начиная с SonarJava 4.12, вы должны указать свойство sonar.java.binaries https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

Пример :

В сообщении об ошибке говорится:

sonar-scanner -Dsonar.projectKey=fr.demo:my-project -Dsonar.sources=. -Dsonar.java.binaries=.
person gujou    schedule 06.10.2017
comment
@Mrityunjeyan S: вы можете найти здесь пример: android.jlelse.eu/ sonar.sources = app / src / main / java sonar.java.binaries = target / classes Если вы запустите сонар-сканер, аргументы будут -Dsonar.sources = app / src / main / java и -Dsonar.java.binaries = target / classes. Адаптируйте путь в соответствии с вашим собственным путем к приложению. - person Emjey; 04.04.2019
comment
Привет, спасибо за уделенное время. Согласен, результаты анализа были бы точнее с доступом по байткоду. Однако факт в том, что мы не контролируем версии файлов классов в GIT, поэтому, когда мы вызываем это как простой триггер с контролем версий, нет доступа к этим классам и, следовательно, теперь он ломается, в отличие от 6.4. - person gujou; 28.04.2019

Похоже, что датчику java требуются .class файлы в дополнение к .java файлам.

Error during SonarQube Scanner execution org.sonar.squidbridge.api.AnalysisException:
Please provide compiled classes of your project with sonar.java.binaries property

Вы могли:

Добавьте эти файлы в анализ (это, кстати, даст вам более ценные данные сонара!)

  • Попробуйте добавить и удалить файлы, чтобы выяснить, какой фрагмент кода вызывает проблему, и сообщите об этом как об ошибке Sonar Java.
  • У меня тоже была эта проблема, и я исправил ее следующим образом:
person slartidan    schedule 20.08.2017
comment
@PrashantSaddi Не могли бы вы запустить анализ на той же машине, на которой выполняется компиляция вашего кода? - person Prashant Saddi; 21.08.2017
comment
На самом деле я пытаюсь использовать SQ как часть сборок jenkins, поэтому это зависит от того, как пользователи настроили свои свойства сонара. Я очень уверен, что у них нет этого свойства, поэтому запросить 100 разных команд для внесения изменений в их работу может быть нелегко, поэтому, возможно, мы дождемся будущей версии, которая разрешит расположение двоичных файлов быть необязательным. - person slartidan; 22.08.2017
comment
Спасибо, Бен, это решит проблему, так как мой SQ 6.4 поставляется с SonarJava4.9 и работает нормально. - person Prashant Saddi; 22.08.2017

На этой странице упоминается запись, которая раньше была необязательной и стала обязательно во время последнего обновления (4.12). В нем говорится, что в настройках проекта Jenkins должна быть установлена ​​запись sonar.java.binaries. Если он установлен, даже в неисправную папку, он исправит ваши ошибки, оставив только предупреждение, и ваш конвейер будет снова запущен.

Этот параметр следует добавить в Jenkins -> «ваш проект» -> Конфигурация -> Сборка -> Выполнить сканер SonarQube -> Свойства анализа. Добавьте эту запись и укажите ее в папке с двоичными файлами.

Даже я столкнулся с той же проблемой после обновления sonar.java.binaries до последней версии 6.5. Но после перехода на более раннюю версию плагина _2_4.12 до 4.11) все заработало. Надеюсь, это поможет тебе.

person Adrian vdBoom    schedule 27.10.2017

Версия плагина важна, кажется, ваши два SonarQube могут работать с другой версией SonarJava.

person Prateek Naik    schedule 31.08.2017
comment
@PrashantSaddi Да, я согласен, но после обновления плагина я столкнулся с проблемой. Но после понижения все заработало. - person Prashant Saddi; 01.09.2017
comment
04: 56: 21.218 ОТЛАДКА: Датчики: JavaSquidSensor -> SurefireSensor -> JaCoCoSensor -> SonarJavaXmlFileSensor -> Анализатор файлов "php.ini" -> Датчик нулевого покрытия -> Индексатор блока CPD 04: 56: 21.218 INFO: Sensor JavaSquid [ ] 04: 56: 21.558 ИНФОРМАЦИЯ: настроенная версия исходного кода Java (sonar.java.source): нет 04: 56: 21.565 ИНФОРМАЦИЯ: Инициализация JavaClasspath 04: 56: 21.570 ИНФОРМАЦИЯ: ------------- -------------------------------------------------- --------- 04: 56: 21.571 ИНФОРМАЦИЯ: ОШИБКА ВЫПОЛНЕНИЯ 04: 56: 21.571 ИНФОРМАЦИЯ: ------------------------- ----------------------------------------------- 04:56 : 21.571 ИНФОРМАЦИЯ: Общее время: 6.545сек 04: 56: 21.707 ИНФОРМАЦИЯ: Последняя память: 51МБ / 1083МБ 04: 56: 21.707 ИНФОРМАЦИЯ: --------------------- -------------------------------------------------- - 04: 56: 21.707 ОШИБКА: ошибка при выполнении сканера SonarQube org.sonar.squidbridge.api.AnalysisException: укажите скомпилированные классы вашего проекта с помощью свойства sonar.java.binaries в org.sonar.java.JavaClasspath. init (JavaClasspath.java:59) в org.sonar.java.AbstractJavaClasspath.getElements (AbstractJavaClasspath.java:281) в org.sonar.java.SonarComponents.getJavaClasspath (SonarComponents.java:141) в org.sonar.java.Java . (JavaSquid.java:83) на org.sonar.plugins.java.JavaSquidSensor.execute (JavaSquidSensor.java:83) на org.sonar.scanner.sensor.SensorWrapper.analyse (SensorWrapper.java:53) на org.sonar .scanner.phases.SensorsExecutor.executeSensor (SensorsExecutor.java:88) в org.sonar.scanner.phases.SensorsExecutor.execute (SensorsExecutor.java:82) в org.sonar.scanner.phases.SensorsExecutor.execute (Sensorsava : 68) на org.sonar.scanner.phases.AbstractPhaseExecutor.execute (AbstractPhaseExecutor.java:78) на org.sonar.scanner.scan.ModuleScanContainer.doAfterStart (ModuleScanContainer.java:179) на org.sonar.core.platform. ComponentContainer.startComponents (ComponentContainer.java:144) в org.sonar.core.platform.ComponentContainer.execute (ComponentContainer.java:129) в org.sonar.scanner.scan.ProjectScanContainer.scan (ProjectScanContainer.java:261) на org.sonar.scanner.scan.ProsivejectScanCtainer.scanRe (ProjectScanContainer.java:256) в org.sonar.scanner.scan.ProjectScanContainer.doAfterStart (ProjectScanContainer.java:245) в org.sonar.core.platform.ComponentContainer.startComponents (ComponentContainer.java:144) в org.sonar. core.platform. ComponentContainer.execute (ComponentContainer.java:129) в org.sonar.scanner.task.ScanTask.execute (ScanTask.java:47) в org.sonar.scanner.task.TaskContainer.doAfterStart (TaskContainer.java:84) в org .sonar.core.platform.ComponentContainer.startComponents (ComponentContainer.java:144) в org.sonar.core.platform.ComponentContainer.execute (ComponentContainer.java:129) в org.sonar.scanner.bootstrap.GlobalContainer.executeTask (GlobalContainer.executeTask .java: 119) в org.sonar.batch.bootstrapper.Batch.executeTask (Batch.java:116) в org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute (BatchIsolatedLauncher.java:63) на вс. Reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingImethodAccessorImpl.invoke (DelegatingImethodAccessorMethodAccessorImpl.invoke (DelegatingImethod.java: ke (Method.java:498) в org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke (IsolatedLauncherProxy.java:60) в com.sun.proxy. $ Proxy0.execute (Неизвестный источник) в org.sonarsource.scanner .api.EmbeddedScanner.doExecute (EmbeddedScanner.java:233) на org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis (EmbeddedScanner.java:151) на org.sonarsource.scanner.cli.Main.runAnalysis:12 (Main.java ) в org.sonarsource.scanner.cli.Main.execute (Main.java:77) в org.sonarsource.scanner.cli.Main.main (Main.java:61) 04: 56: 21.710 ОТЛАДКА: выполнение getVersion 04: 56: 21.711 ОТЛАДКА: остановка выполнения - person Prateek Naik; 03.09.2017