使用 SonarQube 扫描多语言项目
Scanning multi-language projects with SonarQube
我正在尝试在我们的开发管道中实施 SonarQube (SonarCloud)。我们正在使用 TFS(内部部署)并且我们的项目只有一个存储库。在此存储库中,我们有两个不同的应用程序,一个 .NET 应用程序和一个 javascript 应用程序。
文件夹结构是这样的:
|
|- NetProjectFolder
|- JSProjectFolder
我们的构建定义(使用 Pull Requests)步骤如下:
- SonarQube Scanner for MSBuild - 开始分析(针对 .NET 项目)
- Visual Studio Build(构建.NET项目解决方案)
- Visual Studio 测试(.NET 解决方案的测试)
- SonarQube Scanner CLI(扫描 JS 项目)
- 用于 MSBuild 的 SonarQuber 扫描器 - 结束分析
我在想第 4 步和第 5 步将分析我们的 .NET 和 JS 项目,最后,我将看到我们所有项目的完整报告。但是,当第 4 步完成时,它会自动上传 JS 项目的报告,当第 5 步完成时,它会覆盖 JS 报告,上传 .NET 项目的报告。
最后只有.NET项目的report/warning/技术债等,因为第5步覆盖了第4步的结果
如何配置这些步骤,以便 SONarQube 可以正确分析我们的 JS 和 .NET 项目?
在撰写本文时,您看到的行为是 "by design",尽管它不是很直观。换句话说,您不能链接 Scanner for MSBuild 和 Scanner CLI。
MSBuild 扫描程序能够扫描 Java脚本代码(以及所有其他语言),仅当它被当前分析的解决方案中的项目引用时。例如,如果您的 WebApplication 项目包含 JS(或 TS、Java、COBOL 等)文件,它们将被分析。
当当前分析的解决方案中没有引用非.NET语言文件时,最好单独创建一个SonarQube项目来存储Scanner CLI的分析结果。
我们知道这个限制,我们计划在不久的将来修复它,但现在我不能承诺具体日期。
我正在尝试在我们的开发管道中实施 SonarQube (SonarCloud)。我们正在使用 TFS(内部部署)并且我们的项目只有一个存储库。在此存储库中,我们有两个不同的应用程序,一个 .NET 应用程序和一个 javascript 应用程序。
文件夹结构是这样的:
|
|- NetProjectFolder
|- JSProjectFolder
我们的构建定义(使用 Pull Requests)步骤如下:
- SonarQube Scanner for MSBuild - 开始分析(针对 .NET 项目)
- Visual Studio Build(构建.NET项目解决方案)
- Visual Studio 测试(.NET 解决方案的测试)
- SonarQube Scanner CLI(扫描 JS 项目)
- 用于 MSBuild 的 SonarQuber 扫描器 - 结束分析
我在想第 4 步和第 5 步将分析我们的 .NET 和 JS 项目,最后,我将看到我们所有项目的完整报告。但是,当第 4 步完成时,它会自动上传 JS 项目的报告,当第 5 步完成时,它会覆盖 JS 报告,上传 .NET 项目的报告。
最后只有.NET项目的report/warning/技术债等,因为第5步覆盖了第4步的结果
如何配置这些步骤,以便 SONarQube 可以正确分析我们的 JS 和 .NET 项目?
在撰写本文时,您看到的行为是 "by design",尽管它不是很直观。换句话说,您不能链接 Scanner for MSBuild 和 Scanner CLI。
MSBuild 扫描程序能够扫描 Java脚本代码(以及所有其他语言),仅当它被当前分析的解决方案中的项目引用时。例如,如果您的 WebApplication 项目包含 JS(或 TS、Java、COBOL 等)文件,它们将被分析。
当当前分析的解决方案中没有引用非.NET语言文件时,最好单独创建一个SonarQube项目来存储Scanner CLI的分析结果。
我们知道这个限制,我们计划在不久的将来修复它,但现在我不能承诺具体日期。