sonarqube - 如何将 .coverage 文件发送到 SonarCloud
问题描述
我是声纳云的新手,我的公司在 AzureDevOps Pipeline 中实现了它。我们面临的问题是,要了解我们的代码覆盖率,我们必须创建一个拉取请求并在 devops 中构建解决方案,以便对代码进行分析。
所以我试图在本地执行此操作,我安装了 SonarQube 和 SonarScanner,当我运行 sonarQube 文档提供的命令时,它运行没有问题,但是当我检查 sonarcloud 页面时,我的项目代码覆盖率为 0%。我想我在运行的命令中遗漏了一步,但我找不到解决方案。
我运行的命令是:
dotnet sonarscanner begin /k:"project-key" /d:sonar.login="myToken" /o:"myOrg"
dotnet build "myPathTo .sln"
dotnet test --collect "Code Coverage" (this step creates the .coverage file in my UnitTest project)
dotnet sonarscanner end /d:sonar.login="myToken"
命令后页面得到更新但没有代码覆盖
你们能帮我解决缺少的步骤吗?
提前致谢
解决方案
Sonar 仅在非常特定的位置查找 Coverage 文件(或者在我们的版本中查找)。当我们在我们的 .NET 核心项目上进行构建时,我们必须调整扫描仪的输出以便像这样拾取它(我知道这是一个 Azure 管道,但命令是相同的):
从参数中可以看出,我们将覆盖文件重新路由到工作文件夹下 Azure 管道中的 TestResults 文件夹。
这可能是您的问题,也可能不是,但您应该看到工具在代码分析阶段查看的路径:
如果它说“未找到覆盖文件”之类的内容,则表示该文件未包含在它正在查找的路径中。查看任何输出文件,或打开详细日志记录并查看它在做什么。
这就是它为我们工作的原因。这似乎只发生在 .NET 核心项目上,.NET 框架解决方案似乎默认被选中。更高版本的声纳可能已经改变了这一点。
推荐阅读
- reactjs - 如何使用 React 状态优化 Cloud Firestore 读取?
- javascript - 发布到对象数组
- javascript - JavaScript:遍历对象数组并使用 Reduce 函数查找特定键的总和
- html5-canvas - 如何制作重复的 CanvasGradient
- reactjs - 本机浏览器自动完成功能不适用于 IE11、Firefox、MS Edge 中的 ReactJS 控制输入(仅适用于 chrome)
- sass - 加在一起的两个 rem 单位的 SCSS 和输出操作而不是值
- python - 尝试使用“desired_num_ticks”时未出现散景图
- twitter - 在 IFTTT 上,@符号从 RSS 提要中的排队推文中删除。如何解决?
- python - python selenium xpath find 获取第二个元素
- json - 将 WMS 源添加到 Mapbox style.json 时遇到问题