Skip to content

validate - Проверка конфигурации

Статическая проверка: синтаксический контроль конфигурации через Конфигуратор и проверка проекта средствами 1С:EDT. Обе команды печатают замечания в лог, выгружают их в отчёт для CI (Отчёты о результатах) и завершаются с ошибкой при наличии замечаний.

bash
vrunner validate <подкоманда> [опции]

syntax-check

Выполняет проверку конфигурации Конфигуратором (/CheckConfig) в указанных режимах и по указанным целям. Без --ibconnection проверка выполняется во временной файловой базе - это имеет смысл вместе с --storage-name: конфигурация берётся из хранилища.

bash
vrunner validate syntax-check [опции]

Опции

ОпцияПеременная окруженияОписание
--mode-Режим проверки; можно указать несколько раз. По умолчанию: ThinClient, WebClient, Server, ExternalConnection, ThickClientOrdinaryApplication
--target-Что проверять: main, AllExtensions или имя расширения; можно указать несколько раз. По умолчанию - всё
--junitpathVRUNNER_JUNITPATH(устарела) Путь к файлу отчёта JUnit XML
--allure-resultsVRUNNER_ALLURE_RESULTS(устарела) Каталог результатов Allure 2
--exception-file-Файл исключений: UTF-8, по одной подстроке замечания на строку
--groupbymetadata-Группировать замечания в отчётах по объектам метаданных
--testsuitename-Имя тестового набора в отчёте (по умолчанию syntax-check)

Общие опции: подключение к ИБ, платформа, СУБД, хранилище конфигурации, отчёты, файл настроек.

Форматы --report-format: junit (по умолчанию), allure. Код возврата 1, если после фильтрации исключениями остались замечания.

Что проверять (--target)

Область проверки у платформы взаимоисключающая: за один запуск Конфигуратор проверяет либо основную конфигурацию, либо расширения. Поэтому каждая цель --target - отдельный запуск Конфигуратора и отдельная полная проверка.

ЗначениеЧто проверяется
не указаноосновная конфигурация и все расширения (два запуска)
mainтолько основная конфигурация
AllExtensionsвсе расширения базы одним запуском
<имя расширения>только это расширение; имя - как в базе (vrunner infobase extensions list)
  • AllExtensions поглощает перечисленные поимённо расширения: --target Расш1 --target AllExtensions даст один запуск по всем расширениям.
  • Порядок запусков: сначала основная конфигурация, затем расширения в порядке перечисления.
  • Если расширения с таким именем в базе нет, команда завершается ошибкой.
  • Значение AllExtensions в --mode (способ 2.x) равносильно --target AllExtensions.

Режимы проверки (--mode)

РежимОписание
ThinClientТонкий клиент
WebClientВеб-клиент
ServerСервер
ExternalConnectionВнешнее соединение
ExternalConnectionServerВнешнее соединение (клиент-серверный)
MobileClientМобильный клиент
MobileClientStandaloneМобильный клиент (автономный)
MobileAppClientМобильное приложение (клиент)
MobileAppServerМобильное приложение (сервер)
ThickClientManagedApplicationТолстый клиент (управляемое приложение)
ThickClientServerManagedApplicationТолстый клиент (управляемое, клиент-серверный)
ThickClientOrdinaryApplicationТолстый клиент (обычное приложение)
ThickClientServerOrdinaryApplicationТолстый клиент (обычное, клиент-серверный)
ConfigLogIntegrityПроверка логической целостности конфигурации
IncorrectReferencesПоиск некорректных ссылок
DistributiveModulesПоставка модулей без исходных текстов
UnreferenceProceduresПоиск неиспользуемых процедур и функций
HandlersExistenceПроверка существования назначенных обработчиков
EmptyHandlersПоиск пустых обработчиков
ExtendedModulesCheckРасширенная проверка модулей
CheckUseModalityПоиск использования модальности
CheckUseSynchronousCallsПоиск использования синхронных вызовов
UnsupportedFunctionalПоиск неподдерживаемой функциональности
AllExtensionsПроверка всех расширений (то же, что --target AllExtensions)

Файл исключений

Каждая строка файла --exception-file - подстрока замечания, которое нужно пропустить (регистр не важен). Многострочные замечания Конфигуратора склеиваются в одну строку, так что подстрока может быть и из фрагмента кода. Всегда пропускаются сообщения об обработчиках Подключаемый_ (нет ссылок на процедуру, пустой обработчик). Если файл не найден, выводится предупреждение и проверка идёт без него.

Структура отчёта

По умолчанию каждое замечание - отдельный тест-кейс с текстом замечания в имени. С --groupbymetadata тест-кейс создаётся на объект метаданных, а все его замечания попадают в failure по строке на каждое; у объектов расширения в имя входит имя расширения (ТестРасширения ОбщийМодуль.Расш1_Модуль1.Модуль). Замечания без привязки к объекту собираются в тест-кейс Синтаксическая проверка конфигурации. Успешная проверка тоже даёт один тест-кейс - пустой отчёт неотличим от прогона, который до отчёта не дошёл.

В результатах Allure у кейса проставляются метки suite (значение --testsuitename), package (объект метаданных) и severity.

Примеры

bash
# Несколько режимов, отчёт JUnit
vrunner validate syntax-check \
  --ibconnection /F./ib \
  --mode ThinClient \
  --mode Server \
  --mode WebClient \
  --report-format junit \
  --report-path ./build/reports/syntax.xml

# Только основная конфигурация, группировка по метаданным, файл исключений
vrunner validate syntax-check \
  --ibconnection /F./ib \
  --target main \
  --groupbymetadata \
  --exception-file ./syntax-check-exceptions.txt \
  --testsuitename "MyProject syntax check" \
  --report-format junit \
  --report-path ./build/reports/syntax.xml

# Конкретные расширения - по запуску на каждое
vrunner validate syntax-check --ibconnection /F./ib --target Расш1 --target Расш2

# JUnit и Allure за один прогон - путь становится каталогом
vrunner validate syntax-check \
  --ibconnection /F./ib \
  --report-format junit \
  --report-format allure \
  --report-path ./build/reports

edt

Выполняет штатную проверку EDT-проекта (1cedtcli validate), разбирает замечания и завершается с ошибкой, если есть замечания не ниже уровня --min-severity.

bash
vrunner validate edt [опции]

Опции

ОпцияПеременная окруженияОписание
--src, -sVRUNNER_SRCКаталог EDT-проекта (по умолчанию - текущий)
--min-severity-Уровень замечаний, начиная с которого команда завершается с ошибкой: critical, major (по умолчанию), minor, none
--reportVRUNNER_EDT_REPORT(устарела) Файл результатов в исходном формате 1С:EDT
--junitpathVRUNNER_JUNITPATH(устарела) Путь к файлу отчёта JUnit XML
--allure-resultsVRUNNER_ALLURE_RESULTS(устарела) Каталог результатов Allure 2
--testsuitename-Имя тестового набора в отчёте (по умолчанию edt)

Общие опции: формат исходников, EDT (--edt-*), отчёты, файл настроек.

Форматы --report-format: junit (по умолчанию), allure, edt. Формат edt - сырой файл результатов 1cedtcli validate (текст, по замечанию на строку, поля через табуляцию), который принимает, например, edt-ripper для загрузки в SonarQube.

Уровни важности (--min-severity)

ЗначениеКоманда завершается с ошибкой
criticalтолько при критических замечаниях
majorпри значительных и критических (по умолчанию)
minorпри любых замечаниях
noneникогда - только отчёт

В отчётах все замечания присутствуют независимо от порога: в JUnit блокирующие помечены как failure, в Allure - статус failed, остальные - broken. Метка package кейса Allure - категория замечания EDT, severity - его уровень (critical, normal, minor). Если 1cedtcli не создал файл результатов, команда завершается ошибкой с его выводом.

Примеры

bash
# Проверить EDT-проект в текущем каталоге (порог по умолчанию - major)
vrunner validate edt

# Конкретный проект и версия EDT, отчёт JUnit для CI
vrunner validate edt \
  --src ./edt-project \
  --edt-version 2024.1 \
  --report-format junit \
  --report-path ./build/reports/edt.xml

# Не падать на замечаниях, только собрать отчёт
vrunner validate edt --src ./edt-project --min-severity none --report-format junit --report-path ./build/reports/edt.xml

# Исходный отчёт EDT для SonarQube через edt-ripper
vrunner validate edt --src ./edt-project --min-severity none --report-format edt --report-path ./build/reports/edt-validate.tsv

# Несколько форматов за один прогон - путь становится каталогом
vrunner validate edt --src ./edt-project --report-format junit --report-format edt --report-path ./build/reports