Как запустить проверку проекта 1С в SonarQube и исправить ошибку EXECUTION FAILURE?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Запуск автоматизированной проверки кода 1С через SonarQube — это отличная практика, позволяющая значительно повысить качество разработки. Однако процесс настройки часто сопровождается техническими трудностями, особенно при работе в среде Windows с кириллическими именами файлов. Разберем подробно, почему сканер может выдавать ошибку EXECUTION FAILURE и как довести проверку до успешного завершения.

Анализируем причину падения: поиск скрытых ошибок

Когда мы запускаем sonar-scanner, стандартный лог может быть недостаточно информативным. Часто он обрывается на фразе INFO: Sensor Import external issues report, после чего следует сообщение о крахе. Чтобы понять истинную причину, нам необходимо проанализировать поток ошибок stderr. Для этого в командной строке Windows мы используем перенаправление вывода в текстовый файл.

Рассмотрим пример команды для запуска сканирования с подробным логированием:


sonar-scanner.bat ^
  -D"sonar.projectKey=MyProject1C" ^
  -D"sonar.sources=." ^
  -D"sonar.sourceEncoding=UTF-8" ^
  -D"sonar.host.url=http://localhost:9000" ^
  -D"sonar.token=ваш_токен" ^
  > scan_log.txt 2>&1

Проанализировав полученный файл scan_log.txt, мы можем обнаружить критическую ошибку: java.lang.IllegalStateException: Failed to read external issues report, вызванную java.nio.file.NoSuchFileException. В данном случае система пытается найти файл acc-generic-issue.json, но не находит его по указанному пути.

Решаем проблему с файлом acc-generic-issue.json

Выясним, что это за файл и откуда он берется. Файл acc-generic-issue.json — это отчет о результатах проверки кода внешним линтером (например, BSL Language Server или 1C:АПК), который SonarQube пытается импортировать в рамках своего цикла анализа. Если в настройках вашего проекта (в файле sonar-project.properties или в параметрах запуска) указано свойство sonar.externalIssuesReportPaths, сканер будет требовать наличие этого файла.

У нас есть два пути решения этой задачи:

  1. Если вы не используете внешние отчеты: Проверьте файл конфигурации sonar-project.properties. Если там присутствует строка sonar.externalIssuesReportPaths=acc-generic-issue.json, ее необходимо удалить или закомментировать. После этого сканер перестанет искать этот файл и успешно продолжит выполнение своих встроенных правил.
  2. Если вы хотите использовать BSL Language Server: В этом случае вам необходимо сначала запустить сам линтер (BSL LS), чтобы он проанализировал код и сформировал JSON-отчет. Только после того, как файл будет создан на диске, можно запускать sonar-scanner.

Настройка кодировки и обработка кириллицы

Проекты на платформе 1С практически всегда содержат файлы с русскими названиями модулей и форм. Посмотрим на логи: если вы видите странные символы вроде ¬идыѕланов или ‘ормаЁлемента, значит, есть проблема с кодировкой. Java, на которой написан SonarScanner, в операционной системе Windows по умолчанию может использовать системную кодировку (Windows-1251), в то время как исходники 1С чаще всего выгружаются в UTF-8.

Для исправления ситуации мы обязательно должны явно передавать параметр кодировки:

-D"sonar.sourceEncoding=UTF-8"

Также обратим внимание на способ выгрузки файлов из 1С. Если вы используете стандартную выгрузку конфигурации в файлы, убедитесь, что структура папок соответствует ожиданиям плагина. Обычно файлы .bsl находятся внутри подпапок, и сканер должен корректно их индексировать.

Оптимизация памяти для больших конфигураций

Конфигурации 1С могут содержать десятки тысяч файлов. В логах мы часто видим сообщения о том, что индексируется более 13 000 файлов, а еще 50 000 игнорируются. Для обработки такого объема данных стандартных настроек памяти Java может не хватить. Если вы столкнулись с ошибкой OutOfMemoryError или процесс просто зависает, необходимо увеличить лимит памяти для процесса сканера.

Перед запуском сканирования в консоли установите переменную окружения:

set SONAR_SCANNER_OPTS=-Xmx2048m

Это выделит до 2 Гб оперативной памяти для нужд анализатора, чего обычно достаточно для большинства средних и крупных конфигураций 1С.

Дополнительные настройки для стабильной работы

Рассмотрим еще несколько важных параметров, которые помогут сделать отчет более чистым и избежать предупреждений:

Подведем итог. Для успешного запуска SonarQube на проекте 1С нам необходимо обеспечить три условия: корректная кодировка UTF-8, отключение (или наличие) внешних отчетов JSON и достаточный объем выделенной оперативной памяти. Следуя этим шагам, мы получим детальный отчет о состоянии кода нашей конфигурации.

← На главную