1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2024-11-24 08:32:25 +02:00
precommit4onec/README.md

133 lines
16 KiB
Markdown
Raw Normal View History

2017-09-08 17:38:29 +02:00
# Утилита для автоматической обработки исходных файлов конфигурации, внешних отчетов и обработок для платформы 1С:Предприятие при помещении в репозиторий git
2017-09-08 17:38:29 +02:00
Данное решение базируется на идеях проекта [precommit1c](https://github.com/xDrivenDevelopment/precommit1c/releases), но является самостоятельным решением.
## Почему не precommit1c
Указанным продуктом пользовались долгое время, он очень хорош, но потребность в развитии и невозможность реализации некоторых сценариев работы в публичной версии сподвигли к реализации нового решения.
### Особенности данного решения
2017-09-08 17:38:29 +02:00
- Возможность расширения функциональности под свои нужды без потери совместимости с публичной версией
- Централизованная установка и обновление скриптов без необходимости утяжелять репозиторий проекта
2017-09-08 18:18:47 +02:00
- Максимально использует возможности платформы 1С:Предприятие последних версий (тестировалось на 8.3.10+, возможно на версиях 8.3.8-9 тоже будет работать)
2017-09-08 17:38:29 +02:00
- Возможность хранить внешние отчеты, обработки и расширения с одинаковыми именами
- Корректно обрабатывается удаление файлов
## Установка
2017-09-08 17:38:29 +02:00
Установка на компьютер стандартна
- `opm install precommit4onec` или
- распаковать в нужный каталог архив репозитория или
- для Windows запустить [installlocalhost.bat](/installlocalhost.bat)
2017-09-08 17:38:29 +02:00
## Использование
2017-09-08 18:18:47 +02:00
Перед использованием необходима установка precommit-hook'а в репозиторий:
2017-09-08 17:38:29 +02:00
2017-09-08 18:18:47 +02:00
- для выполнения установки в конкретный репозиторий необходимо выполнить команду `precommit4onec install repo_name`
- для выполнения установки во все репозитории каталога необходимо выполнить команду `precommit4onec install folder_reps -r`
- если каталог исходных файлов в репозитории отличается от стандартного "src" (например, когда исходные файлы в формате EDT), необходимо явно указать его с помощью дополнительного параметра `-source-dir "configuration"`
2017-09-08 17:38:29 +02:00
2017-09-08 18:18:47 +02:00
После этого, при каждом коммите будет выполняться обработка файлов.
2017-09-08 17:38:29 +02:00
2017-09-08 18:18:47 +02:00
В комплекте присутствуют следующие сценарии обработки файлов:
2017-09-08 17:38:29 +02:00
- `ДобавлениеПробеловПередКлючевымиСловами` - добавляет отсутствующие пробелы перед ключевыми словами в файлах модулей. На данный момент обрабатывается только ключевое слово `Экспорт`.
- `ДобавлениеТестовВРасширение` - добавляет отсутствующие сценарии в расширение с unit-тестами для всех экспортных методов (обрабатываются общие модули, модули менеджеров, модули объектов, модули наборов записей). Поддерживаются только исходные файлы в формате EDT.
- `ЗапретИспользованияПерейти` - проверяет модуль на использование методов `Перейти`.
- `ИсправлениеНеКаноническогоНаписания` - исправляет неканоничное написание ключевых слов в модулях.
- `КорректировкаXMLФорм` - исправляет дубли индексов элементов в файлах описаний форм (могут образоваться при объединениях). Поддерживаются как файлы в формате выгрузки конфигуратора (`Form.xml`), так и в формате EDT (`Form.form`).
- `ОбработкаЮнитТестов` - обновляет метод-загрузчик сценариев в общих модулях расширения с unit-тестами (по умолчанию отключен).
- `ОтключениеПолнотекстовогоПоиска` - отключает полнотекстовый поиск в файлах описаний метаданных. Имеет настройку для исключения файлов из обработки. Для исключения необходимо указать относительный путь в репозитории до файла описания объекта метаданных. Можно выключать из обработки отдельные реквизиты, для этого надо задать массив реквизитов в конфигурационном файле.
- `ПроверкаДублейПроцедурИФункций` - проверяет уникальность названий процедур и функций в модулях.
- `ПроверкаКорректностиДирективКомпиляции` - проверяет корректность написания директив компиляции в модулях.
- `ПроверкаКорректностиОбластей` - проверяет корректность "скобок" областей в модулях (парность и последовательность).
- `ПроверкаНецензурныхСлов` - проверяет наличие нецензурных слов в модулях. Файл-словарь указывается в настройках. Пример файла [НецензурныеСлова.txt](/НецензурныеСлова.txt).
- `РазборОбычныхФормНаИсходники` - раскладывает файлы обычных форм (`Form.bin`) на исходные файлы с помощью инструмента `v8unpack`.
- `РазборОтчетОбработокРасширений` - раскладывает средствами платформы файлы внешних отчетов, обработок и расширений на исходные файлы и помещает в каталог исходных файлов репозитория в подкаталоги, соответствующие расширениям этих файлов. Например, внешний отчет `ВнешнийОтчет1.erf` будет разложен в каталог `src\erf\ВнешнийОтчет1`.
- `СинхронизацияОбъектовМетаданныхИФайлов` - анализирует наличие файлов и объектов конфигурации. Поддерживается только файл описания конфигурации в формате выгрузки конфигуратора (`Configuration.xml`).
- `СортировкаДереваМетаданных` - упорядочивает объекты метаданных верхнего уровня по алфавиту в файле описания конфигурации (кроме подсистем). Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`).
- `УдалениеДублейМетаданных` - удаляет дубли объектов метаданных в файле описания конфигурации (могут образоваться при объединениях). Поддерживается как файл в формате выгрузки конфигуратора (`Configuration.xml`), так и в формате EDT (`Configuration.mdo`)..
- `УдалениеЛишнихКонцевыхПробелов` - удаляет лишние пробелы и табы в конце не пустых строк в файлах модулей.
- `УдалениеЛишнихПустыхСтрок` - удаляет лишние пустые строки в модулях (лишними считаются 2 и более идущих подряд пустых строк).
2017-09-15 18:15:56 +02:00
## Изменение настроек
precommit4onec может читать настройки своей работы из специального конфигурационного файла.
Управление настройками происходит с использованием команды `configure`:
- Печать настроек - `precommit4onec configure -global`
- Сброс настроек на заводские - `precommit4onec configure -global -reset`
- Интерактивное изменение настроек - `precommit4onec configure -global -config`.
Предоставляется возможность в репозитории иметь свои, отличные от глобальных, настройки. Для этого необходимо вместо флага `-global` в указанных выше командах передавать параметр `-rep-path` с указанием пути к каталогу репозитория.
2020-02-18 11:50:22 +02:00
Также можно настроить различное поведение для различных каталогов репозитория, для работы с подкаталогами (проектами) используется ключ `-child-path`.
Настройки проектов полностью переопределяют базовые настройки. Например если в основной настройке указаны `ОтключенныеСценарии`,
2020-02-18 11:50:22 +02:00
а для проекта `configuration\` они не заполнены, то для каталога `configuration` будут выполнены все сценарии.
2017-09-15 18:15:56 +02:00
Конфигурирование дает возможности:
- Изменить список сценариев обработки файлов
- Активизировать алгоритм подключения сценариев из каталогов репозитория
2017-09-15 18:15:56 +02:00
2018-08-10 09:13:47 +02:00
Некоторые сценарии поддерживают возможность изменения своих настроек со значений по умолчанию на установленные в конфигурационном файле. На данный момент реализована возможность указывать необходимую версию платформы 1С:Предприятие в сценарии `РазборОтчетОбработокРасширений`.
2020-02-18 11:50:22 +02:00
### Структура файла настроек
```JSON
{
2020-10-05 07:19:59 +02:00
"GLOBAL": { // необязательная секция
"ВерсияПлатформы": "8.3.10.2309", // используемая версия платформы например для разбора на исходники
"version": "2.0", // версия конфигурационного файла (необязательно)
"ФорматEDT": true, // признак использования исходных файлов в формате EDT
2020-10-05 07:19:59 +02:00
},
2020-02-18 11:50:22 +02:00
"Precommt4onecСценарии": {
2020-10-05 07:19:59 +02:00
"ИспользоватьСценарииРепозитория": false, // Признак, выполнения проверок из репозитория
"КаталогЛокальныхСценариев": "", // Относительный путь к каталогу локальных проверок
"ГлобальныеСценарии": [...], // Список проверок, которые будут выполнятся
"ОтключенныеСценарии": [...], // Список проверок, которые не будут выполнятся (имеет больший приоритет относительно ГлобальныеСценарии)
"НастройкиСценариев": { // Настройки выполняемых проверок
2020-02-18 11:50:22 +02:00
...
},
2020-10-05 07:19:59 +02:00
"Проекты":{ // Настройки проектов (подкаталогов репозитория). Настройки проектов полностью переопределяют настройки и имеют такую же структуру
"configuration\\": { // Имя проекта (подкаталога)
2020-02-18 11:50:22 +02:00
"ИспользоватьСценарииРепозитория": false,
"ГлобальныеСценарии": []
}
}
}
}
```
2020-02-18 11:50:22 +02:00
2017-09-08 17:38:29 +02:00
## Расширение функциональности
Для создания нового сценария обработки файлов необходимо воспользоваться шаблоном, находящимся в каталоге `СценарииОбработки` скрипта.
2017-09-15 18:15:56 +02:00
### Установка сценария для всех репозиториев
Чтобы сценарий работал для всех репозиториев необходимо
- сохранить файл сценария в каталог `СценарииОбработки`
- выполнить команду сброса настроек либо интерактивного изменения, где указать сценарий в списке загружаемых
### Установка сценария для конкретного репозитория
Чтобы сценарий работал в конкретном репозитории необходимо
- Решить, в каком каталоге в репозиториях будут хранится сценарии, например `tools\СценарииОбработки`
- Создать каталог в репозитории и скопировать в него файл сценария
- Вызвать команду конфигурирования, в которой включить использование сценариев из репозитория
- Указать имя каталога
Если при выполнении precommit4onec не найдет файлов сценариев в указанном каталоге, либо не найдет каталог, он об этом сообщит в лог и продолжит работу без ошибок.
2017-09-08 17:38:29 +02:00
## Ссылки
- [Шаблон скрипта](https://github.com/oscript-library/oscript-app-template)
- [precommit1c](https://github.com/xDrivenDevelopment/precommit1c/releases)
2017-09-08 17:38:29 +02:00
- [Библиотека os-скриптов](https://github.com/oscript-library)