Skip to content

Commit e1315a1

Browse files
authored
Merge pull request #6 from sfaqer/feature/nativeJson&Clover
Нативный JSON парсер + Clover
2 parents 2d22228 + 42f6e6f commit e1315a1

File tree

3 files changed

+46
-75
lines changed

3 files changed

+46
-75
lines changed

packagedef

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
//
55

66
Описание.Имя("coverage")
7-
.Версия("0.6.1")
7+
.Версия("0.7.0")
88
.Автор("Khorev Aleksey")
99
.АдресАвтора("Khorevaa@gmail.com")
1010
.Описание("Библиотека для конвертации результата расчета покрытия тестами в различные форматы")
11-
.ВерсияСреды("1.0.18")
11+
.ВерсияСреды("1.9.2")
1212
.ВключитьФайл("src")
1313
//.ВключитьФайл("docs")
1414
//.ВключитьФайл("tests")

src/core/Классы/ГенераторОтчетаClover.os

Lines changed: 40 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
// ПутьКОтчетуClover - Строка - Путь к файлу отчета
1111
//
1212
Процедура Сформировать(Знач ДанныеСтатистикиПокрытия, Знач ПутьКОтчетуClover) Экспорт
13-
14-
Возврат;
1513

1614
ДанныеПокрытия = ДанныеСтатистикиПокрытия;
1715

@@ -31,11 +29,11 @@
3129
ВсегоФайловВПакете = 0;
3230
МетрикаПакета = Новый Структура;
3331

34-
Для Каждого Файл Из ДанныеПокрытия Цикл
35-
36-
ДанныеФайла = Файл.Значение;
32+
Файлы = ДанныеПокрытия.Скопировать(, "ПутьКФайлу");
33+
Файлы.Свернуть("ПутьКФайлу");
34+
Файлы = Файлы.ВыгрузитьКолонку("ПутьКФайлу");
3735

38-
ПутьКФайлу = ДанныеФайла.Получить("#path");
36+
Для Каждого ПутьКФайлу Из Файлы Цикл
3937

4038
ВсегоФайловВПакете = ВсегоФайловВПакете + 1;
4139

@@ -45,88 +43,65 @@
4543
ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("file");
4644
ТекущаяЗаписьXML.ЗаписатьАтрибут("name", ИмяФайла);
4745
ТекущаяЗаписьXML.ЗаписатьАтрибут("path", КаталогФайла);
48-
49-
КоличествоМетодов = 0;
46+
47+
КоличествоМетодов = 0;
5048
КоличествоПокрытыхМетодов = 0;
51-
ОбщееВремяВыполнения = 0;
52-
ВсегоСтрокВФайле = 0;
53-
ВсегоЭлементов = 0;
54-
ВсегоПокрытоЭлементов = 0;
55-
56-
Для Каждого КлючИЗначение Из ДанныеФайла Цикл
57-
58-
ИмяМетода = КлючИЗначение.Ключ;
59-
60-
Если ИмяМетода = "#path" Тогда
61-
Продолжить;
62-
КонецЕсли;
63-
64-
КоличествоМетодов = КоличествоМетодов + 1;
49+
ОбщееВремяВыполнения = 0;
50+
ВсегоСтрокВФайле = 0;
51+
ВсегоЭлементов = 0;
52+
ВсегоПокрытоЭлементов = 0;
6553

66-
ПокрытыхСтрокВМетоде = 0;
54+
ДанныеФайла = ДанныеПокрытия.НайтиСтроки(Новый Структура("ПутьКФайлу", ПутьКФайлу));
6755

68-
ДанныеПроцедуры = КлючИЗначение.Значение;
69-
ВсегоЭлементовМетода = 0;
70-
ЗаписатьМетод = Не ИмяМетода = "$entry";
56+
ТекущийМетод = Неопределено;
7157

72-
Для Каждого ДанныеСтроки Из ДанныеПроцедуры Цикл
73-
74-
ТипСтроки = "stmt";
75-
Если ЗаписатьМетод Тогда
76-
ТипСтроки = "method";
77-
ЗаписатьМетод = Ложь;
78-
КонецЕсли;
58+
Для Каждого СтрокаДанныхФайла Из ДанныеФайла Цикл
7959

80-
ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("line");
81-
82-
ТекущаяЗаписьXML.ЗаписатьАтрибут("num", ДанныеСтроки.Ключ);
83-
ТекущаяЗаписьXML.ЗаписатьАтрибут("type", ТипСтроки);
84-
85-
Покрыто = Число(ДанныеСтроки.Значение.Получить("count")) > 0;
86-
ТекущаяЗаписьXML.ЗаписатьАтрибут("count", ДанныеСтроки.Значение.Получить("count"));
87-
88-
ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover
89-
90-
Если Покрыто Тогда
91-
ПокрытыхСтрокВМетоде = ПокрытыхСтрокВМетоде + 1;
92-
КонецЕсли;
60+
ИмяМетода = СтрокаДанныхФайла.ИмяМетода;
9361

94-
ВсегоЭлементовМетода = ВсегоЭлементовМетода + 1;
62+
Если ТекущийМетод <> ИмяМетода Тогда
63+
КоличествоМетодов = КоличествоМетодов + 1;
64+
ТекущийМетод = ИмяМетода;
65+
КонецЕсли;
9566

96-
ОбщееВремяВыполнения = ОбщееВремяВыполнения + ДанныеСтроки.Значение.Получить("time");
67+
ТипСтроки = ?(ИмяМетода = "$entry", "stmt", "method");
9768

98-
ВсегоСтрокВФайле = Макс(ВсегоСтрокВФайле, Число(ДанныеСтроки.Ключ));
69+
ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("line");
9970

100-
КонецЦикла;
71+
ТекущаяЗаписьXML.ЗаписатьАтрибут("num", СтрокаДанныхФайла.СтрокаМодуля);
72+
ТекущаяЗаписьXML.ЗаписатьАтрибут("type", ТипСтроки);
73+
ТекущаяЗаписьXML.ЗаписатьАтрибут("count", СтрокаДанныхФайла.КоличествоВызовов);
10174

102-
МетодПокрытПолностью = ДанныеПроцедуры.Количество() = ПокрытыхСтрокВМетоде;
75+
ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover
10376

104-
Если МетодПокрытПолностью Тогда
105-
КоличествоПокрытыхМетодов = КоличествоПокрытыхМетодов + 1;
106-
КонецЕсли;
77+
ОбщееВремяВыполнения = ОбщееВремяВыполнения + СтрокаДанныхФайла.ВремяВыполнения;
10778

108-
ВсегоЭлементов = ВсегоЭлементов + ВсегоЭлементовМетода;
109-
110-
ВсегоПокрытоЭлементов = ВсегоПокрытоЭлементов + ПокрытыхСтрокВМетоде;
79+
ВсегоСтрокВФайле = Макс(ВсегоСтрокВФайле, СтрокаДанныхФайла.СтрокаМодуля);
80+
81+
ВсегоЭлементов = ВсегоЭлементов + 1;
82+
ВсегоПокрытоЭлементов = ВсегоПокрытоЭлементов + СтрокаДанныхФайла.Покрыто;
11183

11284
КонецЦикла;
113-
85+
11486
ИмяКласса = ФайлПокрытия.ИмяБезРасширения;
11587
ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("class");
11688
ТекущаяЗаписьXML.ЗаписатьАтрибут("name", ИмяКласса);
117-
МетрикаКласса = ПодготовитьМетрикиКласса(ВсегоЭлементов,
118-
ВсегоПокрытоЭлементов,
119-
КоличествоМетодов,
120-
КоличествоПокрытыхМетодов,
121-
ОбщееВремяВыполнения);
89+
МетрикаКласса = ПодготовитьМетрикиКласса(
90+
ВсегоЭлементов,
91+
ВсегоПокрытоЭлементов,
92+
КоличествоМетодов,
93+
КоличествоПокрытыхМетодов,
94+
ОбщееВремяВыполнения
95+
);
96+
12297
ЗаписатьЭлементXML("metrics", МетрикаКласса);
12398
ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // file
124-
99+
125100
ПолучитьМетрикуФайла(ВсегоСтрокВФайле, МетрикаКласса);
126101

127102
ЗаписатьЭлементXML("metrics", МетрикаКласса);
128103
ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // file
129-
104+
130105
ДобавитьМетрикуВМетрикуПакета(МетрикаПакета, МетрикаКласса);
131106

132107
КонецЦикла;

src/core/Классы/ГенераторОтчетаПокрытия.os

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -226,16 +226,12 @@
226226
КонецПроцедуры
227227

228228
Функция ПрочитатьФайлСтатистики(Знач ФайлСтатистики)
229-
230-
ЧтениеТекста = Новый ЧтениеТекста(ФайлСтатистики.ПолноеИмя, КодировкаТекста.UTF8);
231-
232-
СтрокаJSON = ЧтениеТекста.Прочитать();
233-
ЧтениеТекста.Закрыть();
234229

235-
Парсер = Новый ПарсерJSON();
230+
ЧтениеJSON = Новый ЧтениеJSON();
231+
ЧтениеJSON.ОткрытьФайл(ФайлСтатистики.ПолноеИмя);
232+
ДанныеФайлаСтатистики = ПрочитатьJSON(ЧтениеJSON, Истина);
233+
ЧтениеJSON.Закрыть();
236234

237-
ДанныеФайлаСтатистики = Парсер.ПрочитатьJSON(СтрокаJSON);
238-
239235
Для Каждого Файл Из ДанныеФайлаСтатистики Цикл
240236

241237
ДанныеФайла = Файл.Значение;

0 commit comments

Comments
 (0)