Skip to content

Commit 4f028c0

Browse files
authored
Merge pull request #97 from khorevaa/feature/code-stat
Добавлен codestat
2 parents 7caa1b4 + 591d96c commit 4f028c0

File tree

5 files changed

+148
-1
lines changed

5 files changed

+148
-1
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
oscript_modules/
22
test-reports/
3-
3+
coverage/
44
*.ospx
55
src/oscript.cfg

.travis.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
sudo: required
2+
3+
dist: trusty
4+
5+
addons:
6+
sonarqube: true
7+
8+
jdk:
9+
- oraclejdk8
10+
11+
before_install:
12+
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
13+
- echo "deb http://download.mono-project.com/repo/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/mono-official.list
14+
- sudo apt-get update
15+
- sudo apt-get install mono-complete mono-devel
16+
- wget -O os.deb http://oscript.io/downloads/night-build/deb
17+
- sudo dpkg -i os.deb; sudo apt install -f
18+
- oscript
19+
20+
install:
21+
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install -l
22+
23+
cache:
24+
directories:
25+
- '$HOME/.m2/repository'
26+
- '$HOME/.sonar/cache'
27+
28+
script:
29+
- ./travis.sh

sonar-project.properties

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# must be unique in a given SonarQube instance
2+
sonar.projectKey=sonar-opensource-add-ovm
3+
sonar.organization=sonar-opensource-add
4+
5+
# this is the name displayed in the SonarQube UI
6+
sonar.projectName=OneScript Version Manager
7+
8+
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
9+
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
10+
# If not set, SonarQube starts looking for source code from the directory containing
11+
# the sonar-project.properties file.
12+
13+
sonar.sources=./src
14+
15+
# Encoding of the source code. Default is default system encoding
16+
sonar.sourceEncoding=UTF-8
17+
18+
# sonar.coverageReportPaths=coverage/genericCoverage.xml

tasks/coverage.os

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#Использовать 1commands
2+
#Использовать asserts
3+
#Использовать fs
4+
#Использовать json
5+
6+
СистемнаяИнформация = Новый СистемнаяИнформация;
7+
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
8+
9+
ФС.ОбеспечитьПустойКаталог("coverage");
10+
ПутьКСтат = "coverage/stat.json";
11+
12+
Команда = Новый Команда;
13+
Команда.УстановитьКоманду("oscript");
14+
Если НЕ ЭтоWindows Тогда
15+
Команда.ДобавитьПараметр("-encoding=utf-8");
16+
КонецЕсли;
17+
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
18+
Команда.ДобавитьПараметр("tasks/test.os");
19+
Команда.ПоказыватьВыводНемедленно(Истина);
20+
21+
КодВозврата = Команда.Исполнить();
22+
Сообщить(Команда.ПолучитьВывод());
23+
Ожидаем.Что(КодВозврата).Равно(0);
24+
25+
Файл_Стат = Новый Файл(ПутьКСтат);
26+
Ожидаем.Что(Файл_Стат.Существует(), СтрШаблон("Файл <%1> с результатами покрытия не существует!", Файл_Стат.ПолноеИмя)).ЭтоИстина();
27+
28+
ЧтениеТекста = Новый ЧтениеТекста(ПутьКСтат, КодировкаТекста.UTF8);
29+
30+
СтрокаJSON = ЧтениеТекста.Прочитать();
31+
ЧтениеТекста.Закрыть();
32+
33+
Парсер = Новый ПарсерJSON();
34+
ДанныеПокрытия = Парсер.ПрочитатьJSON(СтрокаJSON);
35+
36+
ЗаписьXML = Новый ЗаписьXML;
37+
ЗаписьXML.ОткрытьФайл("coverage/genericCoverage.xml");
38+
ЗаписьXML.ЗаписатьОбъявлениеXML();
39+
ЗаписьXML.ЗаписатьНачалоЭлемента("coverage");
40+
ЗаписьXML.ЗаписатьАтрибут("version", "1");
41+
42+
Для Каждого Файл Из ДанныеПокрытия Цикл
43+
44+
ДанныеФайла = Файл.Значение;
45+
46+
ЗаписьXML.ЗаписатьНачалоЭлемента("file");
47+
ЗаписьXML.ЗаписатьАтрибут("path", ДанныеФайла.Получить("#path"));
48+
49+
Для Каждого КлючИЗначение Из ДанныеФайла Цикл
50+
51+
Если КлючИЗначение.Ключ = "#path" Тогда
52+
Продолжить;
53+
КонецЕсли;
54+
55+
ДанныеПроцедуры = КлючИЗначение.Значение;
56+
Для Каждого ДанныеСтроки Из ДанныеПроцедуры Цикл
57+
58+
ЗаписьXML.ЗаписатьНачалоЭлемента("lineToCover");
59+
60+
ЗаписьXML.ЗаписатьАтрибут("lineNumber", ДанныеСтроки.Ключ);
61+
Покрыто = Число(ДанныеСтроки.Значение.Получить("count")) > 0;
62+
ЗаписьXML.ЗаписатьАтрибут("covered", Формат(Покрыто, "БИ=true; БЛ=false"));
63+
64+
ЗаписьXML.ЗаписатьКонецЭлемента(); // lineToCover
65+
КонецЦикла
66+
КонецЦикла;
67+
68+
ЗаписьXML.ЗаписатьКонецЭлемента(); // file
69+
70+
КонецЦикла;
71+
72+
ЗаписьXML.ЗаписатьКонецЭлемента(); // coverage
73+
ЗаписьXML.Закрыть();

travis.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/bash
2+
set -e
3+
4+
opm run coverage
5+
6+
temp=`cat src/Модули/КонстантыOpm.os | grep "ВерсияПродукта = " | sed 's|[^"]*"||' | sed -r 's/".+//'`
7+
version=${temp##*|}
8+
9+
if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then
10+
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
11+
sonar-scanner \
12+
-Dsonar.host.url=http://sonar.silverbulleters.org \
13+
-Dsonar.analysis.mode=issues \
14+
-Dsonar.github.pullRequest=$TRAVIS_PULL_REQUEST \
15+
-Dsonar.github.repository=$TRAVIS_REPO_SLUG \
16+
-Dsonar.github.oauth=$SONAR_GITHUB_TOKEN \
17+
-Dsonar.login=$SONAR_TOKEN \
18+
-Dsonar.scanner.skip=false
19+
20+
elif [ "$TRAVIS_BRANCH" == "develop" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
21+
sonar-scanner \
22+
-Dsonar.host.url=http://sonar.silverbulleters.org \
23+
-Dsonar.login=$SONAR_TOKEN \
24+
-Dsonar.projectVersion=$version\
25+
-Dsonar.scanner.skip=false
26+
fi
27+
fi

0 commit comments

Comments
 (0)