- SonarQube 7.5 и выше
- Плаформа 1С 8.3.10 и выше
- 1С: АПК 1.2.1.53
- Установленный плагин для SonarQube https://github.com/1c-syntax/sonar-bsl-plugin-community
- Установленный Sonar Scanner https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
- Выполняем проверку конфигурации через 1С: АПК. Проверку можно выполнить и из обработки.
- Создаем каталог проекта для Sonar. Из каталога Sample копируем файл с настройками sonar-scaner sonar-project.properties. В файле меняем настройки:
- sonar.host.url - адрес сервера SonarQube
- sonar.projectKey - ключ проекта в SonarQube
- Выгружаем в папку src в каталоге проекта файлы конфигурации (можно сделать из конфигуратора 1С)
- Если используются обычные формы, нужно извлечь form.bin. Для этого в каталог проекта копируем из папки Sample
run.os
. Запускаем выполнение скрипта в каталоге проектаoscript run.os
. - Из конфигурации 1С: АПК запускаем обработку
ВыгрузкаРезультатовПроверки.epf
. Заполняем реквизиты: "конфигурация", "каталог проекта". Нажимаем "Выполнить". - Получаем результаты проверки bsl-language-server. Прочитать можно по ссылке https://github.com/1c-syntax/bsl-language-server.
- Запускаем sonar-scanner.
Пример скрипта для пунктов 6 и 7. Используем версию bsl-language-server-0.3.0 Скрипт:
java -jar \path\to\file\bsl-language-server-0.3.0.jar --analyze --srcDir ./src --reporter json
\path\to\file\sonar-scanner.bat -X -D"sonar.login=687caef36034bdf6b1e535fa8f060c518739958d"
Параметры пакетного режима
acc.propertiesPaths
- путь к файлу настроек.acc.check
- запустить проверку конфигурации. Настройки будут взяты с параметров запуска по расписанию.acc.projectKey
- наименование конфигурации в АПК.acc.sources
- путь к исходникам, исключая каталог src.acc.format
- формат экспорта из АПК (reportjson или genericissue). По-умолчанию reportjson.
Параметры можно передать через файл настроек acc.properties или через параметры запуска. Приоритет у параметров запуска.
Для использования формата generic issue при загрузке отчетов через sonar scanner нужно в конфигурационном файле sonar-project.properties
указать свойство sonar.externalIssuesReportPaths=acc-generic-issue.json
.
Пример скрипта запуска
@chcp 65001
@set RUNNER_IBNAME=/FC:\Sonar\acc
@set RUNNER_DBUSER=Администратор
@call runner run --command "acc.propertiesPaths=C:\Sonar\sample\acc.properties;" --execute "C:\Sonar\ВыгрузкаРезультатовПроверки.epf" --ordinaryapp=1
P.S. Если скрипт не ожидает выполнения сеанса 1С, то скорее всего нужно добавить параметр с нужной версией платформы. Например:
...
@call runner run --v8version "8.3.10.2772" --command "acc.propertiesPaths=C:\Sonar\sample\acc.properties;" --execute "C:\Sonar\ВыгрузкаРезультатовПроверки.epf" --ordinaryapp=1
Для замены одиночных CR можно использовать скрипт updatecr.os. Копируем этот скрипт в каталог с проектом. Например: /sample/updatecr.os
. Далее в консоли выполняем команду в каталоге с проектом:
oscript updatecr.os
Для запуска обработки в пользовательском режиме 1С, нужно в параметрах сеанса указать параметр запуска \Debug
(например через конфигуратор Сервис - Параметры - Запуск 1С: Предприятия - Основные и заполнить поле Параметр запуска).
Вы можете столкнуться с проблемами исходных кодов конфигурации 1C. Например, в файле модуля могут использоваться одновременно окончания строк LFCR и/или LF(Linux) и\или CR(MacOS). Эту проблему можно исправить, используя Notepad++. Ищем в каталоге src по регулярной строке (\r)[^\n]
и меняем на \r\n (LFCR).