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

#ARCH-1836

- добавлено новое правило - обнаружение использования Перейти
This commit is contained in:
Maxmov Valery 2018-07-12 10:08:24 +03:00
parent c6f3bca849
commit e6853bb12f
5 changed files with 111 additions and 28 deletions

View File

@ -0,0 +1,27 @@
///////////////////////////////////////////////////////////////////////////////
//
// Служебный модуль с набором методов для определения типа файла
//
// (с) BIA Technologies, LLC
//
///////////////////////////////////////////////////////////////////////////////
// ЭтоФайлИсходников
// Возвращает истину, если файл является файлом исходных кодов
// Параметры:
// Файл - Строка - Полный путь к файлу
//
// Возвращаемое значение:
// Булево - Признак
//
Функция ЭтоФайлИсходников(Файл) Экспорт
Если ПустаяСтрока(Файл.Расширение) Тогда
Возврат Ложь;
КонецЕсли;
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
КонецФункции

View File

@ -36,7 +36,7 @@
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
Лог = ДополнительныеПараметры.Лог;
Если АнализируемыйФайл.Существует() И ЭтоФайлИсходников(АнализируемыйФайл) Тогда
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
@ -54,18 +54,6 @@
КонецФункции // ОбработатьФайл()
Функция ЭтоФайлИсходников(Файл)
Если ПустаяСтрока(Файл.Расширение) Тогда
Возврат Ложь;
КонецЕсли;
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
КонецФункции
Функция ВставитьНужныеПробелы(Знач ИмяФайла)
Текст = Новый ЧтениеТекста();
@ -91,4 +79,4 @@
Возврат Истина;
КонецФункции
КонецФункции

View File

@ -0,0 +1,79 @@
///////////////////////////////////////////////////////////////////////////////
//
// Служебный модуль с реализацией сценариев обработки файлов <ЗапретИспользованияПерейти>
//
///////////////////////////////////////////////////////////////////////////////
Перем Лог;
// ИмяСценария
// Возвращает имя сценария обработки файлов
//
// Возвращаемое значение:
// Строка - Имя текущего сценария обработки файлов
//
Функция ИмяСценария() Экспорт
Возврат "ЗапретИспользованияПерейти";
КонецФункции // ИмяСценария()
// ОбработатьФайл
// Выполняет обработку файла
//
// Параметры:
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
// * Лог - Объект - Текущий лог
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
// * КаталогРепозитория - Строка - Адрес каталога репозитория
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
// и которые необходимо дообработать
//
// Возвращаемое значение:
// Булево - Признак выполненной обработки файла
//
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
Лог = ДополнительныеПараметры.Лог;
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
ПроверитьНаОтсутствиеПерейти(АнализируемыйФайл.ПолноеИмя);
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции // ОбработатьФайл()
Процедура ПроверитьНаОтсутствиеПерейти(ПутьКФайлуМодуля)
Текст = Новый ЧтениеТекста();
Текст.Открыть(ПутьКФайлуМодуля, "utf-8");
ТекстМодуля = Текст.Прочитать();
Текст.Закрыть();
ТекстОшибки = "";
ШаблонПоиска = Новый РегулярноеВыражение("[\s;]+?Перейти\s+?~[a-zA-ZА-Яа-я0-9_]+");
ШаблонПоиска.Многострочный = Истина;
ШаблонПоиска.ИгнорироватьРегистр = Истина;
Если НЕ ПустаяСтрока(ТекстМодуля) Тогда
Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
Если Совпадения.Количество() Тогда
ТекстОшибки = СтрШаблон("В файле '%1' обнаружено использование Перейти (%2)", ПутьКФайлуМодуля, Совпадения.Количество());
Лог.Ошибка(ТекстОшибки);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

View File

@ -35,7 +35,7 @@
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
Лог = ДополнительныеПараметры.Лог;
Если АнализируемыйФайл.Существует() И ЭтоФайлИсходников(АнализируемыйФайл) Тогда
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
@ -53,18 +53,6 @@
КонецФункции // ОбработатьФайл()
Функция ЭтоФайлИсходников(Файл)
Если ПустаяСтрока(Файл.Расширение) Тогда
Возврат Ложь;
КонецЕсли;
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
КонецФункции
Функция ИсправитьКонцевыеПробелы(Знач ИмяФайла)
Текст = Новый ЧтениеТекста();
@ -90,4 +78,4 @@
Возврат Истина;
КонецФункции
КонецФункции

View File

@ -4,6 +4,7 @@
"КаталогЛокальныхСценариев": "",
"ГлобальныеСценарии": [
"ДобавлениеПробеловПередКлючевымиСловами.os",
"ЗапретИспользованияПерейти.os",
"КорректировкаXMLФорм.os",
"РазборОбычныхФормНаИсходники.os",
"РазборОтчетовОбработокРасширений.os",