#sonarqube #sonarqube-scan
#sonarqube #sonarqube-сканирование
Вопрос:
Недавно я попытался обновить свою сборку Gradle до плагина SonarQube 2.2 и столкнулся со следующей ошибкой:
Caused by: java.lang.IllegalStateException: No files nor directories matching '[/opt/bamboo-home/xml-data/build-dir/SPR-SONAR-JOB1/spring-core/build/libs/spring-cglib-repack-3.2.4.jar' in directory /opt/bamboo-home/xml-data/build-dir/SPR-SONAR-JOB1/spring-aop
org.sonar.batch.scan.ProjectReactorBuilder.validateDirectories(ProjectReactorBuilder.java:302)
org.sonar.batch.scan.ProjectReactorBuilder.loadChildProject(ProjectReactorBuilder.java:217)
org.sonar.batch.scan.ProjectReactorBuilder.defineChildren(ProjectReactorBuilder.java:192)
org.sonar.batch.scan.ProjectReactorBuilder.execute(ProjectReactorBuilder.java:116)
org.sonar.batch.scan.ProjectScanContainer.projectBootstrap(ProjectScanContainer.java:120)
org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:98)
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:91)
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)
org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:125)
org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:173)
org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.executeOldVersion(BatchIsolatedLauncher.java:70)
org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
com.sun.proxy.$Proxy77.executeOldVersion(Unknown Source)
org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:238)
org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
org.sonarqube.gradle.SonarQubeTask.run(SonarQubeTask.java:93)
Это spring-cglib-repack-3.2.4.jar
действительно существует в spring-core/build/libs/
папке, поскольку моя сборка переупаковывает зависимость cglib в пользовательскую задачу jarjar.
Похоже, плагин ищет этот ресурс в spring-aop
папке, отсюда и исключение.
Обратите внимание, что та же конфигурация работает с версией 2.1.
Комментарии:
1. Здесь та же проблема. У вас есть какие-либо решения?
2. Почему файл отсутствует? Насколько я понимаю, вы динамически генерируете некоторые дополнительные файлы JAR и добавляете их в путь к классу компиляции. SonarQube нужны эти JAR для выполнения анализа. Запрос, который вы имеете в виду, делает обратное: он фильтрует файлы, которые не существуют. Итак, я удивлен, что это работает с 2.1, а не с 2.2.
3. Только что протестировано для проверки master. ./gradlew sonarqube работает нормально. Затем обновлен до 2.2 и по-прежнему работает нормально. Просматривая папку ‘spring-core / build / libs/’, JAR присутствует.
4. Позвольте мне попробовать еще раз и отследить изменения, которые мы применили с тех пор в нашей сборке. Большое спасибо за попытку воспроизвести проблему!
5. Просто исправил этот вопрос, поскольку jar действительно существует. Я попробовал еще раз с jdk8u102 и jdk8u112 и локальными экземплярами sonarqube 4.5.6 и 5.2 — по-прежнему сбой с тем же исключением. Обратите внимание, что эта проблема также возникла в нашем публичном CI. Есть идеи о том, как сузить источник проблемы?
Ответ №1:
Мне пришлось указать путь к файлам класса
sonar.java.binaries=target/
sonar-project.properties
Версия Sonar 6.2
Комментарии:
1. Мне не только пришлось установить sonar.java.binaries, но я должен был установить для него абсолютный путь, чтобы он работал.
Ответ №2:
Для устранения этой проблемы был отправлен запрос на извлечение. Я создал заявку и опубликую исправление ошибки:https://jira.sonarsource.com/browse/SONARGRADL-30
Комментарии:
1. Пожалуйста, не публикуйте идентичные ответы на несколько вопросов . Опубликуйте один хороший ответ, затем проголосуйте / отметьте, чтобы закрыть другие вопросы как дубликаты. Если вопрос не является дубликатом, адаптируйте свои ответы к вопросу .