You've already forked precommit4onec
mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2026-06-19 21:44:57 +02:00
#ONECICD-414
Добавление скрипта для проверки директив компиляции
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией сценариев обработки файлов <ПроверкаКорректностиОбластей>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем Лог;
|
||||
|
||||
// ИмяСценария
|
||||
// Возвращает имя сценария обработки файлов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя текущего сценария обработки файлов
|
||||
//
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "ПроверкаКорректностиДирективКомпиляции";
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
// Параметры:
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария());
|
||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
ПроверитьНаКорректностьДиректив(АнализируемыйФайл.ПолноеИмя);
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Процедура ПроверитьНаКорректностьДиректив(ПутьКФайлуМодуля)
|
||||
|
||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ПутьКФайлуМодуля);
|
||||
|
||||
ТекстРазбора = Новый ТекстовыйДокумент;
|
||||
ТекстРазбора.УстановитьТекст(СодержимоеФайла);
|
||||
ВсегоСтрок = ТекстРазбора.КоличествоСтрок();
|
||||
|
||||
Для Ит = 1 По ВсегоСтрок Цикл
|
||||
|
||||
СтрокаМодуля = СокрЛ(ТекстРазбора.ПолучитьСтроку(Ит));
|
||||
|
||||
Если Не ПустаяСтрока(СтрокаМодуля) Тогда
|
||||
|
||||
Если СтрНачинаетсяС(СтрокаМодуля, "#") И Не СтрНачинаетсяС(СтрокаМодуля, "#Область")
|
||||
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "&") Тогда
|
||||
|
||||
СтрокаМодуля = Прав(СтрокаМодуля, СтрДлина(СтрокаМодуля)-1);
|
||||
|
||||
МассивПодстрок = СтрРазделить(СтрокаМодуля, " ", Ложь);
|
||||
|
||||
Для Каждого Директива Из МассивПодстрок Цикл
|
||||
|
||||
НайтиВСпискеКлючевыхСлов(Директива);
|
||||
|
||||
ТекстОшибки = СтрШаблон("В файле '%1' ошибки в написании директивы в строке '%2': '%3'",
|
||||
ПутьКФайлуМодуля, Ит, СтрокаМодуля);
|
||||
Лог.Ошибка(ТекстОшибки);
|
||||
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НайтиВСпискеКлючевыхСлов(Директива)
|
||||
|
||||
МассивКлючевыхСлов = Новый Массив();
|
||||
|
||||
МассивКлючевыхСлов.Добавить("Если");
|
||||
МассивКлючевыхСлов.Добавить("Тогда");
|
||||
МассивКлючевыхСлов.Добавить("ИначеЕсли");
|
||||
МассивКлючевыхСлов.Добавить("Иначе");
|
||||
МассивКлючевыхСлов.Добавить("КонецЕсли");
|
||||
МассивКлючевыхСлов.Добавить("НаКлиенте");
|
||||
МассивКлючевыхСлов.Добавить("НаСервере");
|
||||
МассивКлючевыхСлов.Добавить("МобильноеПриложениеКлиент");
|
||||
МассивКлючевыхСлов.Добавить("МобильноеПриложениеСервер");
|
||||
МассивКлючевыхСлов.Добавить("ТолстыйКлиентОбычноеПриложение");
|
||||
МассивКлючевыхСлов.Добавить("ТолстыйКлиентУправляемоеПриложение");
|
||||
МассивКлючевыхСлов.Добавить("ВнешнееСоединение");
|
||||
МассивКлючевыхСлов.Добавить("ТонкийКлиент");
|
||||
МассивКлючевыхСлов.Добавить("ВебКлиент");
|
||||
МассивКлючевыхСлов.Добавить("КонецОбласти");
|
||||
МассивКлючевыхСлов.Добавить("И");
|
||||
МассивКлючевыхСлов.Добавить("ИЛИ");
|
||||
МассивКлючевыхСлов.Добавить("НЕ");
|
||||
|
||||
Если МассивКлючевыхСлов.Найти(Директива) Тогда
|
||||
Возврат Истина;
|
||||
Иначе
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Reference in New Issue
Block a user