diff --git a/packagedef b/packagedef index 586b8ef..87102ed 100644 --- a/packagedef +++ b/packagedef @@ -4,11 +4,11 @@ // Описание.Имя("coverage") - .Версия("0.6.1") + .Версия("0.7.0") .Автор("Khorev Aleksey") .АдресАвтора("Khorevaa@gmail.com") .Описание("Библиотека для конвертации результата расчета покрытия тестами в различные форматы") - .ВерсияСреды("1.0.18") + .ВерсияСреды("1.9.2") .ВключитьФайл("src") //.ВключитьФайл("docs") //.ВключитьФайл("tests") diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260Clover.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260Clover.os" index ad87017..56f711f 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260Clover.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260Clover.os" @@ -10,8 +10,6 @@ // ПутьКОтчетуClover - Строка - Путь к файлу отчета // Процедура Сформировать(Знач ДанныеСтатистикиПокрытия, Знач ПутьКОтчетуClover) Экспорт - - Возврат; ДанныеПокрытия = ДанныеСтатистикиПокрытия; @@ -31,11 +29,11 @@ ВсегоФайловВПакете = 0; МетрикаПакета = Новый Структура; - Для Каждого Файл Из ДанныеПокрытия Цикл - - ДанныеФайла = Файл.Значение; + Файлы = ДанныеПокрытия.Скопировать(, "ПутьКФайлу"); + Файлы.Свернуть("ПутьКФайлу"); + Файлы = Файлы.ВыгрузитьКолонку("ПутьКФайлу"); - ПутьКФайлу = ДанныеФайла.Получить("#path"); + Для Каждого ПутьКФайлу Из Файлы Цикл ВсегоФайловВПакете = ВсегоФайловВПакете + 1; @@ -45,88 +43,65 @@ ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("file"); ТекущаяЗаписьXML.ЗаписатьАтрибут("name", ИмяФайла); ТекущаяЗаписьXML.ЗаписатьАтрибут("path", КаталогФайла); - - КоличествоМетодов = 0; + + КоличествоМетодов = 0; КоличествоПокрытыхМетодов = 0; - ОбщееВремяВыполнения = 0; - ВсегоСтрокВФайле = 0; - ВсегоЭлементов = 0; - ВсегоПокрытоЭлементов = 0; - - Для Каждого КлючИЗначение Из ДанныеФайла Цикл - - ИмяМетода = КлючИЗначение.Ключ; - - Если ИмяМетода = "#path" Тогда - Продолжить; - КонецЕсли; - - КоличествоМетодов = КоличествоМетодов + 1; + ОбщееВремяВыполнения = 0; + ВсегоСтрокВФайле = 0; + ВсегоЭлементов = 0; + ВсегоПокрытоЭлементов = 0; - ПокрытыхСтрокВМетоде = 0; + ДанныеФайла = ДанныеПокрытия.НайтиСтроки(Новый Структура("ПутьКФайлу", ПутьКФайлу)); - ДанныеПроцедуры = КлючИЗначение.Значение; - ВсегоЭлементовМетода = 0; - ЗаписатьМетод = Не ИмяМетода = "$entry"; + ТекущийМетод = Неопределено; - Для Каждого ДанныеСтроки Из ДанныеПроцедуры Цикл - - ТипСтроки = "stmt"; - Если ЗаписатьМетод Тогда - ТипСтроки = "method"; - ЗаписатьМетод = Ложь; - КонецЕсли; + Для Каждого СтрокаДанныхФайла Из ДанныеФайла Цикл - ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("line"); - - ТекущаяЗаписьXML.ЗаписатьАтрибут("num", ДанныеСтроки.Ключ); - ТекущаяЗаписьXML.ЗаписатьАтрибут("type", ТипСтроки); - - Покрыто = Число(ДанныеСтроки.Значение.Получить("count")) > 0; - ТекущаяЗаписьXML.ЗаписатьАтрибут("count", ДанныеСтроки.Значение.Получить("count")); - - ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover - - Если Покрыто Тогда - ПокрытыхСтрокВМетоде = ПокрытыхСтрокВМетоде + 1; - КонецЕсли; + ИмяМетода = СтрокаДанныхФайла.ИмяМетода; - ВсегоЭлементовМетода = ВсегоЭлементовМетода + 1; + Если ТекущийМетод <> ИмяМетода Тогда + КоличествоМетодов = КоличествоМетодов + 1; + ТекущийМетод = ИмяМетода; + КонецЕсли; - ОбщееВремяВыполнения = ОбщееВремяВыполнения + ДанныеСтроки.Значение.Получить("time"); + ТипСтроки = ?(ИмяМетода = "$entry", "stmt", "method"); - ВсегоСтрокВФайле = Макс(ВсегоСтрокВФайле, Число(ДанныеСтроки.Ключ)); + ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("line"); - КонецЦикла; + ТекущаяЗаписьXML.ЗаписатьАтрибут("num", СтрокаДанныхФайла.СтрокаМодуля); + ТекущаяЗаписьXML.ЗаписатьАтрибут("type", ТипСтроки); + ТекущаяЗаписьXML.ЗаписатьАтрибут("count", СтрокаДанныхФайла.КоличествоВызовов); - МетодПокрытПолностью = ДанныеПроцедуры.Количество() = ПокрытыхСтрокВМетоде; + ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover - Если МетодПокрытПолностью Тогда - КоличествоПокрытыхМетодов = КоличествоПокрытыхМетодов + 1; - КонецЕсли; + ОбщееВремяВыполнения = ОбщееВремяВыполнения + СтрокаДанныхФайла.ВремяВыполнения; - ВсегоЭлементов = ВсегоЭлементов + ВсегоЭлементовМетода; - - ВсегоПокрытоЭлементов = ВсегоПокрытоЭлементов + ПокрытыхСтрокВМетоде; + ВсегоСтрокВФайле = Макс(ВсегоСтрокВФайле, СтрокаДанныхФайла.СтрокаМодуля); + + ВсегоЭлементов = ВсегоЭлементов + 1; + ВсегоПокрытоЭлементов = ВсегоПокрытоЭлементов + СтрокаДанныхФайла.Покрыто; КонецЦикла; - + ИмяКласса = ФайлПокрытия.ИмяБезРасширения; ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("class"); ТекущаяЗаписьXML.ЗаписатьАтрибут("name", ИмяКласса); - МетрикаКласса = ПодготовитьМетрикиКласса(ВсегоЭлементов, - ВсегоПокрытоЭлементов, - КоличествоМетодов, - КоличествоПокрытыхМетодов, - ОбщееВремяВыполнения); + МетрикаКласса = ПодготовитьМетрикиКласса( + ВсегоЭлементов, + ВсегоПокрытоЭлементов, + КоличествоМетодов, + КоличествоПокрытыхМетодов, + ОбщееВремяВыполнения + ); + ЗаписатьЭлементXML("metrics", МетрикаКласса); ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // file - + ПолучитьМетрикуФайла(ВсегоСтрокВФайле, МетрикаКласса); ЗаписатьЭлементXML("metrics", МетрикаКласса); ТекущаяЗаписьXML.ЗаписатьКонецЭлемента(); // file - + ДобавитьМетрикуВМетрикуПакета(МетрикаПакета, МетрикаКласса); КонецЦикла; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260\320\237\320\276\320\272\321\200\321\213\321\202\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260\320\237\320\276\320\272\321\200\321\213\321\202\320\270\321\217.os" index e5561f3..2437384 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260\320\237\320\276\320\272\321\200\321\213\321\202\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260\320\237\320\276\320\272\321\200\321\213\321\202\320\270\321\217.os" @@ -226,16 +226,12 @@ КонецПроцедуры Функция ПрочитатьФайлСтатистики(Знач ФайлСтатистики) - - ЧтениеТекста = Новый ЧтениеТекста(ФайлСтатистики.ПолноеИмя, КодировкаТекста.UTF8); - - СтрокаJSON = ЧтениеТекста.Прочитать(); - ЧтениеТекста.Закрыть(); - Парсер = Новый ПарсерJSON(); + ЧтениеJSON = Новый ЧтениеJSON(); + ЧтениеJSON.ОткрытьФайл(ФайлСтатистики.ПолноеИмя); + ДанныеФайлаСтатистики = ПрочитатьJSON(ЧтениеJSON, Истина); + ЧтениеJSON.Закрыть(); - ДанныеФайлаСтатистики = Парсер.ПрочитатьJSON(СтрокаJSON); - Для Каждого Файл Из ДанныеФайлаСтатистики Цикл ДанныеФайла = Файл.Значение;