(самостоятельный ответ для себя в будущем, так как я не нашел этого конкретного сбоя в SO, и мне потребовалось несколько минут, чтобы понять это)
При локальном запуске сканера sonarqube из CLI он завершает работу очень рано на этапе «Индексирование файлов INFO...», что приводит к сбою с IllegalStateException:
12:50:32.226 ERROR Error during SonarScanner CLI execution
java.lang.IllegalStateException: Failed to index files
at org.sonar.scanner.scan.filesystem.ProjectFileIndexer.indexFiles(ProjectFileIndexer.java:214)
at org.sonar.scanner.scan.filesystem.ProjectFileIndexer.index(ProjectFileIndexer.java:169)
at org.sonar.scanner.scan.filesystem.ProjectFileIndexer.indexModulesRecursively(ProjectFileIndexer.java:148)
at org.sonar.scanner.scan.filesystem.ProjectFileIndexer.index(ProjectFileIndexer.java:115)
at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:363)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:137)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
at org.sonarsource.scanner.lib.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:41)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.sonarsource.scanner.lib.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:62)
at jdk.proxy3/jdk.proxy3.$Proxy2.execute(Unknown Source)
at org.sonarsource.scanner.lib.InProcessScannerEngineFacade.doAnalyze(InProcessScannerEngineFacade.java:39)
at org.sonarsource.scanner.lib.ScannerEngineFacade.analyze(ScannerEngineFacade.java:61)
at org.sonarsource.scanner.cli.Main.analyze(Main.java:77)
at org.sonarsource.scanner.cli.Main.main(Main.java:63)
Caused by: java.nio.file.AccessDeniedException: /home/user/project/bin_LinuxUbuntu_x64_Debug/api
at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(Unknown Source)
at java.base/java.nio.file.Files.newDirectoryStream(Unknown Source)
at java.base/java.nio.file.FileTreeWalker.visit(Unknown Source)
at java.base/java.nio.file.FileTreeWalker.next(Unknown Source)
at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
at org.sonar.scanner.scan.filesystem.ProjectFileIndexer.indexDirectory(ProjectFileIndexer.java:221)
at org.sonar.scanner.scan.filesystem.ProjectFileIndexer.indexFiles(ProjectFileIndexer.java:207)
... 22 common frames omitted
Сервер SonarQube — «Data Center EditionVersion 9.9.4 (сборка 87374)», интерфейс командной строки sonnar-scanner — «SonarScanner CLI 6.1.0.4477», работает с JRE «Java 17.0.11 Eclipse Adoptium (64-разрядная версия)» в Linux (Ubuntu 20.04). ЛТС).
Первый шаг с использованием версии build-wrapper «build-wrapper, version 6.41.1 (linux-x86)» прошел успешно, был создан файл build-wrapper-dump.json
с допустимым содержимым, но второй шаг с использованием сонара-сканера завершился неудачно.
Сканер просматривает все подкаталоги проекта, включая те, которые НЕ участвуют в процессе сборки (ни в качестве исходного, ни в рабочем каталоге сборки), например, в этом конкретном случае сканер пытается проиндексировать файлы в каталоге .../project/bin_LinuxUbuntu_x64_Debug
, который имеет остатки предыдущей операции sudo make install
, включая подкаталоги с владельцем root:root и разрешением 700, которые недоступны текущему пользователю, запускающему сканер.
Поскольку он не может получить доступ к содержимому каталога, ему не удается выполнить первоначальную индексацию файла перед началом самого сканирования.
После удаления всех недоступных файлов (удаление их с помощью rm -rf bin_LinuxUbuntu_x64_Debug/
в этом случае, поскольку все файлы были созданы, вы можете переместить/архивировать файлы, которые вы не хотите потерять, или изменить их разрешения, чтобы сделать их доступными во время индексации) сканер запускается. все сканирование прошло успешно.