|
5 | 5 | Перем _Лог; |
6 | 6 | Перем _РезультатПроверки; |
7 | 7 | Перем _ФайлДжсон; |
8 | | -Перем _КаталогИсходников; |
9 | 8 | Перем _ВыгружатьОшибкиОбъектов; |
10 | 9 | Перем _ИспользоватьОтносительныеПути; |
11 | 10 |
|
12 | | -Перем ГенераторПутей; |
| 11 | +Перем КаталогИсходниковПоПроекту; |
| 12 | +Перем ГенераторПутейПоПроекту; |
13 | 13 |
|
14 | 14 | Процедура ОписаниеКоманды(Команда) Экспорт |
15 | 15 |
|
|
21 | 21 | .ТСтрока() |
22 | 22 | .ВОкружении("EDT_VALIDATION_JSON"); |
23 | 23 |
|
24 | | - Команда.Аргумент("SRC", "", "Путь к каталогу с исходниками. Например ./src") |
| 24 | + Команда.Аргумент("SRC", "", "Путь к каталогам с исходниками. Можно указать несколько, если результат проверки содержит несколько проектов. |
| 25 | + | Пример для одного проекта: `project/src`. |
| 26 | + | Пример для несколькоих проектов `project1/src, project2/src`") |
25 | 27 | .ТСтрока() |
26 | 28 | .ВОкружении("SRC"); |
27 | 29 |
|
28 | 30 | Команда.Опция("e ObjectErrors", Ложь, "Ошибки объектов назначать на первую строку модуля формы/объекта"); |
29 | 31 | Команда.Опция("r UseRelativePaths", Ложь, "В файл результата записывать относительные пути"); |
| 32 | + |
| 33 | + Команда.Опция("d debug", Ложь, "Режим отладки") |
| 34 | + .ТБулево(); |
30 | 35 |
|
31 | 36 | КонецПроцедуры |
32 | 37 |
|
|
48 | 53 |
|
49 | 54 | Процедура ИнициализацияПараметров(Знач Команда) |
50 | 55 |
|
| 56 | + Если Команда.ЗначениеОпции("debug") Тогда |
| 57 | + _лог.УстановитьУровень(УровниЛога.Отладка); |
| 58 | + КонецЕсли; |
| 59 | + |
51 | 60 | результатПроверки = Команда.ЗначениеАргумента("EDT_VALIDATION_RESULT"); |
52 | 61 | _лог.Отладка("EDT_VALIDATION_RESULT = " + результатПроверки); |
| 62 | + |
53 | 63 | путьКРезультату = Команда.ЗначениеАргумента("EDT_VALIDATION_JSON"); |
54 | 64 | _лог.Отладка("EDT_VALIDATION_JSON = " + путьКРезультату); |
| 65 | + |
55 | 66 | путьККаталогуИсходников = Команда.ЗначениеАргумента("SRC"); |
56 | 67 | _лог.Отладка("SRC = " + путьККаталогуИсходников); |
57 | 68 |
|
|
65 | 76 |
|
66 | 77 | КонецЕсли; |
67 | 78 |
|
68 | | - _КаталогИсходников = ОбщегоНазначения.АбсолютныйПуть(путьККаталогуИсходников); |
69 | | - каталогИсходников = Новый Файл(_КаталогИсходников); |
70 | | - _лог.Отладка("Каталог исходников = " + _КаталогИсходников); |
71 | | - |
72 | | - Если Не каталогИсходников.Существует() |
73 | | - Или Не каталогИсходников.ЭтоКаталог() Тогда |
74 | | - |
75 | | - _лог.Ошибка(СтрШаблон("Каталог исходников <%1> не существует.", путьККаталогуИсходников)); |
76 | | - ЗавершитьРаботу(1); |
77 | | - |
78 | | - КонецЕсли; |
79 | | - |
80 | 79 | _ФайлДжсон = ОбщегоНазначения.АбсолютныйПуть(путьКРезультату); |
81 | 80 | _лог.Отладка("Файл результат = " + _ФайлДжсон); |
82 | 81 |
|
83 | 82 | _ВыгружатьОшибкиОбъектов = Команда.ЗначениеОпции("ObjectErrors"); |
84 | 83 | _ИспользоватьОтносительныеПути = Команда.ЗначениеОпции("UseRelativePaths"); |
| 84 | + |
| 85 | + ИнициализироватьКаталогиПоПроектам(путьККаталогуИсходников); |
| 86 | + |
| 87 | +КонецПроцедуры |
| 88 | + |
| 89 | +Процедура ИнициализироватьКаталогиПоПроектам(Знач ПутьККаталогуИсходников) |
85 | 90 |
|
86 | | - ГенераторПутей = Новый Путь1СПоМетаданным(_КаталогИсходников); |
| 91 | + стрКаталоги = СтрЗаменить(ПутьККаталогуИсходников, ";", ","); |
| 92 | + каталоги = СтрРазделить(стрКаталоги, ","); |
87 | 93 |
|
| 94 | + КаталогИсходниковПоПроекту = Новый Соответствие; |
| 95 | + |
| 96 | + Для Каждого цКаталог Из каталоги Цикл |
| 97 | + |
| 98 | + каталогИсходников = Новый Файл(цКаталог); |
| 99 | + каталогПроекта = Новый Файл(каталогИсходников.Путь); |
| 100 | + |
| 101 | + файлПроекта = Новый Файл(ОбъединитьПути(каталогПроекта.ПолноеИмя, ".project")); |
| 102 | + |
| 103 | + Если файлПроекта.Существует() |
| 104 | + И каталогИсходников.Существует() |
| 105 | + И каталогИсходников.ЭтоКаталог() Тогда |
| 106 | + |
| 107 | + имяПроекта = каталогПроекта.Имя; |
| 108 | + |
| 109 | + КаталогИсходниковПоПроекту.Вставить(имяПроекта, каталогИсходников.ПолноеИмя); |
| 110 | + |
| 111 | + _лог.Отладка("Каталог исходников для проекта %1 = %2", имяПроекта, каталогИсходников.ПолноеИмя); |
| 112 | + |
| 113 | + КонецЕсли; |
| 114 | + |
| 115 | + КонецЦикла; |
| 116 | + |
| 117 | + Если КаталогИсходниковПоПроекту.Количество() = 0 Тогда |
| 118 | + |
| 119 | + _лог.Ошибка("Не удалось заполнить соответствие проектов исходникам для SRC = <%1>", ПутьККаталогуИсходников); |
| 120 | + ЗавершитьРаботу(1); |
| 121 | + |
| 122 | + КонецЕсли; |
| 123 | + |
| 124 | + ГенераторПутейПоПроекту = Новый Соответствие; |
| 125 | + |
| 126 | + Для Каждого цПроектИКаталог Из КаталогИсходниковПоПроекту Цикл |
| 127 | + |
| 128 | + ГенераторПутейПоПроекту.Вставить(цПроектИКаталог.Ключ, Новый Путь1СПоМетаданным(цПроектИКаталог.Значение)); |
| 129 | + |
| 130 | + КонецЦикла; |
| 131 | + |
88 | 132 | КонецПроцедуры |
89 | 133 |
|
90 | 134 | Функция ТаблицаПоФайлуРезультата() |
|
159 | 203 |
|
160 | 204 | // В отчете могут быть дубли |
161 | 205 |
|
162 | | - тз.Свернуть("Правило,Серьезность,Тип,Метаданные,Положение,Описание"); |
| 206 | + тз.Свернуть("Проект,Правило,Серьезность,Тип,Метаданные,Положение,Описание"); |
163 | 207 |
|
164 | 208 | Возврат тз; |
165 | 209 |
|
|
234 | 278 | КонецЕсли; |
235 | 279 |
|
236 | 280 | мета = СтрокаТаблицы.Метаданные; |
| 281 | + проект = СтрокаТаблицы.Проект; |
237 | 282 |
|
238 | 283 | Если СтрЗаканчиваетсяНа(ВРег(мета), ".ФОРМА") Тогда |
239 | 284 |
|
|
243 | 288 |
|
244 | 289 | ИначеЕсли СтрРазделить(мета, ".").Количество() = 2 Тогда |
245 | 290 |
|
246 | | - Если ПутьКМетаданнымСуществует(мета + ".МодульОбъекта") Тогда |
| 291 | + Если ПутьКМетаданнымСуществует(проект, мета + ".МодульОбъекта") Тогда |
247 | 292 |
|
248 | 293 | СтрокаТаблицы.Метаданные = мета + ".МодульОбъекта"; |
249 | 294 |
|
250 | | - ИначеЕсли ПутьКМетаданнымСуществует(мета + ".МодульМенеджера") Тогда |
| 295 | + ИначеЕсли ПутьКМетаданнымСуществует(проект, мета + ".МодульМенеджера") Тогда |
251 | 296 |
|
252 | 297 | СтрокаТаблицы.Метаданные = мета + ".МодульМенеджера"; |
253 | 298 |
|
254 | | - ИначеЕсли ПутьКМетаданнымСуществует(мета + ".МодульНабораЗаписей") Тогда |
| 299 | + ИначеЕсли ПутьКМетаданнымСуществует(проект, мета + ".МодульНабораЗаписей") Тогда |
255 | 300 |
|
256 | 301 | СтрокаТаблицы.Метаданные = мета + ".МодульНабораЗаписей"; |
257 | 302 |
|
258 | | - ИначеЕсли ПутьКМетаданнымСуществует(мета + ".МодульМенеджераЗначения") Тогда |
| 303 | + ИначеЕсли ПутьКМетаданнымСуществует(проект, мета + ".МодульМенеджераЗначения") Тогда |
259 | 304 |
|
260 | 305 | СтрокаТаблицы.Метаданные = мета + ".МодульМенеджераЗначения"; |
261 | 306 |
|
262 | | - ИначеЕсли ПутьКМетаданнымСуществует(мета + ".МодульКоманды") Тогда |
| 307 | + ИначеЕсли ПутьКМетаданнымСуществует(проект, мета + ".МодульКоманды") Тогда |
263 | 308 |
|
264 | 309 | СтрокаТаблицы.Метаданные = мета + ".МодульКоманды"; |
265 | 310 |
|
|
294 | 339 |
|
295 | 340 | Для каждого цСтрока Из таблицаРезультатов Цикл |
296 | 341 |
|
297 | | - цСтрока.Путь = генераторПутей.Путь(цСтрока.Метаданные); |
| 342 | + цСтрока.Путь = ГенераторПутейПоПроекту[цСтрока.Проект].Путь(цСтрока.Метаданные); |
298 | 343 |
|
299 | 344 | Если Не ПроверитьПуть(цСтрока.Путь, цСтрока.Метаданные) Тогда |
300 | 345 |
|
|
490 | 535 |
|
491 | 536 | #КонецОбласти |
492 | 537 |
|
493 | | -Функция ПутьКМетаданнымСуществует(Знач пМетаданные) |
| 538 | +Функция ПутьКМетаданнымСуществует(Знач Проект, Знач пМетаданные) |
494 | 539 |
|
495 | | - Путь = генераторПутей.Путь(пМетаданные); |
| 540 | + Путь = ГенераторПутейПоПроекту[Проект].Путь(пМетаданные); |
496 | 541 |
|
497 | 542 | Возврат ПроверитьПуть(Путь, пМетаданные, Ложь); |
498 | 543 |
|
|
0 commit comments