SonarQube 6.7 .net和javascript在一个项目中

问题描述 投票:1回答:2

我的问题是.net网络应用程序有一个带有javascript和JEST单元测试的UI项目的场景。拥有1个sonarQube项目是否正常,可以准确显示.cs和.js文件的代码覆盖率,VStests和Jest Unit测试?

我已经尝试过msbuild跑步者和声纳扫描仪,我只是无法让它在1岁以下工作。

谢谢

sonarqube jestjs sonar-runner sonarqube-msbuild-runner
2个回答
1
投票

根据我的经验,如果将非C#文件包含在项目文件中,分析将会获取非C#文件,如下所示:<Content Include="src\**\*.js" />

对于测试覆盖率,我还没有尝试过,但它应该可以在Begin命令行上定义与JavaScript coverage相关的属性,如下所示:/d:sonar.property.name=value


0
投票

您可以在一个SonarQube项目中组合javascript和.Net单元测试和覆盖。将显示两者的覆盖范围,但单位测试计数仅来自javascript(仍然不知道如何解决它)

如果您从其他SonarQube属性中删除javascript单元测试xml文件行,您将获得.Net的单元测试计数,而无需任何其他更改。

对于.Net,我们使用opencover来获取.trx文件和coverage xml:

"path/to/OpenCover.Console.exe" -register:user -target:"%MSTestExe%" -targetargs:"/resultsfile:Tests.trx /noisolation /testcontainer:%~dp0Tests\bin\%Configuration%\Tests.dll" -output:"%~dp0results.xml"

对于javascript它是karma(jasmine)与karma-sonarqube-unit-reporter模块获取lcov和xml文件

SonarQube的其他属性准备分析配置步骤(与MSBuild集成):

sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)\ProjectName\results.xml
sonar.cs.vstest.reportsPaths=$(Build.SourcesDirectory)\ProjectName\Tests.trx
sonar.genericcoverage.unitTestReportPaths=$(Build.SourcesDirectory)\ProjectName\tests\reports\ut_report.xml
sonar.javascript.lcov.reportPath=$(Build.SourcesDirectory)\ProjectName\tests\reports\coverage\lcov.info
© www.soinside.com 2019 - 2024. All rights reserved.