Skip to content

Commit

Permalink
Merge pull request #19 from yukon39/develop
Browse files Browse the repository at this point in the history
Новая версия 0.9.0
  • Loading branch information
yukon39 authored May 14, 2020
2 parents 6223eb9 + f16f01c commit b1448ea
Show file tree
Hide file tree
Showing 358 changed files with 3,429 additions and 1,184 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.vscode/*
.temp/*
vendor/
29 changes: 28 additions & 1 deletion api/convert-config-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,33 @@
"SourcePath"
],
"additionalProperties": false
},
"ExternalReportOrDataProcessor": {
"type": "object",
"properties": {
"URL": {
"type": "string"
},
"URLType": {
"type": "string",
"default": "file",
"enum": [
"file",
"raw"
]
},
"SourcePath": {
"type": "string"
},
"SourceFormat": {
"$ref": "#/definitions/SourceFormats"
}
},
"required": [
"URL",
"SourcePath"
],
"additionalProperties": false
}
},
"type": "object",
Expand All @@ -57,7 +84,7 @@
"ExternalReportsAndDataProcessors": {
"type": "array",
"items": {
"type": "object"
"$ref": "#/definitions/ExternalReportOrDataProcessor"
}
}
}
Expand Down
60 changes: 56 additions & 4 deletions build/package/coverage-cli.packagedef
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@

#Использовать "../../internal/cmd"

#Область ОбработчикиСобытий

Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
Expand All @@ -9,17 +11,30 @@
КаталогПроекта = Файл.ПолноеИмя;

КаталогВнешнихПоставщиков = ОбъединитьПути(КаталогПроекта, "vendor");

СкачатьПоставляемыйCoverage41C(КаталогВнешнихПоставщиков);
СкачатьПоставляемыйBSLLS(КаталогВнешнихПоставщиков);

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

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

#Область СлужебныеПроцедурыИФункции

Процедура СкачатьПоставляемыйCoverage41C(КаталогВнешнихПоставщиков)

Файл = Новый Файл(ОбъединитьПути(КаталогВнешнихПоставщиков, "Coverage41C-1.1"));
Если Файл.Существует() Тогда
Возврат;
КонецЕсли;

ИмяРепозитория = "proDOOMman/Coverage41C";
НомерРелиза = "v1.0";
ИмяРесурса = "Coverage41C-1.0.zip";

ВременныйФайл = ПолучитьИмяВременногоФайла("zip");

HTTPСоединение = Новый HTTPСоединение("https://github.com", , , , , 300);
HTTPЗапрос = Новый HTTPЗапрос("proDOOMman/Coverage41C/releases/download/v1.0/Coverage41C-1.0.zip");
HTTPСоединение.Получить(HTTPЗапрос, ВременныйФайл);
СкачатьРесурсРелизаGitHub(ИмяРепозитория, НомерРелиза, ИмяРесурса, ВременныйФайл);

ЧтениеZip = Новый ЧтениеZipФайла(ВременныйФайл);
ЧтениеZip.ИзвлечьВсе(КаталогВнешнихПоставщиков);
Expand All @@ -29,10 +44,41 @@

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

Процедура СкачатьПоставляемыйBSLLS(КаталогВнешнихПоставщиков)

Файл = Новый Файл(ОбъединитьПути(КаталогВнешнихПоставщиков, "bsl-language-server"));
Если Файл.Существует() Тогда
Возврат;
КонецЕсли;

ИмяРепозитория = "1c-syntax/bsl-language-server";
НомерРелиза = "v0.15.0-RA1";
ИмяРесурса = "bsl-language-server-0.15.0-RA1.jar";
КаталогBSLLS = Файл.ПолноеИмя;

СоздатьКаталог(КаталогBSLLS);
ВременныйФайл = ПолучитьИмяВременногоФайла("jar");

СкачатьРесурсРелизаGitHub(ИмяРепозитория, НомерРелиза, ИмяРесурса, ВременныйФайл);

ПереместитьФайл(ВременныйФайл, ОбъединитьПути(КаталогBSLLS, ИмяРесурса));
УдалитьФайлы(ВременныйФайл);

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

Процедура СкачатьРесурсРелизаGitHub(ИмяРепозитория, НомерРелиза, ИмяРесурса, ИмяФайла)

АдресРесурса = СтрШаблон("%1/releases/download/%2/%3", ИмяРепозитория, НомерРелиза, ИмяРесурса);
HTTPСоединение = Новый HTTPСоединение("https://github.com", , , , , 300);
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
HTTPСоединение.Получить(HTTPЗапрос, ИмяФайла);

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

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

Описание.Имя("coverage-cli")
.Версия("0.8.0")
.Версия(ПараметрыПриложения.ВерсияПриложения())
.Описание("Консольное приложение для работы с покрытием")
.ВерсияСреды("1.3.0")
.ЗависитОт("cli")
Expand All @@ -42,8 +88,14 @@
.ВключитьФайл("cmd")
.ВключитьФайл("configs")
.ВключитьФайл("examples")
.ВключитьФайл("pkg")
.ВключитьФайл("internal")
.ВключитьФайл("vendor")
.ВключитьФайл("README.md")
.ОпределяетМодуль("СтартерBSLLS", "pkg/bsllslauncher/Модули/СтартерBSLLS.os")
.ОпределяетКласс("Конвертер", "pkg/converter/Классы/Конвертер.os")
.ОпределяетМодуль("ФорматыИсходныхФайлов", "pkg/converter/Модули/ФорматыИсходныхФайлов.os")
.ОпределяетМодуль("ФорматДанныеПокрытия", "pkg/coverage/Модули/ФорматДанныеПокрытия.os")
.ОпределяетКласс("МенеджерПокрытияEDT", "pkg/edtcoverage/Классы/МенеджерПокрытияEDT.os")
.ИсполняемыйФайл("cmd/main.os")
;
2 changes: 1 addition & 1 deletion build/sonar-project.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
sonar.projectKey=coverage-cli

sonar.sources=cmd,internal
sonar.sources=cmd,internal,pkg

sonar.sourceEncoding=UTF-8
18 changes: 10 additions & 8 deletions cmd/main.os
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@

#Использовать "../internal/cmd"
#Использовать "../internal/cmd/internal/localization"
#Использовать cli

#Область Приложение

Процедура ВыполнитьПриложение()

ЛокализованныеСтроки = ЛокализованныеРесурсыПриложение.ЛокализованныеСтроки();

ИмяПриложения = ПараметрыПриложения.ИмяПриложения();
ВерсияПриложения = ПараметрыПриложения.ВерсияПриложения();

Приложение = Новый КонсольноеПриложение(ИмяПриложения,
"Приложение для работы с покрытием кода 1С:Предприятия");
Приложение = Новый КонсольноеПриложение(ИмяПриложения, ЛокализованныеСтроки.Приложение);

Приложение.Версия("version", ВерсияПриложения);

Приложение.ДобавитьКоманду("start", "Начать запись покрытия", Новый КомандаСтарт());
Приложение.ДобавитьКоманду("stop", "Остановить запись покрытия", Новый КомандаСтоп());
Приложение.ДобавитьКоманду("convert", "Конвертировать результаты покрытия", Новый КомандаКонвертировать());
Приложение.ДобавитьКоманду("lines", "Получить файлы которые надо покрыть тестами", Новый КомандаСтрокиПокрытия());
Приложение.ДобавитьКоманду("report", "Сформировать отчет покрытия", Новый КомандаОтчетПокрытия());
Приложение.ДобавитьКоманду("start", ЛокализованныеСтроки.КомандаСтарт, Новый КомандаСтарт());
Приложение.ДобавитьКоманду("stop", ЛокализованныеСтроки.КомандаСтоп, Новый КомандаСтоп());
Приложение.ДобавитьКоманду("convert", ЛокализованныеСтроки.КомандаКонвертировать, Новый КомандаКонвертировать());
Приложение.ДобавитьКоманду("lines", ЛокализованныеСтроки.КомандаСтрокиПокрытия, Новый КомандаСтрокиПокрытия());
Приложение.ДобавитьКоманду("report", ЛокализованныеСтроки.КомандаОтчетПокрытия, Новый КомандаОтчетПокрытия());

Приложение.Опция("d debug", Ложь, "Режим отладки")
Приложение.Опция("d debug", Ложь, ЛокализованныеСтроки.РежимОтладки)
.ТБулево();

Приложение.Запустить();
Expand Down
172 changes: 172 additions & 0 deletions examples/coverage.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@

#Использовать 1commands
#Использовать cli
#Использовать coverage-cli
#Использовать fs

Перем СерверОтладки;
Перем ИмяКластера;
Перем ИмяИнформационнойБазы;

#Область Приложение

Процедура ВыполнитьПриложение()

Приложение = Новый КонсольноеПриложение("coverage", "Сбор покрытия средствами EDT");

Приложение.Опция("u debugger", "http://localhost:1550", "Сервер отладки")
.ТСтрока();

Приложение.Опция("i infobase", "coverage_test", "Имя информационной базы")
.ТСтрока();

Приложение.Опция("c cluster", "localhost", "Имя кластера")
.ТСтрока();

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

Приложение.Опция("s sources", "src/cf", "Каталог с исходниками")
.ТСтрока();

Приложение.Опция("f format", "XML", "Формат исходников (XML или EDT)")
.ТСтрока();

Приложение.Опция("vbparms", "VBParams.json", "Конфигурационный файл тестирования")
.ТСтрока();

Приложение.Опция("sonarscanner", "", "Каталог сканера SonarQube")
.ТСтрока();

Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
Приложение.Запустить();

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

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

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

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

// Общие переменные
СерверОтладки = Команда.ЗначениеОпции("debugger");
ИмяИнформационнойБазы = Команда.ЗначениеОпции("infobase");
ИмяКластера = Команда.ЗначениеОпции("cluster");
КаталогПроекта = Команда.ЗначениеОпции("workspace");
КаталогИсходныхФайлов = Команда.ЗначениеОпции("sources");
ФорматИсходныхФайлов = Команда.ЗначениеОпции("format");
ПараметрыVanessa = Команда.ЗначениеОпции("vbparms");
ПутьКСканеру = Команда.ЗначениеОпции("sonarscanner");

Если ЗначениеЗаполнено(КаталогПроекта) Тогда
КаталогИсходныхФайлов = ОбъединитьПути(КаталогПроекта, КаталогИсходныхФайлов);
КонецЕсли;

ФайлПокрытияCSV = ".coverage/coverage.csv";
ФайлПокрытияXML = ".coverage/coveredLines.xml";
ФайлСтрокиXML = ".coverage/linesToCover.xml";

// Подготовка рабочей области
ФС.ОбеспечитьПустойКаталог(".coverage");

// Запуск сбора покрытия
МенеджерПокрытия = Новый МенеджерПокрытияEDT();
МенеджерПокрытия.НайтиКаталогEDT();
МенеджерПокрытия.УстановитьПараметрыОтладки(ИмяИнформационнойБазы, СерверОтладки);

ИдентификаторПроцесса = МенеджерПокрытия.ЗапуститьСборПокрытия(ФайлПокрытияCSV);

// Тестирование проекта
ПараметрыКоманды = Новый Массив;
ПараметрыКоманды.Добавить(СтрШаблон("--ibconnection %1", СтрокаСоединения()));
ПараметрыКоманды.Добавить(СтрШаблон("--vanessasettings %1", ПараметрыVanessa));
ПараметрыКоманды.Добавить(СтрШаблон("--additional ""/DEBUG -http -attach /DEBUGGERURL %1""", СерверОтладки));
ЗапуститьVRunner("vanessa", ПараметрыКоманды);

// Остановка сбора покрытия
МенеджерПокрытия.ОстановитьСборПокрытия(ИдентификаторПроцесса, ФайлПокрытияCSV);

// Разбор результатов покрытия
Конвертер = Новый Конвертер(КаталогПроекта);
Конвертер.УстановитьКаталогИсходниковКонфигурации(КаталогИсходныхФайлов, ФорматИсходныхФайлов);
Конвертер.УстановитьФайлПокрытия(ФайлПокрытияCSV);
Конвертер.УстановитьФайлВывода(ФайлПокрытияXML);
Конвертер.РазобратьПокрытие();

// Получение строк для покрытия
СтартерBSLLS.ПолучитьОтчетGenericCoverage(КаталогПроекта, КаталогИсходныхФайлов, ФайлСтрокиXML);

// Запуск проверки SQ
Если ЗначениеЗаполнено(ПутьКСканеру) Тогда

ФайлыПокрытия = Новый Массив;
ФайлыПокрытия.Добавить(ФайлПокрытияXML);
ФайлыПокрытия.Добавить(ФайлСтрокиXML);

ФайлыПокрытияСтр = СтрСоединить(ФайлыПокрытия, ",");

ПараметрыКоманды = Новый Массив;
ПараметрыКоманды.Добавить(СтрШаблон("-Dsonar.coverageReportPaths=%1", ФайлыПокрытияСтр));

ЗапуститьSonarScanner(ПутьКСканеру, ПараметрыКоманды);

КонецЕсли;

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

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

#Область СлужебныеПроцедурыИФункции

Процедура ЗапуститьVRunner(Команда, ПараметрыКоманды)

СтрокаСоединения = СтрокаСоединения();

VRunner = Новый Команда();
VRunner.ПоказыватьВыводНемедленно(Истина);
VRunner.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
VRunner.УстановитьКоманду("vrunner");
VRunner.ДобавитьПараметр(Команда);
VRunner.ДобавитьПараметры(ПараметрыКоманды);
VRunner.Исполнить();

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

Функция СтрокаСоединения()
Возврат СтрШаблон("/S%1/%2", ИмяКластера, ИмяИнформационнойБазы);
КонецФункции

Процедура ЗапуститьSonarScanner(ИмяКаталога, ПараметрыКоманды)

SonarScanner_bin = ОбъединитьПути(ИмяКаталога, "bin", "sonar-scanner");

SonarScanner_opts = Новый Массив;
SonarScanner_opts.Добавить("-XX:+UseG1GC");
SonarScanner_opts.Добавить("-XX:MaxGCPauseMillis=200");
SonarScanner_opts.Добавить("-Dfile.encoding=UTF-8");

SonarScanner_env = Новый Соответствие;
SonarScanner_env.Вставить("SONAR_SCANNER_OPTS", СтрСоединить(SonarScanner_opts, " "));

SonarScanner = Новый Команда();
SonarScanner.ПоказыватьВыводНемедленно(Истина);
SonarScanner.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
SonarScanner.УстановитьКоманду(SonarScanner_bin);
SonarScanner.ДобавитьПараметры(ПараметрыКоманды);
SonarScanner.УстановитьПеременныеСреды(SonarScanner_env);
SonarScanner.Исполнить();

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

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

Попытка
ВыполнитьПриложение();
Исключение

ИнформацияОбОшибке = ИнформацияОбОшибке();
Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЗавершитьРаботу(-1);

КонецПопытки;
Loading

0 comments on commit b1448ea

Please sign in to comment.