Skip to content

Commit e155496

Browse files
committed
Загрузка истории проекта в SonarQube
1 parent 4169be4 commit e155496

File tree

4 files changed

+150
-22
lines changed

4 files changed

+150
-22
lines changed

LICENSE

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
MIT License
2-
3-
Copyright (c) 2020 SilverBulleters, LLC
4-
5-
Permission is hereby granted, free of charge, to any person obtaining a copy
6-
of this software and associated documentation files (the "Software"), to deal
7-
in the Software without restriction, including without limitation the rights
8-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9-
copies of the Software, and to permit persons to whom the Software is
10-
furnished to do so, subject to the following conditions:
11-
12-
The above copyright notice and this permission notice shall be included in all
13-
copies or substantial portions of the Software.
14-
15-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE.
1+
MIT License
2+
3+
Copyright (c) 2020 SilverBulleters, LLC
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
# git2sonar
1+
# git2sonar
2+
3+
Загрузка истории проекта в SonarQube

packagedef

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
////////////////////////////////////////////////////////////
2+
// Описание пакета для сборки и установки
3+
// Полную документацию см. на hub.oscript.io/packaging
4+
//
5+
6+
7+
Описание.Имя(".")
8+
.Версия("1.0.0")
9+
.Автор("")
10+
.АдресАвтора("[email protected]")
11+
.Описание("Это очень хороший и нужный пакет программ")
12+
.ВерсияСреды("1.0.21")
13+
.ВключитьФайл("src")
14+
.ВключитьФайл("doc")
15+
.ВключитьФайл("tasks")
16+
//.ВключитьФайл("tests")
17+
//.ВключитьФайл("features")
18+
19+
//.ЗависитОт("package1", ">=2.0")
20+
//.ЗависитОт("package2", ">=1.1", "<2.0")
21+
//.ОпределяетКласс("УправлениеВселенной", "src/universe-mngr.os")
22+
//.ОпределяетМодуль("ПолезныеФункции", "src/tools.os")
23+
;
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#Использовать 1commands
2+
3+
Функция ПолучитьВерсию(ПутьКФайлу)
4+
ТекстовыйФайл = Новый ТекстовыйДокумент;
5+
ТекстовыйФайл.Прочитать(ПутьКФайлу + "/src/cf/Configuration.xml", КодировкаТекста.UTF8, Символы.ВК + Символы.ПС);
6+
СтрокаВерсии = ВРег(ТекстовыйФайл.ПолучитьТекст());
7+
ПозицияСтарта = Найти(СтрокаВерсии, "<VERSION>") + 9;
8+
ПозицияОкончания = Найти(СтрокаВерсии, "</VERSION>");
9+
ЧислоСимволов = ПозицияОкончания - ПозицияСтарта;
10+
Версия = Сред(СтрокаВерсии, ПозицияСтарта, ЧислоСимволов);
11+
12+
Возврат Версия;
13+
КонецФункции
14+
15+
Функция ПолучитьКоммиты(КаталогРепозитария, ДатаПоследнегоАнализа)
16+
КомандаГит = Новый Команда();
17+
КомандаГит.УстановитьКоманду("git");
18+
КомандаГит.ДобавитьПараметр("log");
19+
КомандаГит.ДобавитьПараметр("--reverse");
20+
КомандаГит.ДобавитьПараметр("--pretty=format:""%h | %cd""");
21+
КомандаГит.ДобавитьПараметр("--date=format:%Y%m%d");
22+
КомандаГит.ДобавитьПараметр("--branches=""master*""");
23+
КомандаГит.УстановитьРабочийКаталог(КаталогРепозитария);
24+
25+
КомандаГит.Исполнить();
26+
27+
КоммитыСДатами = СтрРазделить(КомандаГит.ПолучитьВывод(), Символы.ПС, Ложь);
28+
Коммиты = Новый ТаблицаЗначений();
29+
Коммиты.Колонки.Добавить("Коммит");
30+
Коммиты.Колонки.Добавить("КоммитДата");
31+
32+
ПоследняяДатаКоммита = Дата(СтрЗаменить(ДатаПоследнегоАнализа, "-", ""));
33+
34+
Для Каждого КоммитСДатой Из КоммитыСДатами Цикл
35+
ТекКоммитСДатой = СтрРазделить(КоммитСДатой, "|");
36+
ДатаКоммитаСтрокой = СокрЛП(ТекКоммитСДатой[1]);
37+
ДатаКоммита = Дата(ДатаКоммитаСтрокой);
38+
Если ДатаКоммита > ПоследняяДатаКоммита Тогда
39+
ПоследняяДатаКоммита = ДатаКоммита;
40+
СтрокаТЗ = Коммиты.Добавить();
41+
СтрокаТЗ.Коммит = СокрЛП(ТекКоммитСДатой[0]);
42+
СтрокаТЗ.КоммитДата = Формат(ДатаКоммита, "ДФ=""гггг-ММ-дд""");
43+
КонецЕсли;
44+
КонецЦикла;
45+
46+
Возврат Коммиты;
47+
КонецФункции
48+
49+
Процедура Старт()
50+
АдресСонара = "http://localhost:9000/"; // адрес сервера sonarqube
51+
КлючПроекта = ""; // ключ проекта на sonarqube
52+
НаименованиеПроекта = "="; // название проекта на sonarqube
53+
КаталогРепозитария = ""; // /path/to/project
54+
ДатаПоследнегоСкана = ""; // например 2020-01-01
55+
ТокенСонара = ""; // токен в sonarqube
56+
57+
Сообщить("Получаю список коммитов");
58+
59+
КоммитыДляСканирования = ПолучитьКоммиты(КаталогРепозитария, ДатаПоследнегоСкана);
60+
КоличествоКоммитовКОбработке = КоммитыДляСканирования.Количество();
61+
Сообщить("Начинаю обработку коммитов. Всего к обработке : " + КоличествоКоммитовКОбработке);
62+
63+
Для Индекс = 0 По КоличествоКоммитовКОбработке - 1 Цикл
64+
65+
ТекКоммит = КоммитыДляСканирования[Индекс].Коммит;
66+
ТекКоммитДата = КоммитыДляСканирования[Индекс].КоммитДата;
67+
68+
Сообщить("Переключаюсь на коммит : " + ТекКоммит + " от " + ТекКоммитДата);
69+
КомандаЧекаут = Новый Команда();
70+
КомандаЧекаут.УстановитьКоманду("git");
71+
КомандаЧекаут.ПоказыватьВыводНемедленно(Ложь);
72+
КомандаЧекаут.ДобавитьПараметр("checkout");
73+
КомандаЧекаут.ДобавитьПараметр(ТекКоммит);
74+
КомандаЧекаут.УстановитьРабочийКаталог(КаталогРепозитария);
75+
КомандаЧекаут.Исполнить();
76+
77+
ВерсияВКоммите = ПолучитьВерсию(КаталогРепозитария);
78+
79+
Сообщить("Запускаю сканирование : " + СокрЛП(Индекс + 1) + "/" + КоличествоКоммитовКОбработке);
80+
КомандаСканера = Новый Команда();
81+
КомандаСканера.УстановитьКоманду("D:/sonar-scanner/bin/sonar-scanner.bat");
82+
КомандаСканера.ПоказыватьВыводНемедленно(Ложь);
83+
КомандаСканера.ДобавитьПараметр("-Dsonar.login=" + ТокенСонара);
84+
КомандаСканера.ДобавитьПараметр("-Dsonar.host.url=" + АдресСонара);
85+
КомандаСканера.ДобавитьПараметр("-Dsonar.projectKey=" + КлючПроекта);
86+
КомандаСканера.ДобавитьПараметр("-Dsonar.projectName=" + НаименованиеПроекта);
87+
КомандаСканера.ДобавитьПараметр("-Dsonar.projectBaseDir=" + КаталогРепозитария);
88+
КомандаСканера.ДобавитьПараметр("-Dsonar.sources=" + КаталогРепозитария + "\src");
89+
КомандаСканера.ДобавитьПараметр("-Dsonar.sourceEncoding=UTF-8");
90+
КомандаСканера.ДобавитьПараметр("-Dsonar.inclusions=**/*.bsl");
91+
КомандаСканера.ДобавитьПараметр("-Dsonar.scm.enabled=true");
92+
КомандаСканера.ДобавитьПараметр("-Dsonar.scm.provider=git");
93+
КомандаСканера.ДобавитьПараметр("-Dsonar.scm.exclusions.disabled=true");
94+
КомандаСканера.ДобавитьПараметр("-Dsonar.projectDate=" + ТекКоммитДата);
95+
КомандаСканера.ДобавитьПараметр("-Dsonar.projectVersion=" + ВерсияВКоммите);
96+
КомандаСканера.Исполнить();
97+
98+
Сообщить("Сканирование завешено ");
99+
Сообщить(КомандаСканера.ПолучитьВывод());
100+
Сообщить("Коммит " + ТекКоммит + " от " + ТекКоммитДата + " обработан.");
101+
Сообщить("Осталось еще обработать : " + (КоличествоКоммитовКОбработке - Индекс - 1));
102+
КонецЦикла;
103+
КонецПроцедуры

0 commit comments

Comments
 (0)