Skip to content

Возможность проверять наличие упоминания задачи по паттерну РВ #72

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 1, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions src/Классы/checkComments.os
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
Перем КомандыПлагина;
Перем ВызватьОшибку;
Перем ПрефиксЗадачи;
Перем ПаттернЗадачи;
Перем МинимальноеКоличествоЗадач;
Перем МаксимальноеКоличествоЗадач;
Перем ВыводитьПредставление;
Expand Down Expand Up @@ -85,6 +86,10 @@
КлассРеализации.Опция("task-prefix", "", "[*check-comments] Префикс задачи.")
.ВОкружении("GITSYNC_TASK_PREFIX")
.Обязательный(Ложь);

КлассРеализации.Опция("task-pattern", "", "[*check-comments] Паттерн задачи.")
.ВОкружении("GITSYNC_TASK_PATTERN")
.Обязательный(Ложь);

КлассРеализации.Опция("min-task-count", 0, СтрШаблон("[*check-comments] Минимальное количество упоминаний задач"))
.ТЧисло()
Expand Down Expand Up @@ -114,6 +119,9 @@

ПрефиксЗадачи = ПараметрыКоманды.Параметр("task-prefix", "");
Лог.Отладка("Получаю параметр <task-prefix> значение <%1>", ПрефиксЗадачи);

ПаттернЗадачи = ПараметрыКоманды.Параметр("task-pattern", "");
Лог.Отладка("Получаю параметр <task-pattern> значение <%1>", ПаттернЗадачи);

МинимальноеКоличествоЗадач = ПараметрыКоманды.Параметр("min-task-count", 0);
Лог.Отладка("Получаю параметр <min-task-count> значение <%1>", МинимальноеКоличествоЗадач);
Expand Down Expand Up @@ -159,18 +167,25 @@

Процедура ПроверитьКомментарийНаНаличиеУпоминанийЗадач(СтрокаВерсии, СледующаяВерсия)

Если ПустаяСтрока(ПрефиксЗадачи) Или ПустаяСтрока(СтрокаВерсии.Комментарий) Тогда
Если (ПустаяСтрока(ПрефиксЗадачи) и ПустаяСтрока(ПаттернЗадачи)) Или ПустаяСтрока(СтрокаВерсии.Комментарий) Тогда
Возврат;
КонецЕсли;

РВ = Новый РегулярноеВыражение(СтрШаблон("%1-%2", ПрефиксЗадачи, "\d"));
Если НЕ ПустаяСтрока(ПаттернЗадачи) Тогда
РВ = Новый РегулярноеВыражение(ПаттернЗадачи);
ИспользуемыйШаблон = "соответствующих паттерну """ + ПаттернЗадачи + """";
Иначе
РВ = Новый РегулярноеВыражение(СтрШаблон("%1-%2", ПрефиксЗадачи, "\d"));
ИспользуемыйШаблон = ПрефиксЗадачи;
КонецЕсли;

Совпадения = РВ.НайтиСовпадения(СтрокаВерсии.Комментарий);
КоличествоВхождений = Совпадения.количество();

Если КоличествоВхождений < МинимальноеКоличествоЗадач Тогда
СтрокаОшибки = СтрШаблон("Версия <%1> от автора <%2>: количество упоминаний задач %3 (%4) меньше требуемого (%5)",
СледующаяВерсия,
Автор(СтрокаВерсии), ПрефиксЗадачи, КоличествоВхождений, МинимальноеКоличествоЗадач);
Автор(СтрокаВерсии), ИспользуемыйШаблон, КоличествоВхождений, МинимальноеКоличествоЗадач);

Лог.КритичнаяОшибка(СтрокаОшибки);

Expand All @@ -185,7 +200,7 @@
Если КоличествоВхождений > МаксимальноеКоличествоЗадач Тогда
СтрокаОшибки = СтрШаблон("Версия <%1> от автора <%2>: количество упоминаний задач %3 (%4) больше требуемого (%5)",
СледующаяВерсия,
Автор(СтрокаВерсии), ПрефиксЗадачи, КоличествоВхождений, МаксимальноеКоличествоЗадач);
Автор(СтрокаВерсии), ИспользуемыйШаблон, КоличествоВхождений, МаксимальноеКоличествоЗадач);

Лог.КритичнаяОшибка(СтрокаОшибки);

Expand Down