Skip to content

Commit

Permalink
Merge pull request #2 from yukon39/develop
Browse files Browse the repository at this point in the history
Новая версия 0.3.0
  • Loading branch information
yukon39 authored Apr 24, 2020
2 parents e60f431 + f0de386 commit e3185a2
Show file tree
Hide file tree
Showing 9 changed files with 217 additions and 56 deletions.
3 changes: 2 additions & 1 deletion build/package/coverage-cli.packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,15 @@
#КонецОбласти

Описание.Имя("coverage-cli")
.Версия("0.2.0")
.Версия("0.3.0")
.Описание("Консольное приложение для работы с покрытием")
.ВерсияСреды("1.3.0")
.ЗависитОт("cli")
.ЗависитОт("logos")
.ЗависитОт("1commands")
.ЗависитОт("configor")
.ВключитьФайл("cmd")
.ВключитьФайл("configs")
.ВключитьФайл("internal")
.ВключитьФайл("vendor")
.ИсполняемыйФайл("cmd/main.os")
Expand Down
1 change: 1 addition & 0 deletions cmd/main.os
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
Приложение.ДобавитьКоманду("start", "Начать запись покрытия", Новый КомандаСтарт());
Приложение.ДобавитьКоманду("stop", "Остановить запись покрытия", Новый КомандаСтоп());
Приложение.ДобавитьКоманду("convert", "Конвертировать результаты покрытия", Новый КомандаКонвертировать());
Приложение.ДобавитьКоманду("lines", "Получить файлы которые надо покрыть тестами", Новый КомандаСтрокиПокрытия());

Приложение.Опция("d debug", Ложь, "Режим отладки")
.ТБулево();
Expand Down
5 changes: 5 additions & 0 deletions configs/bsl-lsp-coverage.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"diagnostics": {
"mode": "off"
}
}
16 changes: 6 additions & 10 deletions internal/cmd/Классы/КомандаСтарт.os
Original file line number Diff line number Diff line change
Expand Up @@ -107,18 +107,14 @@
ПутьКлассовCoverage = ОбъединитьПути(КаталогПриложения, "vendor", "Coverage41C-1.0", "lib");
ПутьКлассовCoverage = ОбъединитьПути(ПутьКлассовCoverage, "*");

ПутиКлассов = Новый Массив;
ПутиКлассов.Добавить(ПутьКлассовEDT);
ПутиКлассов.Добавить(ПутьКлассовCoverage);

ПутьКлассов = СтрСоединить(ПутиКлассов, ";");

Команда = Новый Команда;
ПараметрыПриложенияJava = УтилитыПриложения.НовыйПараметрыПриложенияJava();
ПараметрыПриложенияJava.ОсновнойКласс = "com.clouds42.Coverage41C";
ПараметрыПриложенияJava.ПутиКлассов.Добавить(ПутьКлассовEDT);
ПараметрыПриложенияJava.ПутиКлассов.Добавить(ПутьКлассовCoverage);

Команда = УтилитыПриложения.КомандаПриложениеJava(ПараметрыПриложенияJava);
Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь);
Команда.ПерехватыватьПотоки(Ложь);
Команда.УстановитьКоманду("java");
Команда.ДобавитьПараметр(СтрШаблон("-cp ""%1""", ПутьКлассов));
Команда.ДобавитьПараметр("com.clouds42.Coverage41C");
Команда.ДобавитьПараметр(СтрШаблон("--infobase=""%1""", ПредметОтладки));
Команда.ДобавитьПараметр(СтрШаблон("--debugger=""%1""", СерверОтладки));
Команда.ДобавитьПараметр(СтрШаблон("--out=""%1""", ИмяФайла));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

#Использовать fs

#Область КомандаПриложения

Процедура ОписаниеКоманды(Команда) Экспорт

Команда.Опция("o output", "", "XML файл с результатами покрытия")
.ТСтрока()
.Обязательный();

Команда.Опция("w workspace", "", "Каталог проекта")
.ТСтрока();

Команда.Опция("s sources", "", "Каталог исходных текстов конфигурации")
.ТСтрока();

КонецПроцедуры

Процедура ВыполнитьКоманду(Знач Команда) Экспорт

КаталогПроекта = Команда.ЗначениеОпции("workspace");
КаталогИсходниковКонфигурации = Команда.ЗначениеОпции("sources");
ФайлВывода = Команда.ЗначениеОпции("sources");

КаталогПриложения = ПараметрыПриложения.КаталогПриложения();

ПутьКлассовBSL = ОбъединитьПути(КаталогПриложения, "vendor", "BSLLSP", "*");
КонфигурацияАнализа = ОбъединитьПути(КаталогПриложения, "configs", "bsl-lsp-coverage.json");

ПараметрыПриложенияJava = УтилитыПриложения.НовыйПараметрыПриложенияJava();
ПараметрыПриложенияJava.ОсновнойКласс = "com.github._1c_syntax.bsl.languageserver.BSLLSPLauncher";
ПараметрыПриложенияJava.ПутиКлассов.Добавить(ПутьКлассовBSL);

КаталогРезультатов = ПолучитьИмяВременногоФайла();
ФС.ОбеспечитьКаталог(КаталогРезультатов);

Команда = УтилитыПриложения.КомандаПриложениеJava(ПараметрыПриложенияJava);
Команда.ПоказыватьВыводНемедленно(Истина);
Команда.ДобавитьПараметр("--analyze");
Команда.ДобавитьПараметр("--reporter genericCoverage");
Команда.ДобавитьПараметр(СтрШаблон("--srcDir ""%1""", КаталогИсходниковКонфигурации));
Команда.ДобавитьПараметр(СтрШаблон("--outputDir ""%1""", КаталогРезультатов));
Команда.ДобавитьПараметр(СтрШаблон("--configuration ""%1""", КонфигурацияАнализа));
Команда.ДобавитьПараметр("--silent");
Команда.Исполнить();

ФайлПокрытияXML = ОбъединитьПути(КаталогРезультатов, "genericCoverage.xml");

КопироватьФайл(ФайлПокрытияXML, ФайлВывода);

УдалитьФайлы(КаталогРезультатов);

КонецПроцедуры

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
// Строка - Текущая версия приложения
//
Функция ВерсияПриложения() Экспорт
Возврат "0.2.0";
Возврат "0.3.0";
КонецФункции

// Возвращает имя приложения
Expand Down
27 changes: 27 additions & 0 deletions internal/cmd/Модули/УтилитыПриложения.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

#Область ПрограммныйИнтерфейс

Функция КомандаПриложениеJava(ПараметрыПриложенияJava) Экспорт

ПутьКлассов = СтрСоединить(ПараметрыПриложенияJava.ПутиКлассов, ";");

Команда = Новый Команда;
Команда.УстановитьКоманду("java");
Команда.ДобавитьПараметр(СтрШаблон("-cp ""%1""", ПутьКлассов));
Команда.ДобавитьПараметр(ПараметрыПриложенияJava.ОсновнойКласс);

Возврат Команда;

КонецФункции

Функция НовыйПараметрыПриложенияJava() Экспорт

ПараметрыПриложенияJava = Новый Структура;
ПараметрыПриложенияJava.Вставить("ОсновнойКласс", "");
ПараметрыПриложенияJava.Вставить("ПутиКлассов", Новый Массив);

Возврат ПараметрыПриложенияJava;

КонецФункции

#КонецОбласти
55 changes: 11 additions & 44 deletions internal/converter/Классы/Конвертер.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

#Использовать "../../csv"
#Использовать "../../coverage"

Перем ФайлПокрытия;
Перем ФайлJSON;
Expand Down Expand Up @@ -88,7 +89,7 @@

ЧтениеCSV.Закрыть();

ЗаписатьДанныеПокрытия(ФайлJSON, ДанныеПокрытия);
ФорматДанныеПокрытия.ЗаписатьДанныеПокрытия(ФайлJSON, ДанныеПокрытия);

КонецПроцедуры

Expand Down Expand Up @@ -149,54 +150,20 @@
ДанныеПокрытияМодуля = ДанныеПокрытия.Получить(ПрограммныйМодуль.Идентификатор);
Если ДанныеПокрытияМодуля = Неопределено Тогда

ДанныеПокрытияМодуля = Новый Структура;
ДанныеПокрытияМодуля.Вставить("ModuleId", ПрограммныйМодуль.Идентификатор);
ДанныеПокрытияМодуля.Вставить("SourcePath", ПрограммныйМодуль.Путь);
ДанныеПокрытияМодуля.Вставить("ObjectId", СтрокаПокрытия.ObjectId);
ДанныеПокрытияМодуля.Вставить("PropertyId", СтрокаПокрытия.PropertyId);
ДанныеПокрытияМодуля.Вставить("ModuleName", СтрокаПокрытия.ModuleName);

ИмяРасширения = СтрокаПокрытия.ExtentionName;
Если ЗначениеЗаполнено(ИмяРасширения) Тогда
ДанныеПокрытияМодуля.Вставить("ExtentionName", ИмяРасширения);
КонецЕсли;

URLМодуля = СтрокаПокрытия.URL;
Если ЗначениеЗаполнено(URLМодуля) Тогда
ДанныеПокрытияМодуля.Вставить("URL", URLМодуля);
КонецЕсли;

ДанныеПокрытияМодуля.Вставить("LineNo", Новый Соответствие);
ДанныеПокрытияМодуля = ФорматДанныеПокрытия.НовыйДанныеПокрытияМодуля();
ДанныеПокрытияМодуля.ModuleId = ПрограммныйМодуль.Идентификатор;
ДанныеПокрытияМодуля.SourcePath = ПрограммныйМодуль.Путь;
ДанныеПокрытияМодуля.ObjectId = СтрокаПокрытия.ObjectId;
ДанныеПокрытияМодуля.PropertyId = СтрокаПокрытия.PropertyId;
ДанныеПокрытияМодуля.ModuleName = СтрокаПокрытия.ModuleName;
ДанныеПокрытияМодуля.ExtentionName = СтрокаПокрытия.ExtentionName;
ДанныеПокрытияМодуля.URL = СтрокаПокрытия.URL;

ДанныеПокрытия.Вставить(ПрограммныйМодуль.Идентификатор, ДанныеПокрытияМодуля);

КонецЕсли;

ДанныеПокрытияМодуля.LineNo.Вставить(СтрокаПокрытия.LineNo, СтрокаПокрытия.LineNo);

КонецПроцедуры

Процедура ЗаписатьДанныеПокрытия(ФайлJSON, ДанныеПокрытия)

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ФайлJSON);
ЗаписьJSON.ЗаписатьНачалоМассива();

Для каждого КлючИЗначение Из ДанныеПокрытия Цикл

ДанныеПокрытияМодуля = КлючИЗначение.Значение;
НомераСтрок = Новый Массив;
Для Каждого КлючИЗначениеНомерСтроки Из ДанныеПокрытияМодуля.LineNo Цикл
НомераСтрок.Добавить(КлючИЗначениеНомерСтроки.Значение);
КонецЦикла;
ДанныеПокрытияМодуля.LineNo = НомераСтрок;

ЗаписатьJSON(ЗаписьJSON, КлючИЗначение.Значение);

КонецЦикла;

ЗаписьJSON.ЗаписатьКонецМассива();
ЗаписьJSON.Закрыть();
ДанныеПокрытияМодуля.LineNo.Вставить(СтрокаПокрытия.LineNo, Истина);

КонецПроцедуры

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@

#Область ПрограммныйИнтерфейс

Функция ПрочитатьДанныеПокрытия(ФайлПокрытияJSON) Экспорт

ДанныеПокрытия = Новый Массив;

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл(ФайлПокрытияJSON, КодировкаТекста.UTF8);
ЧтениеJSON.Прочитать();

Пока ЧтениеJSON.Прочитать() И ЧтениеJSON.ТипТекущегоЗначения = ТипЗначенияJSON.НачалоОбъекта Цикл

ДанныеПокрытияМодуля = ПрочитатьJSON(ЧтениеJSON);

НомераСтрок = Новый Соответствие;
Для Каждого СтрокаПокрытия Из ДанныеПокрытияМодуля.LineNo Цикл
НомераСтрок.Вставить(СтрокаПокрытия.lineNumber, СтрокаПокрытия.covered);
КонецЦикла;
ДанныеПокрытияМодуля.LineNo = НомераСтрок;

КонецЦикла;

ЧтениеJSON.Закрыть();

Возврат ДанныеПокрытия;

КонецФункции

Процедура ЗаписатьДанныеПокрытия(ФайлПокрытияJSON, ДанныеПокрытия) Экспорт

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ФайлПокрытияJSON);
ЗаписьJSON.ЗаписатьНачалоМассива();

Для каждого КлючИЗначение Из ДанныеПокрытия Цикл

ДанныеПокрытияМодуля = КлючИЗначение.Значение;
НомераСтрок = Новый Массив;
Для Каждого КлючИЗначениеНомерСтроки Из ДанныеПокрытияМодуля.LineNo Цикл

СтрокаПокрытия = Новый Структура;
СтрокаПокрытия.Вставить("lineNumber", КлючИЗначениеНомерСтроки.Ключ);
СтрокаПокрытия.Вставить("covered", КлючИЗначениеНомерСтроки.Значение);

НомераСтрок.Добавить(СтрокаПокрытия);

КонецЦикла;
ДанныеПокрытияМодуля.LineNo = НомераСтрок;

ЗаписатьJSON(ЗаписьJSON, КлючИЗначение.Значение);

КонецЦикла;

ЗаписьJSON.ЗаписатьКонецМассива();
ЗаписьJSON.Закрыть();

КонецПроцедуры

Функция ПрочитатьДанныеПокрытияXML(ФайлПокрытияXML) Экспорт

ДанныеПокрытия = Новый Массив;

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ФайлПокрытияXML);
ЧтениеXML.ПерейтиКСодержимому();

ОписаниеТипаБулево = Новый ОписаниеТипов("Булево");
Пока ЧтениеXML.Прочитать() И ЧтениеXML.ЛокальноеИмя = "file" Цикл

ДанныеПокрытияМодуля = НовыйДанныеПокрытияМодуля();
ДанныеПокрытияМодуля.SourcePath = ЧтениеXML.ПолучитьАтрибут("path");

Пока ЧтениеXML.Прочитать() И ЧтениеXML.ЛокальноеИмя = "lineToCover" Цикл

lineNumber = ЧтениеXML.ПолучитьАтрибут("lineNumber");
covered = ОписаниеТипаБулево.ПривестиЗначение(ЧтениеXML.ПолучитьАтрибут("covered"));
ДанныеПокрытияМодуля.LineNo.Вставить(lineNumber, covered);

КонецЦикла;

ДанныеПокрытия.Добавить(ДанныеПокрытияМодуля);

КонецЦикла;

ЧтениеXML.Закрыть();

Возврат ДанныеПокрытия;

КонецФункции

Функция НовыйДанныеПокрытияМодуля() Экспорт

ДанныеПокрытияМодуля = Новый Структура;
ДанныеПокрытияМодуля.Вставить("ModuleId", "");
ДанныеПокрытияМодуля.Вставить("SourcePath", "");
ДанныеПокрытияМодуля.Вставить("ObjectId", "");
ДанныеПокрытияМодуля.Вставить("PropertyId", "");
ДанныеПокрытияМодуля.Вставить("ModuleName", "");
ДанныеПокрытияМодуля.Вставить("ExtentionName", "");
ДанныеПокрытияМодуля.Вставить("URL", "");
ДанныеПокрытияМодуля.Вставить("LineNo", Новый Соответствие);

Возврат ДанныеПокрытияМодуля;

КонецФункции

#КонецОбласти

0 comments on commit e3185a2

Please sign in to comment.