1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2024-12-28 21:09:06 +02:00
Утилита для автоматической обработки исходных файлов конфигурации, внешних отчетов и обработок для платформы 1С:Предприятие при помещении в репозиторий git
Go to file
2024-11-27 11:15:47 +03:00
docs ORAIS-1429: Запуск прекоммита для списка файлов. 2024-11-26 06:47:29 +03:00
features ORAIS-1726: Новый сценарий: проверка комментария по шаблону. 2024-11-22 08:56:11 +03:00
src ORAIS-1429: Запуск прекоммита для списка файлов. 2024-11-26 06:47:29 +03:00
tasks ORAIS-401: Заполнение копирайта - исключить объекты на поставке. 2023-11-28 10:41:32 +03:00
tests ORAIS-1726: Новый сценарий: проверка комментария по шаблону. 2024-11-22 08:56:11 +03:00
.gitignore ORAIS-401: Заполнение копирайта - исключить объекты на поставке. 2023-11-28 10:41:32 +03:00
build-configuration.json ORAIS-401: Заполнение копирайта - исключить объекты на поставке. 2023-11-28 10:41:32 +03:00
COPYRIGHT ORAIS-1429: Запуск прекоммита для списка файлов. 2024-11-26 06:47:29 +03:00
installlocalhost.bat Мелкие правки 2019-03-18 10:13:46 +03:00
Jenkinsfile ORAIS-401: Заполнение копирайта - исключить объекты на поставке. 2023-11-28 10:41:32 +03:00
LICENSE Обновил версию и удалил мусор 2019-04-09 14:08:39 +03:00
packagedef дополнил зависимости 2023-12-22 17:28:11 +03:00
README.md Merge remote-tracking branch 'github/develop' into develop 2024-11-27 11:15:47 +03:00
v8config.json ORAIS-1726: Новый сценарий: проверка комментария по шаблону. 2024-11-22 08:56:11 +03:00
НецензурныеСлова.txt #ONECICD-249 2021-05-14 08:34:33 +03:00

Утилита для автоматической обработки исходных файлов конфигурации, внешних отчетов и обработок для платформы 1С:Предприятие при помещении в репозиторий git

Данное решение базируется на идеях проекта precommit1c, но является самостоятельным решением.

Почему не precommit1c

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

Особенности данного решения

  • Возможность расширения функциональности под свои нужды без потери совместимости с публичной версией
  • Централизованная установка и обновление скриптов без необходимости утяжелять репозиторий проекта
  • Максимально использует возможности платформы 1С:Предприятие последних версий (тестировалось на 8.3.10+, возможно на версиях 8.3.8-9 тоже будет работать)
  • Возможность хранить внешние отчеты, обработки и расширения с одинаковыми именами
  • Корректно обрабатывается удаление файлов

Установка

Установка на компьютер стандартна

  • opm install precommit4onec или
  • распаковать в нужный каталог архив репозитория или
  • для Windows запустить installlocalhost.bat

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

Перед использованием необходима установка precommit-hook'а в репозиторий:

  • для выполнения установки в конкретный репозиторий необходимо выполнить команду precommit4onec install repo_name
  • для выполнения установки во все репозитории каталога необходимо выполнить команду precommit4onec install folder_reps -r
  • если каталог исходных файлов в репозитории отличается от стандартного "src" (например, когда исходные файлы в формате EDT), необходимо явно указать его с помощью дополнительного параметра -source-dir "configuration"

Для корректного отображения путей с кириллицей прекоммит установит настройку Git core.quotePath для локального репозитория.

После этого, при каждом коммите будет выполняться обработка файлов.

В комплекте присутствуют следующие сценарии обработки файлов:

  • ВставкаКопирайтов - добавляет текст копирайта в файлы модулей. См. подробнее
  • ДобавлениеПробеловПередКлючевымиСловами - добавляет отсутствующие пробелы перед ключевыми словами в файлах модулей. На данный момент обрабатывается только ключевое слово Экспорт.
  • ЗапретИспользованияПерейти - проверяет модуль на использование методов Перейти.
  • ИсправлениеНеКаноническогоНаписания - исправляет неканоничное написание ключевых слов в модулях.
  • КорректировкаXMLФорм - исправляет дубли индексов элементов в файлах описаний форм (могут образоваться при объединениях). Поддерживаются как файлы в формате выгрузки конфигуратора (Form.xml), так и в формате EDT (Form.form).
  • ОбработкаЮнитТестов - обновляет метод-загрузчик сценариев в общих модулях расширения с unit-тестами (по умолчанию отключен).
  • ОтключениеПолнотекстовогоПоиска - отключает полнотекстовый поиск в файлах описаний метаданных. См. подробнее
  • ОтключениеРазрешенияИзменятьФорму - снимает флаг РазрешеноИзменятьФорму в описаниях форм. См. подробнее
  • ПроверкаДублейПроцедурИФункций - проверяет уникальность названий процедур и функций в модулях.
  • ПроверкаКорректностиИнструкцийПрепроцессора - проверяет корректность написания инструкций препроцессора в модулях.
  • ПроверкаКорректностиОбластей - проверяет корректность "скобок" областей в модулях (парность и последовательность).
  • ПроверкаНецензурныхСлов - проверяет наличие нецензурных слов в модулях. См. подробнее
  • РазборОбычныхФормНаИсходники - раскладывает файлы обычных форм (Form.bin) на исходные файлы с помощью инструмента v8unpack.
  • РазборОтчетовОбработокРасширений - раскладывает средствами платформы файлы внешних отчетов, обработок и расширений на исходные файлы. См. подробнее
  • СинхронизацияОбъектовМетаданныхИФайлов - анализирует наличие файлов и объектов конфигурации. Поддерживается как файл в формате выгрузки конфигуратора (Configuration.xml), так и в формате EDT (Configuration.mdo).
  • СортировкаПравРолей - упорядочивает по имени объекты в файле описания прав роли.
  • СортировкаСостава - сортирует описания состава конфигурации и некоторых объектов метаданных. См. подробнее
  • УдалениеДублейМетаданных - удаляет дубли объектов метаданных в файле описания конфигурации (могут образоваться при объединениях). Поддерживается как файл в формате выгрузки конфигуратора (Configuration.xml), так и в формате EDT (Configuration.mdo)..
  • УдалениеЛишнихКонцевыхПробелов - удаляет лишние пробелы и табы в конце не пустых строк в файлах модулей.
  • УдалениеЛишнихПустыхСтрок - удаляет лишние пустые строки в модулях (лишними считаются 2 и более идущих подряд пустых строк).

При использовании таск-трекеров может возникнуть необходимость указывать номер задачи в каждом комментарии коммита. Специально для этой задачи реализована функциональность проверки комментария коммита на соответствие маске. См. подробнее

Изменение настроек

precommit4onec может читать настройки своей работы из специального конфигурационного файла.

Управление настройками происходит с использованием команды configure:

  • Печать настроек - precommit4onec configure -global
  • Сброс настроек на заводские - precommit4onec configure -global -reset
  • Интерактивное изменение настроек - precommit4onec configure -global -config.

Предоставляется возможность в репозитории иметь свои, отличные от глобальных, настройки. Для этого необходимо вместо флага -global в указанных выше командах передавать параметр -rep-path с указанием пути к каталогу репозитория.

Также можно настроить различное поведение для различных каталогов репозитория, для работы с подкаталогами (проектами) используется ключ -child-path. Настройки проектов полностью переопределяют базовые настройки. Например если в основной настройке указаны ОтключенныеСценарии, а для проекта configuration\ они не заполнены, то для каталога configuration\ будут выполнены все сценарии.

Конфигурирование дает возможности:

  • Изменить список сценариев обработки файлов
  • Активизировать алгоритм подключения сценариев из каталогов репозитория

Некоторые сценарии поддерживают возможность изменения своих настроек со значений по умолчанию на установленные в конфигурационном файле. На данный момент реализована возможность указывать необходимую версию платформы 1С:Предприятие в сценарии РазборОтчетОбработокРасширений.

Структура файла настроек

{
    "GLOBAL": {                           // необязательная секция
        "ВерсияПлатформы": "8.3.10.2309", // используемая версия платформы например для разбора на исходники
        "version": "2.0",                 // версия конфигурационного файла (необязательно)
        "ФорматEDT": true,                // признак использования исходных файлов в формате EDT
    },
    "Precommt4onecСценарии": {
        "ИспользоватьСценарииРепозитория": false,   // Признак, выполнения проверок из репозитория
        "КаталогЛокальныхСценариев": "",            // Относительный путь к каталогу локальных проверок
        "ГлобальныеСценарии": [...],                // Список проверок, которые будут выполнятся
        "ОтключенныеСценарии": [...],               // Список проверок, которые не будут выполнятся (имеет больший приоритет относительно ГлобальныеСценарии)
        "НастройкиСценариев": {                     // Настройки выполняемых проверок
            ...
        },
        "Проекты":{                 // Настройки проектов (подкаталогов репозитория). Настройки проектов полностью переопределяют настройки и имеют такую же структуру
            "configuration\\": {    // Имя проекта (подкаталога)
                "ИспользоватьСценарииРепозитория": false,
                "ГлобальныеСценарии": []
            }
        }
    }
}

Принудительное выполнение для группы файлов

Команда exec-rules предназначена для запуска выбранных сценариев в указанном репозитории. См. подробнее

Расширение функциональности

Для создания нового сценария обработки файлов необходимо воспользоваться шаблоном, находящимся в каталоге СценарииОбработки скрипта.

Установка сценария для всех репозиториев

Чтобы сценарий работал для всех репозиториев необходимо

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

Установка сценария для конкретного репозитория

Чтобы сценарий работал в конкретном репозитории необходимо

  • Решить, в каком каталоге в репозиториях будут хранится сценарии, например tools\СценарииОбработки
  • Создать каталог в репозитории и скопировать в него файл сценария
  • Вызвать команду конфигурирования, в которой включить использование сценариев из репозитория
  • Указать имя каталога

Если при выполнении precommit4onec не найдет файлов сценариев в указанном каталоге, либо не найдет каталог, он об этом сообщит в лог и продолжит работу без ошибок.

Ссылки