diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/checkComments.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/checkComments.os" index a1e7ba7..fe5acb8 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/checkComments.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/checkComments.os" @@ -5,6 +5,7 @@ Перем КомандыПлагина; Перем ВызватьОшибку; Перем ПрефиксЗадачи; +Перем ПаттернЗадачи; Перем МинимальноеКоличествоЗадач; Перем МаксимальноеКоличествоЗадач; Перем ВыводитьПредставление; @@ -85,6 +86,10 @@ КлассРеализации.Опция("task-prefix", "", "[*check-comments] Префикс задачи.") .ВОкружении("GITSYNC_TASK_PREFIX") .Обязательный(Ложь); + + КлассРеализации.Опция("task-pattern", "", "[*check-comments] Паттерн задачи.") + .ВОкружении("GITSYNC_TASK_PATTERN") + .Обязательный(Ложь); КлассРеализации.Опция("min-task-count", 0, СтрШаблон("[*check-comments] Минимальное количество упоминаний задач")) .ТЧисло() @@ -114,6 +119,9 @@ ПрефиксЗадачи = ПараметрыКоманды.Параметр("task-prefix", ""); Лог.Отладка("Получаю параметр значение <%1>", ПрефиксЗадачи); + + ПаттернЗадачи = ПараметрыКоманды.Параметр("task-pattern", ""); + Лог.Отладка("Получаю параметр значение <%1>", ПаттернЗадачи); МинимальноеКоличествоЗадач = ПараметрыКоманды.Параметр("min-task-count", 0); Лог.Отладка("Получаю параметр значение <%1>", МинимальноеКоличествоЗадач); @@ -159,18 +167,25 @@ Процедура ПроверитьКомментарийНаНаличиеУпоминанийЗадач(СтрокаВерсии, СледующаяВерсия) - Если ПустаяСтрока(ПрефиксЗадачи) Или ПустаяСтрока(СтрокаВерсии.Комментарий) Тогда + Если (ПустаяСтрока(ПрефиксЗадачи) и ПустаяСтрока(ПаттернЗадачи)) Или ПустаяСтрока(СтрокаВерсии.Комментарий) Тогда Возврат; КонецЕсли; - РВ = Новый РегулярноеВыражение(СтрШаблон("%1-%2", ПрефиксЗадачи, "\d")); + Если НЕ ПустаяСтрока(ПаттернЗадачи) Тогда + РВ = Новый РегулярноеВыражение(ПаттернЗадачи); + ИспользуемыйШаблон = "соответствующих паттерну """ + ПаттернЗадачи + """"; + Иначе + РВ = Новый РегулярноеВыражение(СтрШаблон("%1-%2", ПрефиксЗадачи, "\d")); + ИспользуемыйШаблон = ПрефиксЗадачи; + КонецЕсли; + Совпадения = РВ.НайтиСовпадения(СтрокаВерсии.Комментарий); КоличествоВхождений = Совпадения.количество(); Если КоличествоВхождений < МинимальноеКоличествоЗадач Тогда СтрокаОшибки = СтрШаблон("Версия <%1> от автора <%2>: количество упоминаний задач %3 (%4) меньше требуемого (%5)", СледующаяВерсия, - Автор(СтрокаВерсии), ПрефиксЗадачи, КоличествоВхождений, МинимальноеКоличествоЗадач); + Автор(СтрокаВерсии), ИспользуемыйШаблон, КоличествоВхождений, МинимальноеКоличествоЗадач); Лог.КритичнаяОшибка(СтрокаОшибки); @@ -185,7 +200,7 @@ Если КоличествоВхождений > МаксимальноеКоличествоЗадач Тогда СтрокаОшибки = СтрШаблон("Версия <%1> от автора <%2>: количество упоминаний задач %3 (%4) больше требуемого (%5)", СледующаяВерсия, - Автор(СтрокаВерсии), ПрефиксЗадачи, КоличествоВхождений, МаксимальноеКоличествоЗадач); + Автор(СтрокаВерсии), ИспользуемыйШаблон, КоличествоВхождений, МаксимальноеКоличествоЗадач); Лог.КритичнаяОшибка(СтрокаОшибки);