#ONECICD-91

- Добавил поддержку HTML отчета
 - Добавил примеры сформированных отчетов
 - Добавил запись README
This commit is contained in:
Maximov Valery
2019-05-07 17:51:42 +03:00
parent 5794a7c024
commit 2b649a62b7
4 changed files with 166 additions and 1 deletions
+7
View File
@@ -40,3 +40,10 @@ SonarQube может создавать несколько замечаний п
### Отчет по проектам
При необходимоси получить отчет по проектам (по интересующим метрикам) и использовать его в других приложениях (либо рассылать по почте) можно вручную собирать информацию по страницам SonarQube, но проще использовать `sonar-helper`, вызвав команду `report` и передав ей информации для авторизации, список проектов и интересующих метрик.
На данный момент поддерживаются следующие варианты формирования отчета:
- **JSON** - формируется отчет в формате json, метрики выгружаются дважды - для идентификатора метрики и для русского представления
- **HTML** - формируется отчет в формате html, метрики выгнржаются только для русского представления
Примеры отчетов находятся в каталоге [examples](/examples)
+61
View File
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Отчет</title>
<meta name="description" content="Отчет">
</head>
<body>
<div>
<p><b>Сводная информация</b></p>
<p>
<b>Адрес сервера: </b>https://my.sonar.server:9000<br/>
<b>Дата формирования: </b>06.05.2019 14:17:17<br/>
<b>Количество отчетов: </b>2<br/>
</p>
</div>
<div>
<table border="1">
<caption><b>Проект: </b>bsp</caption>
<tr>
<th>Метрика</th>
<th>Значение</th>
</tr>
<tr>
<td>Технический долг</td>
<td>16734</td>
</tr>
<tr>
<td>Ошибки</td>
<td>0</td>
</tr>
<tr>
<td>Строки кода</td>
<td>112092</td>
</tr>
</table>
</div>
<div>
<table border="1">
<caption><b>Проект: </b>mdm</caption>
<tr>
<th>Метрика</th>
<th>Значение</th>
</tr>
<tr>
<td>Технический долг</td>
<td>30632</td>
</tr>
<tr>
<td>Ошибки</td>
<td>110</td>
</tr>
<tr>
<td>Строки кода</td>
<td>147102</td>
</tr>
</table>
</div>
</body>
</html>
+28
View File
@@ -0,0 +1,28 @@
{
"ДатаФормирования": "2019-05-06T14:17:17.5125591",
"СерверSonarQube": "http:\/\/my.sonar.server:9000",
"Количество": 2,
"Отчеты": [{
"КлючПроекта": "bsp",
"Метрики": {
"Технический_долг": "16734",
"sqale_index": "16734",
"Ошибки": "0",
"bugs": "0",
"Строки_кода": "112092",
"ncloc": "112092"
}
},
{
"КлючПроекта": "mdm",
"Метрики": {
"Технический_долг": "30632",
"sqale_index": "30632",
"Строки_кода": "147102",
"ncloc": "147102",
"Ошибки": "110",
"bugs": "110"
}
}
]
}
@@ -53,6 +53,7 @@
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--report-path", "Путь для сохранения отчета");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--report-format", "Формат сохраняемого отчета.
| Возможные варианнты:
| HTML - создает html - страницу
| JSON - выгружает файл json
|
| По умолчанию используется формат JSON");
@@ -216,7 +217,7 @@
Функция ПолучитьПравильныйФорматОтчета(Знач ВыбранныйФорматОтчета, ОшибокНет)
ВРЕГВыбранныйФорматОтчета = ВРЕГ(ВыбранныйФорматОтчета);
Если НЕ (ВРЕГВыбранныйФорматОтчета = "JSON") Тогда
Если НЕ (ВРЕГВыбранныйФорматОтчета = "HTML" ИЛИ ВРЕГВыбранныйФорматОтчета = "JSON") Тогда
ОшибокНет = Ложь;
Лог.Ошибка("Указан неизвестный формат отчета `%1`", ОбернутьЗначениеДляПечати(ВыбранныйФорматОтчета));
@@ -280,6 +281,74 @@
ЗаписьJSON.ОткрытьФайл(ПутьКОтчету);
ЗаписатьJSON(ЗаписьJSON, КоллекцияОтчетов);
ЗаписьJSON.Закрыть();
ИначеЕсли ФорматОтчета = "HTML" Тогда
ДоступныеМетрики = Сонар.ДоступныеМетрики();
ТекстТаблиц = "";
Для Каждого Отчет Из КоллекцияОтчетов.Отчеты Цикл
ТекстСтрок = "";
Для Каждого Метрика Из Отчет.Метрики Цикл
Если ДоступныеМетрики.Свойство(Метрика.Ключ) Тогда
Продолжить; // оставим только русско-язычные
КонецЕсли;
ТекстСтрок = ТекстСтрок + СтрШаблон(ШаблонСтрокаТаблицы(), СтрЗаменить(Метрика.Ключ, "_", " "), Метрика.Значение) + Символы.ПС;
КонецЦикла;
ТекстТаблиц = ТекстТаблиц + СтрШаблон(ШаблонТаблица(), Отчет.КлючПроекта, ТекстСтрок) + Символы.ПС;
КонецЦикла;
ТекстОтчета = СтрШаблон(ШаблонОтчета(),
КоллекцияОтчетов.ДатаФормирования,
КоллекцияОтчетов.СерверSonarQube,
КоллекцияОтчетов.Количество,
ТекстТаблиц);
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.ОткрытьФайл(ПутьКОтчету);
ЗаписьJSON.ЗаписатьБезОбработки(ТекстОтчета);
ЗаписьJSON.Закрыть();
КонецЕсли;
КонецПроцедуры
Функция ШаблонОтчета()
Возврат
"<!DOCTYPE html>
|<html>
|<head>
|<meta charset=""utf-8"">
|<title>Отчет sonar-helper</title>
|<meta name=""description"" content=""Отчет sonar-helper"">
|</head>
|<body>
|<div>
|<p><b>Сводная информация</b></p>
|<p>
|<b>Адрес сервера: </b>%2<br/>
|<b>Дата формирования: </b>%1<br/>
|<b>Количество отчетов: </b>%3<br/>
|</p>
|</div>
|%4
|</body>
|</html>";
КонецФункции
Функция ШаблонТаблица()
Возврат
"<div>
|<table border=""1"">
|<caption><b>Проект: </b>%1</caption>
|<tr>
|<th>Метрика</th>
|<th>Значение</th>
|</tr>
|%2
|</table>
|</div>";
КонецФункции
Функция ШаблонСтрокаТаблицы()
Возврат
"<tr>
|<td>%1</td>
|<td>%2</td>
|</tr>";
КонецФункции