Skip to content

Commit d75de0c

Browse files
committed
Finish 0.5.0
2 parents acf7857 + 12aea6c commit d75de0c

17 files changed

+885
-151
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*.xml
1+
test*.xml
22
*.ospx
33

44

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ script:
4242
- docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
4343
- grep 'Результат прогона тестов <Да>' /tmp/test.log
4444
after_success:
45-
- bash <(curl -s https://codecov.io/bash) -f coverage/stat.json
45+
- git config --local core.quotepath fals
46+
- git config --local merge.ours.driver true
47+
- bash <(curl -s https://codecov.io/bash) -f coverage/coverage.xml
4648
- ./sonar-qube.sh
4749

4850
cache:

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
### 0.5.0 Первый релиз
2+
3+
#### Новое
4+
5+
* Конвертация в формат `GenericCoverage`, используемый SonarQube
6+
* Конвертация в формат `Clover`, используемый на сервера сборок `Bamboo`
7+
* Конвертация в формат `Cobertura` - популярный формат `python` и `java`
8+
9+
#### Документация
10+
11+
* Документированы экспортные методы классов

README.md

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,80 @@
1-
# oscript-clover
2-
Конвертация результата покрытия тестами в формат clover.xml
1+
# oscript-coverage
2+
3+
[![Stars](https://img.shields.io/github/stars/khorevaa/oscript-coverage.svg?label=Github%20%E2%98%85&a)](https://github.com/khorevaa/oscript-coverage/stargazers)
4+
[![Release](https://img.shields.io/github/tag/khorevaa/oscript-coverage.svg?label=Last%20release&a)](https://github.com/khorevaa/oscript-coverage/releases)
5+
[![Открытый чат проекта https://gitter.im/EvilBeaver/oscript-library](https://badges.gitter.im/khorevaa/oscript-coverage.png)](https://gitter.im/EvilBeaver/oscript-library)
6+
7+
[![Build Status](https://travis-ci.org/khorevaa/oscript-coverage.svg?branch=master)](https://travis-ci.org/khorevaa/oscript-coverage)
8+
[![Coverage Status](https://coveralls.io/repos/github/khorevaa/oscript-coverage/badge.svg?branch=master)](https://coveralls.io/github/khorevaa/oscript-coverage?branch=master)
9+
10+
# Библиотека для конвертации в результата расчета покрытия тестами в различных форматах
11+
12+
13+
## Возможности
14+
15+
- Конвертация в формат `GenericCoverage`, используемый SonarQube
16+
- Конвертация в формат `Clover`, используемый на сервера сборок `Bamboo`
17+
- Конвертация в формат `Cobertura` - популярный формат `python` и `java`
18+
19+
## Установка
20+
21+
Для установки необходимо:
22+
* Скачать файл coverage.ospx из раздела [releases](https://github.com/khorevaa/oscript-coverage/releases)
23+
* Воспользоваться командой:
24+
25+
```
26+
opm install -f <ПутьКФайлу>
27+
```
28+
или установить с хаба пакетов
29+
30+
```
31+
opm install coverage
32+
```
33+
34+
## Пример работы
35+
36+
- Файл `coverage.os`
37+
38+
```
39+
#Использовать coverage
40+
#Использовать 1commands
41+
42+
ФС.ОбеспечитьПустойКаталог("coverage");
43+
ПутьКСтат = "coverage/stat.json";
44+
45+
Команда = Новый Команда;
46+
Команда.УстановитьКоманду("oscript");
47+
Команда.ДобавитьПараметр("-encoding=utf-8");
48+
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
49+
Команда.ДобавитьПараметр("tasks/test.os"); // Файла запуска тестов
50+
Команда.ПоказыватьВыводНемедленно(Истина);
51+
52+
КодВозврата = Команда.Исполнить();
53+
54+
Файл_Стат = Новый Файл(ПутьКСтат);
55+
56+
ИмяПакета = "oscript-package";
57+
58+
ПроцессорГенерации = Новый ГенераторОтчетаПокрытия();
59+
60+
ПроцессорГенерации.ОтносительныеПути()
61+
.ФайлСтатистики(Файл_Стат.ПолноеИмя)
62+
.GenericCoverage() // // Формирование отчета в формате GenericCoverage
63+
.Cobertura() // Формирование отчета в формате Cobertura
64+
.Clover(ИмяПакета) // Формирование отчета в формате Clover
65+
.Сформировать();
66+
67+
ЗавершитьРаботу(КодВозврата);
68+
```
69+
70+
## Публичный интерфейс
71+
72+
[Документация публичного интерфейса (в разработке)](docs/README.md)
73+
74+
## Доработка
75+
76+
Доработка проводится по git-flow. Жду ваших PR.
77+
78+
## Лицензия
79+
80+
Смотри файл `LICENSE`.

codecov.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
fixes:
2+
- "/work_dir::" # move path e.g., "before/path" => "after/path"

packagedef

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,20 @@
44
//
55

66
Описание.Имя("coverage")
7-
.Версия("0.1.0")
7+
.Версия("0.5.0")
88
.Автор("Khorev Aleksey")
99
.АдресАвтора("[email protected]")
10-
.Описание("Библиотека для конвертации в результата расчета покрытия тестами в различных форматах")
10+
.Описание("Библиотека для конвертации результата расчета покрытия тестами в различные форматы")
1111
.ВерсияСреды("1.0.19")
1212
.ВключитьФайл("src")
1313
//.ВключитьФайл("docs")
1414
//.ВключитьФайл("tests")
1515
.ЗависитОт("logos")
1616
.ЗависитОт("json")
1717
.ЗависитОт("asserts")
18-
//.ЗависитОт("tempfiles")
18+
19+
.ОпределяетКласс("ГенераторОтчетаПокрытия", "src/core/Классы/ГенераторОтчетаПокрытия.os")
20+
.ОпределяетКласс("ГенераторОтчетаGenericCoverage", "src/core/Классы/ГенераторОтчетаGenericCoverage.os")
1921
.ОпределяетКласс("ГенераторОтчетаClover", "src/core/Классы/ГенераторОтчетаClover.os")
20-
//.ОпределяетКласс("КонструкторПараметров", "src/Классы/КонструкторПараметров.os")
22+
.ОпределяетКласс("ГенераторОтчетаCovertura", "src/core/Классы/ГенераторОтчетаCovertura.os")
2123
;

sonar-project.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# must be unique in a given SonarQube instance
2-
sonar.projectKey=opensource-configor
2+
sonar.projectKey=opensource-oscript-coverage
33
sonar.organization=sonar-opensource-add
44

55
# this is the name displayed in the SonarQube UI
6-
sonar.projectName=Enchanted config reader and writer for OScript
6+
sonar.projectName=Coverage convert tool for OScript
77

88
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
99
# Since SonarQube 4.2, this property is optional if sonar.modules is set.

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

Lines changed: 15 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
1-
#Использовать asserts
2-
#Использовать fs
3-
#Использовать json
4-
51
Перем ТекущаяЗаписьXML;
62
Перем ДатаГенерации;
73
Перем ИмяПроекта;
84
Перем ПутьКИсходникам;
95

10-
Процедура СоздатьОтчетClover(Знач ПутьКСтат, Знач ПутьКОтчетуClover) Экспорт
11-
12-
Файл_Стат = Новый Файл(ПутьКСтат);
13-
Ожидаем.Что(Файл_Стат.Существует(), СтрШаблон("Файл <%1> с результатами покрытия не существует!", Файл_Стат.ПолноеИмя)).ЭтоИстина();
14-
15-
ЧтениеТекста = Новый ЧтениеТекста(ПутьКСтат, КодировкаТекста.UTF8);
6+
// Выполняет формирование отчета
7+
//
8+
// Параметры:
9+
// ДанныеСтатистикиПокрытия - Соответствие - Прочитанные данные статистики OScript
10+
// ПутьКОтчетуClover - Строка - Путь к файлу отчета
11+
//
12+
Процедура Сформировать(Знач ДанныеСтатистикиПокрытия, Знач ПутьКОтчетуClover) Экспорт
1613

17-
СтрокаJSON = ЧтениеТекста.Прочитать();
18-
ЧтениеТекста.Закрыть();
19-
20-
Парсер = Новый ПарсерJSON();
21-
ДанныеПокрытия = Парсер.ПрочитатьJSON(СтрокаJSON);
14+
ДанныеПокрытия = ДанныеСтатистикиПокрытия;
2215

2316
ТекущаяЗаписьXML = Новый ЗаписьXML;
2417
ТекущаяЗаписьXML.ОткрытьФайл(ПутьКОтчетуClover);
@@ -30,8 +23,6 @@
3023
ТекущаяЗаписьXML.ЗаписатьАтрибут("clover", "1.0");
3124
ТекущаяЗаписьXML.ЗаписатьАтрибут("generated", ДатаГенерации);
3225

33-
ТаблицаМетрик = ПолучитьТаблицуМетрик();
34-
3526
ДобавитьОписаниеПроекта(ИмяПроекта);
3627
ДобавитьОписаниеПакета("main");
3728

@@ -44,18 +35,14 @@
4435

4536
ПутьКФайлу = ДанныеФайла.Получить("#path");
4637

47-
Если НЕ ФайлПодлежитПроверке(ПутьКФайлу) Тогда
48-
Продолжить;
49-
КонецЕсли;
50-
5138
ВсегоФайловВПакете = ВсегоФайловВПакете + 1;
5239

5340
ФайлПокрытия = Новый Файл(ПутьКФайлу);
5441
ИмяФайла = ФайлПокрытия.Имя;
55-
42+
КаталогФайла = ФайлПокрытия.Путь;
5643
ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("file");
5744
ТекущаяЗаписьXML.ЗаписатьАтрибут("name", ИмяФайла);
58-
ТекущаяЗаписьXML.ЗаписатьАтрибут("path", ПутьКФайлу);
45+
ТекущаяЗаписьXML.ЗаписатьАтрибут("path", КаталогФайла);
5946

6047
КоличествоМетодов = 0;
6148
КоличествоПокрытыхМетодов = 0;
@@ -166,13 +153,6 @@
166153

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

169-
Функция ФайлПодлежитПроверке(ПутьКФайлу)
170-
171-
ФайлПодходит = СтрНачинаетсяС(ПутьКФайлу, ПутьКИсходникам);
172-
173-
Возврат ФайлПодходит;
174-
175-
КонецФункции
176156

177157
Функция ПолучитьМетрикуФайла(ВсегоСтрокКода, МетрикаКласса)
178158

@@ -226,39 +206,6 @@
226206

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

229-
Функция КолонкиМетрик()
230-
231-
Возврат СтрРазделить("complexity,elements,coveradelements,conditionals,coveredconditionals,statements,coveredstatements,methods,coveredmethods,testduration", ",", Ложь);
232-
233-
КонецФункции
234-
235-
Функция ПолучитьТаблицуМетрик()
236-
237-
ТаблицаМетрик = Новый ТаблицаЗначений;
238-
239-
МассивМетрик = КолонкиМетрик();
240-
241-
Для каждого Метрика Из МассивМетрик Цикл
242-
ТаблицаМетрик.Колонки.Добавить(Метрика);
243-
КонецЦикла;
244-
245-
Возврат ТаблицаМетрик;
246-
247-
КонецФункции
248-
249-
Функция СформироватьМетрикиПоТаблице(ТаблицаМетрикКлассов, ПоляГруппировок = "")
250-
251-
ТаблицаВозврата = ТаблицаМетрикКлассов.Скопировать();
252-
253-
МассивМетрик = КолонкиМетрик();
254-
СтрокаСуммирования = СтрСоединить(МассивМетрик, ",");
255-
256-
ТаблицаВозврата.Свернуть(ПоляГруппировок, СтрокаСуммирования);
257-
258-
Возврат ТаблицаВозврата;
259-
260-
КонецФункции
261-
262209
Процедура ДобавитьЭлементXML(ИмяЭлемента, АтрибутыЭлемента)
263210

264211
ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента(ИмяЭлемента);
@@ -277,23 +224,20 @@
277224

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

280-
Процедура ДобавитьОписаниеПакета(ИмяПакета, КоличесnвоФайлов = 0)
227+
Процедура ДобавитьОписаниеПакета(ИмяПакета)
281228

282229
Атрибуты = Новый Структура("name", ИмяПакета);
283230

284231
ДобавитьЭлементXML("package", Атрибуты);
285232

286-
// Если КоличесnвоФайлов > 0 Тогда
287-
288-
// КонецЕсли;
289-
290233
КонецПроцедуры
291234

292235
Процедура ПриСозданииОбъекта(Знач КаталогИсходников, Знач ВходящееИмяПроекта)
293236
ПутьКИсходникам = Новый Файл(КаталогИсходников).ПолноеИмя;
294237
ИмяПроекта = ВходящееИмяПроекта;
295238
КонецПроцедуры
296239

297-
Функция ДатуВTimestamp(пДата = Неопределено)
298-
Возврат Формат(Число(?(ТипЗнч(пДата) = Тип("Дата"), пДата, ТекущаяДата())-Дата("19700101")),"ЧН=0; ЧГ=0");
299-
КонецФункции
240+
Функция ДатуВTimestamp(ВходящаяДата = Неопределено)
241+
Возврат Формат(Число( ?(ТипЗнч(ВходящаяДата) = Тип("Дата"), ВходящаяДата, ТекущаяДата())
242+
- Дата("19700101")), "ЧН=0; ЧГ=0");
243+
КонецФункции

0 commit comments

Comments
 (0)