#c# #jenkins #sonarqube
#c# #дженкинс #sonarqube
Вопрос:
Я пытаюсь получить отчет о покрытии кода SonarQube во время сборки решения dotnet c #. Для целей тестирования решение действительно простое. Он содержит проект библиотеки и проект модульного тестирования. Модульный тест охватывает один метод из двух, определенных в проекте lib. Я использую инструмент dotnet sonarscanner. При локальном запуске следующего скрипта
dotnet sonarscanner begin /d:sonar.login='myToken' /d:sonar.host.url='https://sbt-sonarqube.sigma.sbrf.ru' /k:SBERSPACE:backend /n:SBERSPACE:backend /d:sonar.branch.name='feature/TEAMX-3687-xunit-sonar' /d:sonar.cs.opencover.reportsPaths='Tests/**/coverage.opencover.xml' /d:sonar.cs.vstest.reportsPaths='Tests/**/TestResults.trx' /d:sonar.sourceEncoding='UTF-8'
dotnet build
dotnet test --logger "trx;LogFileName=TestResults.trx" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
dotnet sonarscanner end /d:sonar.login='myToken'
Все работает нормально, и на хосте SonarQube я вижу: покрытие кода 50% на 6 новых строках.
Но когда я пытаюсь выполнить то же самое задание insinde jenkins (вот часть jenkinsfile):
def sonarExec
sonarExec = "dotnet sonarscanner"
withCredentials([usernamePassword(credentialsId: 'myCredentialId', passwordVariable: 'SonarPass', usernameVariable: 'SonarUser')]) {
dir("SberSpace"){
def SonarBeginCommand = """${sonarExec} begin /d:sonar.login=${SonarUser} /d:sonar.password=${SonarPass} /d:sonar.host.url=https://sbt-sonarqube.sigma.sbrf.ru /k:SBERSPACE:backend /n:SBERSPACE:backend
/d:sonar.branch.name=feature/TEAMX-3687-xunit-sonar
/d:sonar.cs.opencover.reportsPaths=Tests/**/coverage.opencover.xml
/d:sonar.cs.vstest.reportsPaths=Tests/**/TestResults.trx
/d:sonar.sourceEncoding=UTF-8"""
exec(SonarBeginCommand)
exec "dotnet build"
exec "dotnet test --logger "trx;LogFileName=TestResults.trx" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover"
def endCommand = """${sonarExec} end /d:sonar.login=${SonarUser} /d:sonar.password=${SonarPass}"""
exec(endCommand)
}
}
Я вижу пустое покрытие кода на нулевых (!) новых строках для покрытия.
Комментарии:
1.
Tests/**/coverage.opencover.xml
Tests/**/TestResults.trx
Существует ли и в рабочей области? Я также вижу, что вы не заключили их в одинарные кавычки. Возможно, пути интерпретируются.2. @agabrys Да, файлы есть: 18:22:57 Вычисление результата покрытия … 18:22:57 Генерация отчета ‘C:jenkins_slaveworkspaced_feature_TEAMX-3687-xunit-sonarSberSpaceTestsMyLib . Testscoverage.opencover.xml ‘
3. И даже sonar видит их: 18:23:17 ИНФОРМАЦИЯ: датчик C # Проверяет импорт отчета о покрытии [csharp] 18:23:17 ИНФОРМАЦИЯ: Анализ отчета об открытии C:jenkins_slaveworkspaced_feature_TEAMX-3687-xunit-sonarSberSpace . Tests MyLib. Testscoverage.opencover.xml 18:23:17 ИНФОРМАЦИЯ: Добавление этого отчета о покрытии кода в кэш для последующего повторного использования: C:jenkins_slaveworkspaced_feature_TEAMX-3687-xunit-sonarSberSpace . Tests MyLib. Testscoverage.opencover.xml 18:23:17 ИНФОРМАЦИЯ: Статистика отчета о покрытии: 2 файла, 2 основных файла, 2 основных файла с покрытием, 0 тестовых файлов, 0 файлов, исключенных из проекта, 0 файлов на другом языке
4.
Coverage Report Statistics: 2 files, 2 main files, 2 main files with coverage, 0 test files, 0 project excluded files, 0 other language file
звучит так, что файлы отчета о покрытии не содержат никакой информации о покрытии.5. Тот же вывод предназначен для успешного выполнения.