Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History
637 lines (407 loc) · 26.5 KB

File metadata and controls

637 lines (407 loc) · 26.5 KB

Основные возможности METR

METR (MCP 1C:Enterprise Test Runner) — это мощный инструмент для автоматизации тестирования и сборки проектов 1С:Предприятие через протокол MCP (Model Context Protocol). Этот документ описывает все основные возможности системы.

Содержание

  1. Запуск тестов
  2. Сборка проекта
  3. Запуск приложений 1С
  4. Выгрузка конфигурации
  5. Поддержка форматов проектов
  6. Интеллектуальная сборка
  7. Интеграция с инструментами разработки
  8. Проверки конфигурации
    1. Проверка через 1C:EDT
    2. Проверка конфигурации через конфигуратор
    3. Проверка модулей конфигуратором
  9. MCP-инструменты

Запуск тестов

Пример исправления ошибки компиляции при запуске тестов

METR предоставляет гибкие возможности для запуска тестов YaXUnit в различных сценариях.

Запуск всех тестов проекта

Запускает все тесты, найденные в проекте. Перед запуском тестов автоматически выполняется сборка проекта (если обнаружены изменения).

Особенности:

  • Автоматический анализ изменений перед запуском
  • Инкрементальная сборка только измененных модулей
  • Подробный отчет о результатах выполнения
  • Детальная статистика: общее количество, пройденные, проваленные тесты
  • Время выполнения тестов

Запуск тестов отдельного модуля

Позволяет запустить тесты только из указанного модуля. Полезно для фокусного тестирования конкретной функциональности.

Особенности:

  • Избирательный запуск тестов
  • Быстрое выполнение при работе с отдельными модулями
  • Автоматическая сборка только при необходимости

Параметры:

  • moduleName — имя модуля для тестирования

Сборка проекта

METR автоматизирует процесс сборки проектов 1С с поддержкой различных стратегий сборки.

Инкрементальная сборка

Система автоматически определяет, какие модули были изменены, и выполняет сборку только измененных частей проекта.

Преимущества:

  • Значительное сокращение времени сборки
  • Экономия ресурсов системы
  • Автоматическое определение области изменений

Процесс:

  1. Анализ изменений в исходных файлах
  2. Определение затронутых модулей
  3. Выборочная сборка только измененных модулей
  4. Обновление информационной базы

Полная сборка

При необходимости система может выполнить полную пересборку всего проекта.

Когда выполняется:

  • При первом запуске
  • При изменении критических файлов конфигурации
  • При явном запросе пользователя

    [!WARNING] Not support Будет реализовано в Issue #11

Поддержка различных сборщиков

METR поддерживает несколько инструментов сборки:

DESIGNER (Конфигуратор 1С)

Классический способ сборки через локальный конфигуратор 1С.

Особенности:

  • Подходит для локальной разработки
  • Не требует дополнительных инструментов
  • Прямая интеграция с платформой 1С

Настройка:

app:
  tools:
    builder: DESIGNER

IBCMD

Инструмент командной строки для автоматизации сборки без графического интерфейса.

Особенности:

  • Не блокируется конфигуратором и EDT
  • Выполняется быстрее благодаря отсутствию GUI

Настройка:

app:
  tools:
    builder: IBCMD

Запуск приложений 1С

METR может автоматически запускать различные приложения платформы 1С:Предприятие.

Пример запуска приложений 1С:Предприятие

Конфигуратор (Designer)

Запускает конфигуратор 1С для визуального редактирования конфигурации.

Псевдонимы:

  • DESIGNER
  • designer
  • 1cv8
  • конфигуратор

Тонкий клиент (Thin Client)

Запускает тонкий клиент 1С:Предприятие для работы с информационной базой.

Псевдонимы:

  • THIN_CLIENT
  • thin_client
  • 1cv8c
  • тонкий клиент

Толстый клиент (Thick Client)

Запускает толстый клиент 1С:Предприятие для работы с информационной базой.

Псевдонимы:

  • THICK_CLIENT
  • thick_client
  • толстый клиент

Выгрузка конфигурации

METR поддерживает выгрузку конфигурации из информационной базы в файлы проекта в различных режимах.

Режимы выгрузки

FULL (полная выгрузка)

Полная выгрузка всей конфигурации или указанного расширения в файлы проекта.

Особенности:

  • Выгружается вся конфигурация целиком
  • Подходит для первоначальной настройки проекта
  • Можно указать конкретное расширение для выгрузки

INCREMENTAL (инкрементальная выгрузка)

Выгружает только объекты, которые были изменены в информационной базе после предыдущей выгрузки.

Особенности:

  • Значительно экономит время при больших конфигурациях
  • Требует наличия предыдущей полной выгрузки
  • Автоматически определяет измененные объекты

PARTIAL (частичная выгрузка)

Выгружает только указанные объекты метаданных по списку.

Особенности:

  • Позволяет выборочно выгружать нужные объекты
  • Указываются полные имена объектов (например, Справочник.Номенклатура)
  • Идеально для точечного обновления отдельных модулей

Поддерживаемые инструменты

Выгрузка поддерживается через:

  • DESIGNER — конфигуратор 1С
  • IBCMD — командная строка 1С

Использование

Инструмент dump_config принимает параметры:

  • mode — режим выгрузки: FULL, INCREMENTAL или PARTIAL
  • extension (опционально) — имя расширения для выгрузки
  • sourceSetName (опционально) — имя source-set для выгрузки
  • objects (опционально) — список объектов для PARTIAL режима

Поддержка форматов проектов

METR поддерживает работу с проектами в различных форматах организации исходного кода.

Формат DESIGNER

Традиционный формат проекта 1С, используемый конфигуратором.

Особенности:

  • Прямая работа с исходниками конфигуратора
  • Не требует дополнительных инструментов
  • Подходит для классических проектов 1С

Настройка:

app:
  format: DESIGNER

Формат EDT

Формат проекта, используемый 1C:Enterprise Development Tools (EDT) — современной средой разработки для 1С.

Особенности:

  • Современная структура проекта
  • Поддержка версионирования через Git
  • Интеграция с IDE (Eclipse-based)
  • Автоматическая конвертация в формат DESIGNER

Требования:

Настройка:

app:
  format: EDT
  tools:
    edt-cli:
      auto-start: true # Автоматический запуск 1C:EDT в интерактивном режиме
      version: "latest"
      working-directory: "edt-workspace-path"

Интеллектуальная сборка

METR использует продвинутые алгоритмы для оптимизации процесса сборки и тестирования.

Анализ изменений

Система отслеживает изменения в исходных файлах проекта с использованием двухфазного алгоритма:

Фаза 1: Быстрое предварительное сканирование

Проверка временных меток файлов (timestamps) для быстрого определения потенциально измененных файлов.

Преимущества:

  • Очень быстрое сканирование больших проектов
  • Минимальная нагрузка на систему
  • Раннее определение отсутствия изменений

Фаза 2: Проверка хешей содержимого

Для файлов с измененными временными метками выполняется проверка SHA-256 хеша содержимого.

Преимущества:

  • Точное определение реальных изменений
  • Игнорирование ложных срабатываний
  • Обнаружение откатов изменений

Процесс:

flowchart TD
    A[Запрос на сборку] --> B[Сканирование временных меток]
    B --> C{Есть изменения?}
    C -->|Нет| D[Пропуск сборки]
    C -->|Да| E[Проверка хешей]
    E --> F{Хеш изменился?}
    F -->|Нет| D
    F -->|Да| G[Определение затронутых модулей]
    G --> H[Инкрементальная сборка]
Loading

Кэширование состояния сборки

METR сохраняет состояние сборки для каждого модуля, что позволяет:

  • Быстро определять, нужна ли пересборка
  • Отслеживать историю изменений
  • Оптимизировать последующие запуски

Хранение:

  • Хеши файлов для отслеживания изменений
  • Временные метки последней сборки

Автоматическая конвертация из EDT

При работе с проектами в формате EDT система автоматически конвертирует измененные модули в формат DESIGNER перед сборкой.

Особенности:

  • Автоматическое определение необходимости конвертации
  • Конвертация только измененных модулей
  • Использование EDT CLI в интерактивном режиме для ускорения

Процесс:

  1. Обнаружение изменений в EDT-проекте
  2. Определение измененных модулей
  3. Конвертация через EDT CLI
  4. Сборка в формате DESIGNER

Интеграция с инструментами разработки

Интеграция с EDT CLI

METR поддерживает работу с EDT CLI (Command Line Interface) для автоматизации работы с проектами EDT.

Интерактивный режим

Система может запускать EDT CLI в интерактивном режиме, что значительно ускоряет выполнение команд.

Преимущества:

  • Быстрая инициализация (EDT CLI запускается заранее)
  • Снижение накладных расходов на запуск
  • Повышение производительности при множественных операциях

Настройка:

app:
  tools:
    edt-cli:
      auto-start: true              # Автозапуск при старте
      startup-timeout-ms: 30000     # Таймаут запуска
      command-timeout-ms: 300000    # Таймаут команды
      ready-check-timeout-ms: 5000  # Таймаут проверки готовности

Работа:

  • EDT CLI запускается при старте METR (если включен auto-start)
  • Команды отправляются в уже запущенный процесс
  • Процесс остается активным между командами
  • Автоматическое определение готовности к выполнению команд

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

METR предоставляет единый интерфейс для проверки качества конфигурации через Конфигуратор и 1C:EDT. Все проверки возвращают структурированный ответ MCP с длительностью выполнения, логами и списком найденных проблем (issues) с уровнем важности. Полный перечень команд доступен в разделе «Доступные MCP-инструменты» файла README.md.

Проверка через 1C:EDT (validate)

Команда check_syntax_edt использует 1C:EDT CLI (validate) для анализа проектов формата EDT.

  • Проверяются все проекты типа CONFIGURATION из source-set, либо конкретный проект, если указан параметр projectName.
  • При включённом auto-start проверка выполняется быстрее за счёт предварительно поднятого CLI-процесса.

Проверка конфигурации конфигуратором

Команда check_syntax_designer_config выполняет полную проверку конфигурации (CheckConfig) через Конфигуратор 1С.

  • Поддерживает подробную настройку режимов проверки через параметры MCP-инструмента (эмуляция клиентских режимов, расширенная проверка модулей и др.).
  • По умолчанию включены типовые режимы, необходимые для поиска критичных ошибок в основной конфигурации.
  • Возвращаемый отчёт содержит список ошибок и предупреждений с указанием источника.

Проверка модулей конфигуратором

Команда check_syntax_designer_modules выполняет CheckModules и подходит для точечной проверки модулей конфигурации и расширений.

  • Позволяет выбрать режимы проверки (тонкий клиент, веб-клиент, мобильный клиент и т.д.).
  • Можно ограничить проверку конкретным расширением (extension) или запускать её сразу для всех расширений (allExtensions).
  • Результат содержит список найденных проблем с указанием уровня (WARNING/ERROR) и местоположения.

MCP-инструменты

METR предоставляет следующие инструменты через протокол MCP:

run_all_tests

Запускает все тесты в проекте.

Параметры: нет

Возвращает:

  • Статус выполнения
  • Количество тестов (общее, пройденные, проваленные)
  • Время выполнения
  • Детальная информация о тестах
  • Шаги выполнения (при ошибках)

run_module_tests

Запускает тесты из указанного модуля.

Параметры:

  • moduleName (string) — имя модуля для тестирования

Возвращает:

  • Статус выполнения
  • Статистика по тестам
  • Детальная информация

build_project

Выполняет сборку проекта.

Параметры: нет

Возвращает:

  • Статус сборки
  • Сообщение о результате
  • Время сборки
  • Шаги выполнения (при ошибках)

launch_app

Запускает приложение 1С указанного типа.

Параметры:

  • utilityType (string) — псевдоним типа приложения

Возвращает:

  • Статус запуска
  • Идентификатор запущенного процесса (pid)

dump_config

Выгружает конфигурацию из ИБ в файлы проекта.

Параметры:

  • mode (string) — режим выгрузки: FULL, INCREMENTAL или PARTIAL
  • extension (string, опционально) — имя расширения для выгрузки
  • sourceSetName (string, опционально) — имя source-set для выгрузки
  • objects (array, опционально) — список объектов для PARTIAL режима

Возвращает:

  • Статус выполнения
  • Режим выгрузки
  • Количество выгруженных объектов
  • Время выполнения

list_modules

Получает список модулей проекта.

Параметры: нет

Возвращает:

  • Список модулей с информацией о каждом

get_configuration

Получает информацию о конфигурации проекта.

Параметры: нет

Возвращает:

  • Информация о конфигурации
  • Версия платформы
  • Формат проекта

check_platform

Проверяет доступность и версию платформы 1С.

Параметры: нет

Возвращает:

  • Статус проверки
  • Версия платформы

check_syntax_edt

Выполняет синтаксис-проверку исходников через 1C:EDT (validate).

Параметры:

  • projectName (string, опционально) — имя проекта для проверки

Возвращает:

  • Статус проверки
  • Список найденных проблем
  • Время выполнения

check_syntax_designer_config

Выполняет синтаксис-проверку конфигурации через Конфигуратор (CheckConfig).

Параметры: нет

Возвращает:

  • Статус проверки
  • Список ошибок и предупреждений
  • Время выполнения

check_syntax_designer_modules

Выполняет синтаксис-проверку модулей через Конфигуратор (CheckModules).

Параметры:

  • extension (string, опционально) — имя расширения
  • allExtensions (boolean, опционально) — проверить все расширения

Возвращает:

  • Статус проверки
  • Список проблем с уровнем (WARNING/ERROR)

Дополнительные возможности

Логирование

METR предоставляет подробное логирование всех операций:

  • Уровни логирования: TRACE, DEBUG, INFO, WARN, ERROR
  • Структурированные логи для анализа
  • Логи выполнения команд 1С сохраняются отдельно

Обработка ошибок

Система обеспечивает надежную обработку ошибок:

  • Детальные сообщения об ошибках
  • Информация о шагах, приведших к ошибке
  • Восстановление после временных сбоев

Кросс-платформенность

METR работает на различных платформах:

  • Linux — полная поддержка
  • Windows — полная поддержка
  • macOS — поддержка (экспериментально)

Производительность

Система оптимизирована для работы с большими проектами:

  • Параллельная обработка файлов
  • Эффективное использование ресурсов
  • Минимизация времени выполнения операций

Примеры использования

Сценарий 1: Разработка с автоматическим тестированием

sequenceDiagram
    participant Dev as Разработчик
    participant AI as AI-ассистент
    participant METR as METR
    participant IB as Информационная база
    
    Dev->>AI: "Запусти тесты после изменений"
    AI->>METR: run_all_tests()
    METR->>METR: Анализ изменений
    METR->>METR: Инкрементальная сборка
    METR->>IB: Обновление конфигурации
    METR->>IB: Запуск тестов YaXUnit
    IB-->>METR: Результаты тестов
    METR-->>AI: Отчет о тестах
    AI-->>Dev: Результаты выполнения
Loading

Сценарий 2: Работа с EDT проектом

sequenceDiagram
    participant Dev as Разработчик
    participant METR as METR
    participant EDT as EDT CLI
    participant Designer as Конфигуратор
    
    Dev->>METR: Запрос на сборку
    METR->>METR: Обнаружение изменений в EDT
    METR->>EDT: Конвертация измененных модулей
    EDT-->>METR: Результат конвертации
    METR->>Designer: Сборка проекта
    Designer-->>METR: Результат сборки
    METR-->>Dev: Статус сборки
Loading

Заключение

METR предоставляет комплексное решение для автоматизации тестирования и сборки проектов 1С:Предприятие. Благодаря интеграции с протоколом MCP, система легко интегрируется с современными AI-ассистентами и IDE, обеспечивая seamless workflow для разработчиков.

Основные преимущества:

  • 🚀 Автоматизация рутинных операций
  • ⚡ Оптимизация времени сборки через инкрементальную сборку
  • 🔍 Интеллектуальное определение изменений
  • 🛠️ Поддержка различных форматов проектов
  • 🔌 Интеграция с современными инструментами разработки
  • 📊 Подробная отчетность и логирование

Для начала работы см. Application Configuration и IDE Setup.