You've already forked precommit4onec
mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-07-15 01:24:30 +02:00
#ONECICD-20
Доработал сценарий, добавил файлы для теста, и набросок теста
This commit is contained in:
7
features/ПроверкаСценариевОбработки.feature
Normal file
7
features/ПроверкаСценариевОбработки.feature
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# language: ru
|
||||||
|
|
||||||
|
Функциональность: Выполнение сценариев обработки прекоммита
|
||||||
|
|
||||||
|
Как разработчик
|
||||||
|
Я хочу иметь возможность выполнять сценарии обработки прекоммита
|
||||||
|
Чтобы сценарии анализировали файлы коммита
|
@ -3,6 +3,7 @@
|
|||||||
// Служебный модуль с реализацией сценариев обработки файлов <ИмяСценария>
|
// Служебный модуль с реализацией сценариев обработки файлов <ИмяСценария>
|
||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
Перем Лог;
|
||||||
|
|
||||||
// ИмяСценария
|
// ИмяСценария
|
||||||
// Возвращает имя сценария обработки файлов
|
// Возвращает имя сценария обработки файлов
|
||||||
@ -32,22 +33,22 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Булево - Признак выполненной обработки файла
|
// Булево - Признак выполненной обработки файла
|
||||||
//
|
//
|
||||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
//Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||||
|
//
|
||||||
|
// Лог = ДополнительныеПараметры.Лог;
|
||||||
|
// НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||||
|
// Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||||
|
|
||||||
|
// Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||||
|
|
||||||
|
// ПроверитьНаДублированиеМетодов(АнализируемыйФайл.ПолноеИмя);
|
||||||
|
// Возврат Истина;
|
||||||
|
|
||||||
|
// КонецЕсли;
|
||||||
|
|
||||||
Лог = ДополнительныеПараметры.Лог;
|
// Возврат Ложь;
|
||||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
|
||||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
|
||||||
|
|
||||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
|
||||||
|
|
||||||
ПроверитьНаДублированиеМетодов(АнализируемыйФайл.ПолноеИмя);
|
|
||||||
Возврат Истина;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат Ложь;
|
|
||||||
|
|
||||||
КонецФункции // ОбработатьФайл()
|
//КонецФункции // ОбработатьФайл()
|
||||||
|
|
||||||
// ОбработатьФайл
|
// ОбработатьФайл
|
||||||
// Выполняет поиск дублей имен процедур и функций файла
|
// Выполняет поиск дублей имен процедур и функций файла
|
||||||
@ -65,15 +66,50 @@
|
|||||||
|
|
||||||
ТекстОшибки = "";
|
ТекстОшибки = "";
|
||||||
|
|
||||||
ШаблонПоиска = Новый РегулярноеВыражение("^(?:Процедура|Функция|procedure|function)\s+?([а-яА-ЯёЁ0-9_\w]+?)\s*?\(\)");
|
ШаблонПоиска = Новый РегулярноеВыражение("^\s*(?:Процедура|Функция|procedure|function)\s+?([а-яА-ЯёЁ0-9_\w]+?)\s*?\(\)");
|
||||||
ШаблонПоиска.Многострочный = Истина;
|
ШаблонПоиска.Многострочный = Истина;
|
||||||
ШаблонПоиска.ИгнорироватьРегистр = Истина;
|
ШаблонПоиска.ИгнорироватьРегистр = Истина;
|
||||||
|
|
||||||
Если НЕ ПустаяСтрока(ТекстМодуля) Тогда
|
Если НЕ ПустаяСтрока(ТекстМодуля) Тогда
|
||||||
|
|
||||||
Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
|
Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
|
||||||
|
|
||||||
|
Если Совпадения.Количество() Тогда
|
||||||
|
|
||||||
|
ТЗПроцедуры = Новый ТаблицаЗначений;
|
||||||
|
ТЗПроцедуры.Колонки.Добавить("Процедура");
|
||||||
|
ТЗПроцедуры.Колонки.Добавить("Количество");
|
||||||
|
|
||||||
|
Для Каждого Совпадение Из Совпадения Цикл
|
||||||
|
|
||||||
|
СтрокаТЗ = ТЗПроцедуры.Добавить();
|
||||||
|
СтрокаТЗ.Процедура = НРЕГ(Совпадение.Группы[1].Значение);
|
||||||
|
СтрокаТЗ.Количество = 1;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КоличествоПроцедур = ТЗПроцедуры.Количество();
|
||||||
|
|
||||||
|
ТЗПроцедуры.Свернуть("Процедура", "Количество");
|
||||||
|
КоличествоУникальных = ТЗПроцедуры.Количество();
|
||||||
|
|
||||||
|
Если КоличествоПроцедур <> КоличествоУникальных Тогда
|
||||||
|
|
||||||
|
ТекстОшибки = СтрШаблон("В файле '%1' обнаружены неуникальные имена методов " + Символы.ПС, ПутьКФайлуМодуля);
|
||||||
|
|
||||||
|
Для Каждого СтрокаТЗ Из ТЗПроцедуры Цикл
|
||||||
|
ТекстОшибки = ТекстОшибки + ?(СтрокаТЗ.Количество > 1, СтрокаТЗ.Процедура + Символы.ПС, "");
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
//Лог.Ошибка(ТекстОшибки);
|
||||||
|
ВызватьИсключение ТекстОшибки;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
ПроверитьНаДублированиеМетодов("C:\reps\precommit1C-fork-bia\src\СценарииОбработки\Модуль.bsl");
|
||||||
|
34
tests/fixtures/ПроверкаДублейПроцедурНегативныйТест.bsl
vendored
Normal file
34
tests/fixtures/ПроверкаДублейПроцедурНегативныйТест.bsl
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
Процедура Проц() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
//ПРоцедура Проц()
|
||||||
|
Функция Проц() Экспорт
|
||||||
|
КонецПроцедуры // Процедура проц()
|
||||||
|
|
||||||
|
Процедура УпроститьLevel() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура level_Forma1t() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура Проц1_() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура _Проц12() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
пРоцедура проц2 (парам1)
|
||||||
|
КонецПроцедуры;
|
||||||
|
|
||||||
|
Функция функё1() Экспорт
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ПРоц3()
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция Функ1()
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция _Функ1()
|
||||||
|
КонецФункции
|
||||||
|
|
30
tests/fixtures/ПроверкаДублейПроцедурПоложительныйТест.bsl
vendored
Normal file
30
tests/fixtures/ПроверкаДублейПроцедурПоложительныйТест.bsl
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
Процедура Проц() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура УпроститьLevel() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура level_Forma1t() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура Проц1_() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура _Проц12() Экспорт
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
пРоцедура проц2 (парам1)
|
||||||
|
КонецПроцедуры;
|
||||||
|
|
||||||
|
Функция функё1() Экспорт
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ПРоц3()
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Функция Функ1()
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция _Функ1()
|
||||||
|
КонецФункции
|
||||||
|
|
Reference in New Issue
Block a user