|
1 | 1 | Перем ТекущаяЗаписьXML; |
2 | 2 | Перем ДатаГенерации; |
3 | | -Перем ИмяПроекта; |
4 | 3 | Перем ПутьКИсходникам; |
| 4 | +Перем ТаблицаСтатистикиПокрытия; |
| 5 | +Перем ТаблицаПакетов; |
| 6 | +Перем ТаблицаДанныхПоКлассам; |
| 7 | +Перем ТаблицаДанныхПоМетодамКлассов; |
5 | 8 |
|
6 | 9 | // Выполняет формирование отчета |
7 | 10 | // |
8 | 11 | // Параметры: |
9 | | -// ДанныеСтатистикиПокрытия - Соответствие - Прочитанные данные статистики OScript |
| 12 | +// ВходящаяТаблицаСтатистикиПокрытия - ТаблицаЗначений - Прочитанные данные статистики OScript |
10 | 13 | // ПутьКОтчету - Строка - Путь к файлу отчета |
11 | 14 | // |
12 | | -Процедура Сформировать(Знач ДанныеСтатистикиПокрытия, Знач ПутьКОтчету) Экспорт |
| 15 | +Процедура Сформировать(Знач ВходящаяТаблицаСтатистикиПокрытия, Знач ПутьКОтчету) Экспорт |
13 | 16 |
|
14 | | - ДанныеПокрытия = ДанныеСтатистикиПокрытия; |
| 17 | + ТаблицаСтатистикиПокрытия = ВходящаяТаблицаСтатистикиПокрытия; |
15 | 18 |
|
16 | 19 | ТекущаяЗаписьXML = Новый ЗаписьXML; |
17 | 20 | ТекущаяЗаписьXML.ОткрытьФайл(ПутьКОтчету); |
|
38 | 41 |
|
39 | 42 | ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("packages"); |
40 | 43 |
|
41 | | - ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("package"); |
| 44 | + ТаблицаПакетов = ТаблицаСтатистикиПокрытия.Скопировать(); |
| 45 | + ТаблицаПакетов.Свернуть("Пакет", "Покрыто, НеПокрыто"); |
42 | 46 |
|
43 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("name", "."); |
44 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("complexity", ""); |
45 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("branch-rate", ""); |
46 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("line-rate", ""); |
| 47 | + РассчитатьПроцентПокрытияПоТаблице(ТаблицаПакетов, "Пакет"); |
47 | 48 |
|
48 | | - ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("classes"); |
| 49 | + ТаблицаДанныхПоКлассам = ТаблицаСтатистикиПокрытия.Скопировать(); |
| 50 | + ТаблицаДанныхПоКлассам.Свернуть("Пакет, ПутьКФайлу, ИмяКласса", "Покрыто, НеПокрыто"); |
| 51 | + |
| 52 | + РассчитатьПроцентПокрытияПоТаблице(ТаблицаДанныхПоКлассам, "Пакет, ПутьКФайлу, ИмяКласса"); |
49 | 53 |
|
50 | | - ВсегоФайловВПакете = 0; |
| 54 | + ТаблицаДанныхПоМетодамКлассов = ТаблицаСтатистикиПокрытия.Скопировать(); |
| 55 | + ТаблицаДанныхПоМетодамКлассов.Свернуть("Пакет, ПутьКФайлу, ИмяКласса, ИмяМетода", "Покрыто, НеПокрыто"); |
| 56 | + |
| 57 | + РассчитатьПроцентПокрытияПоТаблице(ТаблицаДанныхПоКлассам, "Пакет, ПутьКФайлу, ИмяКласса, ИмяМетода"); |
51 | 58 |
|
52 | | - Для Каждого Файл Из ДанныеПокрытия Цикл |
| 59 | + ЗаписатьДанныеПакетов(); |
53 | 60 |
|
54 | | - ДанныеФайла = Файл.Значение; |
| 61 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // packages |
55 | 62 |
|
56 | | - ПутьКФайлу = ДанныеФайла.Получить("#path"); |
| 63 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // coverage |
57 | 64 |
|
58 | | - ВсегоФайловВПакете = ВсегоФайловВПакете + 1; |
| 65 | + ТекущаяЗаписьXML.Закрыть(); |
59 | 66 |
|
60 | | - ФайлПокрытия = Новый Файл(ПутьКФайлу); |
61 | | - ИмяФайла = ФайлПокрытия.Имя; |
| 67 | +КонецПроцедуры |
62 | 68 |
|
63 | | - ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("class"); |
64 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("name", ИмяФайла); |
65 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("filename", ПутьКФайлу); |
66 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("complexity", ""); |
67 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("branch-rate", ""); |
68 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("line-rate", ""); |
69 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("condition-coverage", "100%"); |
| 69 | +Процедура РассчитатьПроцентПокрытияПоТаблице(ТаблицаРасчета, Знач НаборРазрезовРасчета) |
70 | 70 |
|
71 | | - ВсегоЭлементов = 0; |
72 | | - ВсегоПокрытоЭлементов = 0; |
| 71 | + ТаблицаРасчета.Колонки.Добавить("ПроцентПокрытияСтрок"); |
| 72 | + // ПроцентПокрытияСтрок = (СтрокаПакета.Покрыто / (СтрокаПакета.Покрыто + СтрокаПакета.НеПокрыто))*100; |
| 73 | + // TODO: Реализовать расчет процентов |
| 74 | +КонецПроцедуры |
73 | 75 |
|
74 | | - ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("methods"); |
75 | | - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // sources |
76 | 76 |
|
77 | | - ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("lines"); |
| 77 | +Процедура ЗаписатьДанныеПакетов() |
78 | 78 |
|
79 | | - Для Каждого КлючИЗначение Из ДанныеФайла Цикл |
| 79 | + Для каждого СтрокаПакета Из ТаблицаПакетов Цикл |
| 80 | + |
| 81 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("package"); |
| 82 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("name", СтрокаПакета.Пакет); |
| 83 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("complexity", ""); |
| 84 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("branch-rate", ""); |
| 85 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("line-rate", Строка(СтрокаПакета.ПроцентПокрытияСтрок)); |
| 86 | + |
| 87 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("classes"); |
80 | 88 |
|
81 | | - ИмяМетода = КлючИЗначение.Ключ; |
| 89 | + ЗаписатьДанныеКлассов(СтрокаПакета.Пакет); |
82 | 90 |
|
83 | | - Если ИмяМетода = "#path" Тогда |
84 | | - Продолжить; |
85 | | - КонецЕсли; |
| 91 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // classes |
| 92 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // package |
86 | 93 |
|
87 | | - ДанныеПроцедуры = КлючИЗначение.Значение; |
88 | | - ВсегоЭлементовМетода = 0; |
| 94 | + КонецЦикла; |
89 | 95 |
|
90 | | - ПокрытыхСтрокВМетоде = 0; |
| 96 | +КонецПроцедуры |
91 | 97 |
|
92 | | - Для Каждого ДанныеСтроки Из ДанныеПроцедуры Цикл |
| 98 | +Процедура ЗаписатьДанныеКлассов(ИмяПакета) |
| 99 | + |
| 100 | + Отбор = Новый Структура("Пакет", ИмяПакета); |
| 101 | + МассивСтрок = ТаблицаДанныхПоКлассам.НайтиСтроки(Отбор); |
93 | 102 |
|
94 | | - ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("line"); |
| 103 | + Для каждого СтрокаКласса Из МассивСтрок Цикл |
| 104 | + |
| 105 | + // ПроцентПокрытияСтрок = (СтрокаПакета.Покрыто / (СтрокаПакета.Покрыто + СтрокаПакета.НеПокрыто))*100; |
| 106 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("class"); |
| 107 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("name", СтрокаКласса.ИмяКласса); |
| 108 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("filename", СтрокаКласса.ПутьКФайлу); |
| 109 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("complexity", ""); |
| 110 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("branch-rate", ""); |
| 111 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("line-rate", Строка(СтрокаКласса.ПроцентПокрытияСтрок)); |
| 112 | + |
| 113 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("methods"); |
95 | 114 |
|
96 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("number", ДанныеСтроки.Ключ); |
97 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("branch", "false"); |
98 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("condition-coverage", "100%"); |
| 115 | + ЗаписатьДанныеМетодов(СтрокаКласса.Пакет, СтрокаКласса.ИмяКласса); |
99 | 116 |
|
100 | | - Покрыто = Число(ДанныеСтроки.Значение.Получить("count")) > 0; |
101 | | - ТекущаяЗаписьXML.ЗаписатьАтрибут("hits", ДанныеСтроки.Значение.Получить("count")); |
| 117 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // methods |
102 | 118 |
|
103 | | - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover |
| 119 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("lines"); |
104 | 120 |
|
105 | | - Если Покрыто Тогда |
106 | | - ПокрытыхСтрокВМетоде = ПокрытыхСтрокВМетоде + 1; |
107 | | - КонецЕсли; |
| 121 | + ЗаписатьДанныеСтрок(СтрокаКласса.Пакет, СтрокаКласса.ИмяКласса, "$entry"); |
108 | 122 |
|
109 | | - ВсегоЭлементовМетода = ВсегоЭлементовМетода + 1; |
| 123 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // lines |
110 | 124 |
|
111 | | - КонецЦикла; |
| 125 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // class |
112 | 126 |
|
| 127 | + КонецЦикла; |
113 | 128 |
|
114 | | - ВсегоЭлементов = ВсегоЭлементов + ВсегоЭлементовМетода; |
| 129 | +КонецПроцедуры |
115 | 130 |
|
116 | | - ВсегоПокрытоЭлементов = ВсегоПокрытоЭлементов + ПокрытыхСтрокВМетоде; |
| 131 | +Процедура ЗаписатьДанныеМетодов(Знач ИмяПакета, Знач ИмяКласса) |
| 132 | + |
| 133 | + Отбор = Новый Структура("Пакет, ИмяКласса", ИмяПакета, ИмяКласса); |
| 134 | + МассивСтрок = ТаблицаДанныхПоМетодамКлассов.НайтиСтроки(Отбор); |
| 135 | + |
| 136 | + Для каждого СтрокаМетода Из МассивСтрок Цикл |
| 137 | + |
| 138 | + // ПроцентПокрытияСтрок = (СтрокаПакета.Покрыто / (СтрокаПакета.Покрыто + СтрокаПакета.НеПокрыто))*100; |
| 139 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("method"); |
| 140 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("name", СтрокаМетода.ИмяМетода); |
| 141 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("filename", СтрокаМетода.ПутьКФайлу); |
| 142 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("complexity", ""); |
| 143 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("branch-rate", ""); |
| 144 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("line-rate", Строка(СтрокаМетода.ПроцентПокрытияСтрок)); |
| 145 | + |
| 146 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("lines"); |
117 | 147 |
|
118 | | - КонецЦикла; |
| 148 | + ЗаписатьДанныеСтрок(СтрокаМетода.Пакет, СтрокаМетода.ИмяКласса, СтрокаМетода.ИмяМетода); |
119 | 149 |
|
120 | 150 | ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // lines |
121 | | - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // class |
122 | 151 |
|
| 152 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // method |
123 | 153 |
|
124 | 154 | КонецЦикла; |
125 | 155 |
|
126 | | - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // classes |
| 156 | +КонецПроцедуры |
127 | 157 |
|
128 | | - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // package |
| 158 | +Процедура ЗаписатьДанныеСтрок(Знач ИмяПакета, Знач ИмяКласса, Знач ИмяМетода) |
| 159 | + |
| 160 | + Отбор = Новый Структура("Пакет, ИмяКласса, ИмяМетода", ИмяПакета, ИмяКласса, ИмяМетода); |
| 161 | + МассивСтрок = ТаблицаСтатистикиПокрытия.НайтиСтроки(Отбор); |
129 | 162 |
|
130 | | - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // packages |
| 163 | + Для каждого СтрокаМодуля Из МассивСтрок Цикл |
| 164 | + |
| 165 | + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("line"); |
131 | 166 |
|
132 | | - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // coverage |
| 167 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("number", СтрокаМодуля.СтрокаМодуля); |
| 168 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("branch", "false"); |
| 169 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("condition-coverage", "100%"); |
133 | 170 |
|
134 | | - ТекущаяЗаписьXML.Закрыть(); |
| 171 | + ТекущаяЗаписьXML.ЗаписатьАтрибут("hits", СтрокаМодуля.КоличествоВызовов); |
| 172 | + |
| 173 | + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // line |
| 174 | + |
| 175 | + КонецЦикла; |
135 | 176 |
|
136 | 177 | КонецПроцедуры |
137 | 178 |
|
|
0 commit comments