Skip to content

Commit

Permalink
Finish 0.5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
khorevaa committed May 15, 2018
2 parents acf7857 + 12aea6c commit d75de0c
Show file tree
Hide file tree
Showing 17 changed files with 885 additions and 151 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
*.xml
test*.xml
*.ospx


Expand Down
4 changes: 3 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ script:
- 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
- grep 'Результат прогона тестов <Да>' /tmp/test.log
after_success:
- bash <(curl -s https://codecov.io/bash) -f coverage/stat.json
- git config --local core.quotepath fals
- git config --local merge.ours.driver true
- bash <(curl -s https://codecov.io/bash) -f coverage/coverage.xml
- ./sonar-qube.sh

cache:
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
### 0.5.0 Первый релиз

#### Новое

* Конвертация в формат `GenericCoverage`, используемый SonarQube
* Конвертация в формат `Clover`, используемый на сервера сборок `Bamboo`
* Конвертация в формат `Cobertura` - популярный формат `python` и `java`

#### Документация

* Документированы экспортные методы классов
82 changes: 80 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,80 @@
# oscript-clover
Конвертация результата покрытия тестами в формат clover.xml
# oscript-coverage

[![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)
[![Release](https://img.shields.io/github/tag/khorevaa/oscript-coverage.svg?label=Last%20release&a)](https://github.com/khorevaa/oscript-coverage/releases)
[![Открытый чат проекта https://gitter.im/EvilBeaver/oscript-library](https://badges.gitter.im/khorevaa/oscript-coverage.png)](https://gitter.im/EvilBeaver/oscript-library)

[![Build Status](https://travis-ci.org/khorevaa/oscript-coverage.svg?branch=master)](https://travis-ci.org/khorevaa/oscript-coverage)
[![Coverage Status](https://coveralls.io/repos/github/khorevaa/oscript-coverage/badge.svg?branch=master)](https://coveralls.io/github/khorevaa/oscript-coverage?branch=master)

# Библиотека для конвертации в результата расчета покрытия тестами в различных форматах


## Возможности

- Конвертация в формат `GenericCoverage`, используемый SonarQube
- Конвертация в формат `Clover`, используемый на сервера сборок `Bamboo`
- Конвертация в формат `Cobertura` - популярный формат `python` и `java`

## Установка

Для установки необходимо:
* Скачать файл coverage.ospx из раздела [releases](https://github.com/khorevaa/oscript-coverage/releases)
* Воспользоваться командой:

```
opm install -f <ПутьКФайлу>
```
или установить с хаба пакетов

```
opm install coverage
```

## Пример работы

- Файл `coverage.os`

```
#Использовать coverage
#Использовать 1commands
ФС.ОбеспечитьПустойКаталог("coverage");
ПутьКСтат = "coverage/stat.json";
Команда = Новый Команда;
Команда.УстановитьКоманду("oscript");
Команда.ДобавитьПараметр("-encoding=utf-8");
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
Команда.ДобавитьПараметр("tasks/test.os"); // Файла запуска тестов
Команда.ПоказыватьВыводНемедленно(Истина);
КодВозврата = Команда.Исполнить();
Файл_Стат = Новый Файл(ПутьКСтат);
ИмяПакета = "oscript-package";
ПроцессорГенерации = Новый ГенераторОтчетаПокрытия();
ПроцессорГенерации.ОтносительныеПути()
.ФайлСтатистики(Файл_Стат.ПолноеИмя)
.GenericCoverage() // // Формирование отчета в формате GenericCoverage
.Cobertura() // Формирование отчета в формате Cobertura
.Clover(ИмяПакета) // Формирование отчета в формате Clover
.Сформировать();
ЗавершитьРаботу(КодВозврата);
```

## Публичный интерфейс

[Документация публичного интерфейса (в разработке)](docs/README.md)

## Доработка

Доработка проводится по git-flow. Жду ваших PR.

## Лицензия

Смотри файл `LICENSE`.
2 changes: 2 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fixes:
- "/work_dir::" # move path e.g., "before/path" => "after/path"
10 changes: 6 additions & 4 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@
//

Описание.Имя("coverage")
.Версия("0.1.0")
.Версия("0.5.0")
.Автор("Khorev Aleksey")
.АдресАвтора("[email protected]")
.Описание("Библиотека для конвертации в результата расчета покрытия тестами в различных форматах")
.Описание("Библиотека для конвертации результата расчета покрытия тестами в различные форматы")
.ВерсияСреды("1.0.19")
.ВключитьФайл("src")
//.ВключитьФайл("docs")
//.ВключитьФайл("tests")
.ЗависитОт("logos")
.ЗависитОт("json")
.ЗависитОт("asserts")
//.ЗависитОт("tempfiles")

.ОпределяетКласс("ГенераторОтчетаПокрытия", "src/core/Классы/ГенераторОтчетаПокрытия.os")
.ОпределяетКласс("ГенераторОтчетаGenericCoverage", "src/core/Классы/ГенераторОтчетаGenericCoverage.os")
.ОпределяетКласс("ГенераторОтчетаClover", "src/core/Классы/ГенераторОтчетаClover.os")
//.ОпределяетКласс("КонструкторПараметров", "src/Классы/КонструкторПараметров.os")
.ОпределяетКласс("ГенераторОтчетаCovertura", "src/core/Классы/ГенераторОтчетаCovertura.os")
;
4 changes: 2 additions & 2 deletions sonar-project.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# must be unique in a given SonarQube instance
sonar.projectKey=opensource-configor
sonar.projectKey=opensource-oscript-coverage
sonar.organization=sonar-opensource-add

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

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
Expand Down
86 changes: 15 additions & 71 deletions src/core/Классы/ГенераторОтчетаClover.os
Original file line number Diff line number Diff line change
@@ -1,24 +1,17 @@
#Использовать asserts
#Использовать fs
#Использовать json

Перем ТекущаяЗаписьXML;
Перем ДатаГенерации;
Перем ИмяПроекта;
Перем ПутьКИсходникам;

Процедура СоздатьОтчетClover(Знач ПутьКСтат, Знач ПутьКОтчетуClover) Экспорт

Файл_Стат = Новый Файл(ПутьКСтат);
Ожидаем.Что(Файл_Стат.Существует(), СтрШаблон("Файл <%1> с результатами покрытия не существует!", Файл_Стат.ПолноеИмя)).ЭтоИстина();

ЧтениеТекста = Новый ЧтениеТекста(ПутьКСтат, КодировкаТекста.UTF8);
// Выполняет формирование отчета
//
// Параметры:
// ДанныеСтатистикиПокрытия - Соответствие - Прочитанные данные статистики OScript
// ПутьКОтчетуClover - Строка - Путь к файлу отчета
//
Процедура Сформировать(Знач ДанныеСтатистикиПокрытия, Знач ПутьКОтчетуClover) Экспорт

СтрокаJSON = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

Парсер = Новый ПарсерJSON();
ДанныеПокрытия = Парсер.ПрочитатьJSON(СтрокаJSON);
ДанныеПокрытия = ДанныеСтатистикиПокрытия;

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

ТаблицаМетрик = ПолучитьТаблицуМетрик();

ДобавитьОписаниеПроекта(ИмяПроекта);
ДобавитьОписаниеПакета("main");

Expand All @@ -44,18 +35,14 @@

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

Если НЕ ФайлПодлежитПроверке(ПутьКФайлу) Тогда
Продолжить;
КонецЕсли;

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

ФайлПокрытия = Новый Файл(ПутьКФайлу);
ИмяФайла = ФайлПокрытия.Имя;

КаталогФайла = ФайлПокрытия.Путь;
ТекущаяЗаписьXML.ЗаписатьНачалоЭлемента("file");
ТекущаяЗаписьXML.ЗаписатьАтрибут("name", ИмяФайла);
ТекущаяЗаписьXML.ЗаписатьАтрибут("path", ПутьКФайлу);
ТекущаяЗаписьXML.ЗаписатьАтрибут("path", КаталогФайла);

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

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

Функция ФайлПодлежитПроверке(ПутьКФайлу)

ФайлПодходит = СтрНачинаетсяС(ПутьКФайлу, ПутьКИсходникам);

Возврат ФайлПодходит;

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

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

Expand Down Expand Up @@ -226,39 +206,6 @@

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

Функция КолонкиМетрик()

Возврат СтрРазделить("complexity,elements,coveradelements,conditionals,coveredconditionals,statements,coveredstatements,methods,coveredmethods,testduration", ",", Ложь);

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

Функция ПолучитьТаблицуМетрик()

ТаблицаМетрик = Новый ТаблицаЗначений;

МассивМетрик = КолонкиМетрик();

Для каждого Метрика Из МассивМетрик Цикл
ТаблицаМетрик.Колонки.Добавить(Метрика);
КонецЦикла;

Возврат ТаблицаМетрик;

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

Функция СформироватьМетрикиПоТаблице(ТаблицаМетрикКлассов, ПоляГруппировок = "")

ТаблицаВозврата = ТаблицаМетрикКлассов.Скопировать();

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

ТаблицаВозврата.Свернуть(ПоляГруппировок, СтрокаСуммирования);

Возврат ТаблицаВозврата;

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

Процедура ДобавитьЭлементXML(ИмяЭлемента, АтрибутыЭлемента)

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

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

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

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

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

// Если КоличесnвоФайлов > 0 Тогда

// КонецЕсли;

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

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

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

0 comments on commit d75de0c

Please sign in to comment.