-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathtest7.os
More file actions
59 lines (44 loc) · 3.31 KB
/
test7.os
File metadata and controls
59 lines (44 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Пример формирования отчета в формате Generic Issue Data для sonarqube
// https://docs.sonarqube.org/latest/analysis/generic-issue/
#Использовать osparser
#Использовать "./plugins"
ПутьИсходника = "C:\dev\sonarqube\myprj\src\CommonModules\CommonUse\Ext\Module.bsl";
ПутьОтчета = "C:\dev\sonarqube\myprj\bsl-generic-json.json";
ЧтениеТекста = Новый ЧтениеТекста(ПутьИсходника);
Исходник = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Плагины = Новый Массив;
Плагины.Добавить(Новый ДетекторНеиспользуемыхПеременных);
Плагины.Добавить(Новый ДетекторОшибочныхЗамыкающихКомментариев);
Плагины.Добавить(Новый ДетекторФункцийБезВозвратаВКонце);
Плагины.Добавить(Новый ДетекторПропущенныхТочекСЗапятой);
Плагины.Добавить(Новый ПроверкаКаноничностиКлючевыхСлов);
Парсер = Новый ПарсерВстроенногоЯзыка;
Парсер.Пуск(Исходник, Плагины);
Проблемы = Новый Массив;
Для Каждого Ошибка Из Парсер.ТаблицаОшибок() Цикл
Диапазон = Новый Структура;
Диапазон.Вставить("startLine", Ошибка.НомерСтрокиНачала);
Диапазон.Вставить("endLine", Ошибка.НомерСтрокиКонца);
Диапазон.Вставить("startColumn", Ошибка.НомерКолонкиНачала - 1);
Диапазон.Вставить("endColumn", Ошибка.НомерКолонкиКонца - 1);
Место = Новый Структура;
Место.Вставить("message", Ошибка.Текст);
Место.Вставить("filePath", ПутьИсходника);
Место.Вставить("textRange", Диапазон);
Проблема = Новый Структура;
Проблема.Вставить("engineId", "osparser");
Проблема.Вставить("ruleId", Ошибка.Источник); // Ошибка.Правило
Проблема.Вставить("severity", "INFO"); // Ошибка.Серьезность
Проблема.Вставить("type", "CODE_SMELL"); // Ошибка.Тип
Проблема.Вставить("primaryLocation", Место);
Проблема.Вставить("effortMinutes", 5); // Ошибка.МинутНаИсправление
Проблемы.Добавить(Проблема);
КонецЦикла;
Отчет = Новый Структура("issues", Проблемы);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ПутьОтчета, "UTF-8",, Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix));
ЗаписатьJSON(ЗаписьJSON, Отчет);
ЗаписьJSON.Закрыть()
// ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix));
// Сообщить(ЗаписьJSON.Закрыть());