|
9 | 9 | Перем ГенерируемыеОтчеты; // Структура |
10 | 10 |
|
11 | 11 | Перем ПутиФайловВОтносительные; |
12 | | - |
13 | 12 | Перем Лог; |
| 13 | +Перем ШаблонИмениФайлаСтатистики; // Строка |
| 14 | +Перем МассивПутейЗамены; // Соответствие |
| 15 | + |
| 16 | +Перем ТаблицаСтатистикиПокрытия; // ТаблицаЗначение |
14 | 17 |
|
15 | 18 | // Устанавливает путь к файлу статистик |
16 | 19 | // |
|
28 | 31 |
|
29 | 32 | КонецФункции |
30 | 33 |
|
| 34 | +// Устанавливает путь к файлу статистик |
| 35 | +// |
| 36 | +// Параметры: |
| 37 | +// ПутьКфайлу - Строка - Путь к файлу статистики (по умолчанию stat.json) |
| 38 | +// |
| 39 | +// Возвращаемое значение: |
| 40 | +// Объект.ГенераторОтчетаПокрытия - экземпляр этого объекта ГенераторОтчетаПокрытия |
| 41 | +// |
| 42 | +Функция ИмяФайлаСтатистики(Знач ПутьКфайлу = "stat.json") Экспорт |
| 43 | + |
| 44 | + ПутьКФайлуСтатистики = ПутьКфайлу; |
| 45 | + |
| 46 | + Возврат ЭтотОбъект; |
| 47 | + |
| 48 | +КонецФункции |
| 49 | + |
31 | 50 | // Устанавливает выходной-рабочий каталог |
32 | 51 | // |
33 | 52 | // Параметры: |
|
89 | 108 |
|
90 | 109 | КонецФункции |
91 | 110 |
|
| 111 | +// Добавляет путь к замене |
| 112 | +// |
| 113 | +// Параметры: |
| 114 | +// ЗаменяемыйПуть - Строка - путь к замене |
| 115 | +// НовыйПуть - Строка - новый путь |
| 116 | +// |
| 117 | +// Возвращаемое значение: |
| 118 | +// Объект.ГенераторОтчетаПокрытия - экземпляр этого объекта ГенераторОтчетаПокрытия |
| 119 | +// |
| 120 | +Функция ЗаменитьПуть(Знач ЗаменяемыйПуть, Знач НовыйПуть) Экспорт |
| 121 | + |
| 122 | + МассивПутейЗамены.Вставить(ЗаменяемыйПуть, НовыйПуть); |
| 123 | + |
| 124 | + Возврат ЭтотОбъект; |
| 125 | + |
| 126 | +КонецФункции |
| 127 | + |
92 | 128 | // Добавляет отчет в формате Clover для генерации |
93 | 129 | // |
94 | 130 | // Параметры: |
|
142 | 178 | // |
143 | 179 | Процедура Сформировать() Экспорт |
144 | 180 |
|
145 | | - ПроверитьФайлСтатистики(); |
| 181 | + НоваяТаблицаСтатистикиПокрытия(); |
146 | 182 |
|
147 | 183 | ПрочитатьДанныеСтатистики(); |
148 | 184 |
|
| 185 | + ОбработатьТаблицуСтатистикиПокрытия(); |
| 186 | + |
149 | 187 | СформироватьОтчетClover(); |
150 | 188 | СформироватьОтчетGenericCoverage(); |
151 | | - |
152 | 189 | СформироватьОтчетCobertura(); |
153 | 190 |
|
154 | 191 | КонецПроцедуры |
155 | 192 |
|
156 | 193 | Процедура ПрочитатьДанныеСтатистики() |
157 | 194 |
|
158 | | - ЧтениеТекста = Новый ЧтениеТекста(ПутьКФайлуСтатистики, КодировкаТекста.UTF8); |
| 195 | + МассивФайловСтатистики = НайтиФайлы(ПутьКРабочемуКаталогу, ШаблонИмениФайлаСтатистики); |
| 196 | + |
| 197 | + Для Каждого ФайлСтатистики Из МассивФайловСтатистики Цикл |
| 198 | + |
| 199 | + ПрочитатьФайлСтатистики(ФайлСтатистики); |
| 200 | + |
| 201 | + КонецЦикла; |
| 202 | + |
| 203 | + Если ЗначениеЗаполнено(ПутьКФайлуСтатистики) Тогда |
| 204 | + |
| 205 | + ФайлСтатистики = Новый Файл(ПутьКФайлуСтатистики); |
| 206 | + |
| 207 | + Если ФайлСтатистики.Существует() Тогда |
| 208 | + ПрочитатьФайлСтатистики(ФайлСтатистики); |
| 209 | + КонецЕсли; |
| 210 | + |
| 211 | + КонецЕсли; |
| 212 | + |
| 213 | +КонецПроцедуры |
| 214 | + |
| 215 | +Функция ПрочитатьФайлСтатистики(Знач ФайлСтатистики) |
| 216 | + |
| 217 | + ЧтениеТекста = Новый ЧтениеТекста(ФайлСтатистики.ПолноеИмя, КодировкаТекста.UTF8); |
159 | 218 |
|
160 | 219 | СтрокаJSON = ЧтениеТекста.Прочитать(); |
161 | 220 | ЧтениеТекста.Закрыть(); |
162 | 221 |
|
163 | 222 | Парсер = Новый ПарсерJSON(); |
164 | 223 |
|
165 | 224 | ДанныеФайлаСтатистики = Парсер.ПрочитатьJSON(СтрокаJSON); |
166 | | - ДанныеСтатистикиПокрытия = Новый Соответствие; |
167 | | - |
| 225 | + |
168 | 226 | Для Каждого Файл Из ДанныеФайлаСтатистики Цикл |
169 | 227 |
|
170 | 228 | ДанныеФайла = Файл.Значение; |
171 | 229 |
|
172 | 230 | ПутьКФайлу = ДанныеФайла.Получить("#path"); |
173 | 231 |
|
| 232 | + ВыполнитьЗаменуПутей(ПутьКФайлу); |
| 233 | + |
174 | 234 | Если НЕ ЭтоФайлПроекта(ПутьКФайлу) Тогда |
175 | 235 | Продолжить; |
176 | 236 | КонецЕсли; |
177 | 237 |
|
178 | | - ФайлПокрытия = Новый Файл(ПутьКФайлу); |
179 | | - ПолноеИмя = ФайлПокрытия.ПолноеИмя; |
| 238 | + ДобавитьВДанныеСтатистикиПокрытия(ПутьКФайлу, ДанныеФайла); |
| 239 | + |
| 240 | + КонецЦикла; |
| 241 | + |
| 242 | + СвернутьТаблицуСтатистикиПокрытия(); |
| 243 | + |
| 244 | +КонецФункции |
| 245 | + |
| 246 | +Процедура ОбработатьТаблицуСтатистикиПокрытия() |
| 247 | + |
| 248 | + Если НЕ ПутиФайловВОтносительные Тогда |
| 249 | + Возврат; |
| 250 | + КонецЕсли; |
| 251 | + |
| 252 | + СтрокаЗамены = СтрШаблон("%1%2", ПутьККаталогуПроекта, ПолучитьРазделительПути()); |
| 253 | + |
| 254 | + Для каждого СтрокаТаблицыСтатистики Из ТаблицаСтатистикиПокрытия Цикл |
| 255 | + |
| 256 | + ПутьКФайлу = СтрокаТаблицыСтатистики.ПутьКФайлу; |
| 257 | + |
| 258 | + СтрокаТаблицыСтатистики.ПутьКФайлу = СтрЗаменить(ПутьКФайлу, СтрокаЗамены, ""); |
| 259 | + |
| 260 | + КонецЦикла; |
| 261 | + |
| 262 | +КонецПроцедуры |
| 263 | + |
| 264 | +Процедура ВыполнитьЗаменуПутей(Знач ПутьКФайлу) |
| 265 | + |
| 266 | + Для каждого ПутьЗамены Из МассивПутейЗамены Цикл |
| 267 | + |
| 268 | + СтрокаПоиска = ПутьЗамены.Ключ; |
| 269 | + СтрокаЗамены = ПутьЗамены.Значение; |
| 270 | + |
| 271 | + Если СтрНачинаетсяС(ПутьКФайлу, СтрокаПоиска) Тогда |
| 272 | + |
| 273 | + ПутьКФайлу = СтрЗаменить(ПутьКФайлу, СтрокаПоиска, СтрокаЗамены); |
| 274 | + |
| 275 | + КонецЕсли; |
| 276 | + |
| 277 | + КонецЦикла; |
| 278 | + |
| 279 | +КонецПроцедуры |
| 280 | + |
| 281 | +Процедура ДобавитьВДанныеСтатистикиПокрытия(Знач ПутьКФайлу, ДанныеФайла) |
| 282 | + |
| 283 | + Для каждого ДанныеМетодов Из ДанныеФайла Цикл |
| 284 | + |
| 285 | + ИмяМетода = ДанныеМетодов.Ключ; |
180 | 286 |
|
181 | | - Если ПутиФайловВОтносительные Тогда |
182 | | - ДанныеФайла.Вставить("#path", СтрЗаменить(ПолноеИмя, ПутьККаталогуПроекта + "/", "")); |
| 287 | + Если ИмяМетода = "#path" Тогда |
| 288 | + Продолжить; |
183 | 289 | КонецЕсли; |
| 290 | + |
| 291 | + СтрокиМетода = ДанныеМетодов.Значение; |
| 292 | + |
| 293 | + Для каждого ДанныеПокрытияСтроки Из СтрокиМетода Цикл |
| 294 | + |
| 295 | + СтрокаМодуля = ДанныеПокрытияСтроки.Ключ; |
| 296 | + КоличествоВызовов = ДанныеФайла.Получить("count"); |
| 297 | + ВремяВыполнения = ДанныеФайла.Получить("time"); |
| 298 | + |
| 299 | + ДобавитьВТаблицуСтатистики(ПутьКфайлу, |
| 300 | + ИмяМетода, |
| 301 | + СтрокаМодуля, |
| 302 | + КоличествоВызовов, |
| 303 | + ВремяВыполнения); |
184 | 304 |
|
185 | | - ДанныеСтатистикиПокрытия.Вставить(Файл.Ключ, ДанныеФайла); |
| 305 | + КонецЦикла; |
186 | 306 |
|
187 | 307 | КонецЦикла; |
188 | 308 |
|
189 | 309 | КонецПроцедуры |
190 | 310 |
|
| 311 | +Функция НоваяТаблицаСтатистикиПокрытия() |
| 312 | + |
| 313 | + ТаблицаСтатистикиПокрытия = Новый ТаблицаЗначений; |
| 314 | + |
| 315 | + ТаблицаСтатистикиПокрытия.Колонки.Добавить("ПутьКФайлу"); |
| 316 | + ТаблицаСтатистикиПокрытия.Колонки.Добавить("ИмяМетода"); |
| 317 | + ТаблицаСтатистикиПокрытия.Колонки.Добавить("СтрокаМодуля"); |
| 318 | + ТаблицаСтатистикиПокрытия.Колонки.Добавить("КоличествоВызовов"); |
| 319 | + ТаблицаСтатистикиПокрытия.Колонки.Добавить("ВремяВыполнения"); |
| 320 | + |
| 321 | +КонецФункции |
| 322 | + |
| 323 | +Процедура СвернутьТаблицуСтатистикиПокрытия() |
| 324 | + |
| 325 | + ТаблицаСтатистикиПокрытия.Свернуть("ПутьКФайлу, ИмяМетода, СтрокаМодуля", "КоличествоВызовов, ВремяВыполнения"); |
| 326 | + |
| 327 | +КонецПроцедуры |
| 328 | + |
| 329 | +Процедура ДобавитьВТаблицуСтатистики(Знач ПутьКФайлу, |
| 330 | + Знач ИмяМетода, |
| 331 | + Знач СтрокаМодуля, |
| 332 | + Знач КоличествоВызовов, |
| 333 | + Знач ВремяВыполнения) |
| 334 | + |
| 335 | + НоваяСтрока = ТаблицаСтатистикиПокрытия.Добавить(); |
| 336 | + НоваяСтрока.ПутьКФайлу = ПутьКФайлу; |
| 337 | + НоваяСтрока.ИмяМетода = ИмяМетода; |
| 338 | + НоваяСтрока.СтрокаМодуля = СтрокаМодуля; |
| 339 | + НоваяСтрока.КоличествоВызовов = Число(КоличествоВызовов); |
| 340 | + НоваяСтрока.ВремяВыполнения = Число(ВремяВыполнения); |
| 341 | + |
| 342 | +КонецПроцедуры |
| 343 | + |
191 | 344 | Функция ЭтоФайлПроекта(Знач ПутьКФайлу) |
192 | 345 |
|
193 | 346 | ФайлПодходит = СтрНачинаетсяС(ПутьКФайлу, ПутьККаталогуИсходников); |
|
312 | 465 |
|
313 | 466 | ГенерируемыеОтчеты = Новый Структура; |
314 | 467 |
|
| 468 | + МассивПутейЗамены = Новый Массив; |
| 469 | + |
315 | 470 | ПутьКФайлуСтатистикиПоУмолчанию(); |
316 | 471 |
|
317 | 472 | КонецПроцедуры |
|
0 commit comments