gpt4 book ai didi

.net - SonarQube MSBuild Scanner 不会从分析中排除文件

转载 作者:行者123 更新时间:2023-12-02 10:29:35 25 4
gpt4 key购买 nike

我们目前正在使用 SonarQube Scanner for VSTS/TFS 4.1.1(正在使用 SonarQube Scanner 4.1.1)。

我们想要做什么:

对于我们解决方案中的某些项目(模块),我们希望从分析和代码覆盖率统计中排除文件。这应该通过使用文件模式而不是修改 TFS 构建任务以可维护的方式完成。

项目结构:

    |- Source
|- ProjectA
|- Scripts (should be excluded)
|- OwnCode
|- ProjectB
|- Views (only code coverage should be excluded)
|- Presenters
|- ...
|- ProjectC
|- Scripts (should be scanned)
|- ...
|- ...
|- Solution.sln

我们尝试过的:

  1. 排除在 TFS 构建任务中
    • 绝对路径(带反斜杠或斜杠):sonar.exclusions="$(Build.SourcesDirectory)\Source\ProjectA\Scripts\**\*.js"(与覆盖范围类似)
    • 相对路径:**/ProjectsA/Scripts/**/*.js
  2. 不包括在 SonarQube 前端中
    • 分析排除:**/ProjectA/Scripts/**/*.js
    • 覆盖范围排除:**/ProjectB/Views/**/*.cs
  3. 排除 sonar-project.properties:
    • 不受支持并导致以下错误:SonarScanner for MSBuild 无法识别 sonar-project.properties 文件

我们看到的:

SonarQube Web 界面中 Scanner Context 的日志为:

  Settings for module: Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
- sonar.coverage.exclusions=**/ProjectA/Views/**/*.cs
- sonar.cs.analyzer.projectOutPath=D:\agent1\_work\5\.sonarqube\out\9
- sonar.cs.analyzer.projectOutPaths="D:\agent1\_work\5\.sonarqube\out\9"
- sonar.cs.roslyn.reportFilePath=D:\agent1\_work\5\s\Source\Solution\Source\ProjectA\bin\Release\ProjectA.dll.RoslynCA.json
- sonar.cs.roslyn.reportFilePaths="D:\agent1\_work\5\s\Source\Solution\Source\ProjectA\bin\Release\ProjectA.dll.RoslynCA.json"
- sonar.exclusions=**/ProjectA/Scripts/**/*.js
- sonar.moduleKey=Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
- sonar.projectBaseDir=D:\agent1\_work\5\s\Source\Solution\Source\ProjectA
- sonar.projectKey=Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
- sonar.projectName=ProjectA
- sonar.sourceEncoding=utf-8
- sonar.sources="D:\agent1\_work\5\s\Source\Solution\Source\ProjectA\Scripts\abc.js","..."

TFS 构建中 MSBuild Scanner 的日志为:

Base dir: D:\agent1\_work\5\s\Source\Solution\Source\ProjectA
Working dir: D:\agent1\_work\5\.sonarqube\out\.sonar\Solution_Solution_6FA7B5C2-667D-4387-98B9-445617F2AC0B
Source paths: Scripts/abc.cs, ...
Source encoding: UTF-8, default locale: en_US
Index files
Excluded sources:
**/ProjectA/Scripts/**/*.js
172 files indexed
0 files ignored because of inclusion/exclusion patterns
Quality profile for cs: Sonar way
Quality profile for js: Sonar way
Excluded sources for coverage:
**/ProjectB/Views/**/*.cs
Sensor C# Properties [csharp]
Sensor C# Properties [csharp] (done) | time=15ms
Sensor SonarJavaXmlFileSensor [java]
Sensor SonarJavaXmlFileSensor [java] (done) | time=0ms
Sensor SonarJS [javascript]

我们没有尝试的:

  • 通过更改项目文件排除单个文件

我们不想这样做,因为它不可维护。

  • 排除整个项目

我们只想从解决方案中的单个项目中排除一些文件夹/模式。

最佳答案

部分答案:可以在 SonarQube UI 中按“组件”(即每个 MSBuild 项目)配置代码覆盖率排除,因此您应该能够从覆盖率中排除 ProjectB\Views,但不能从分析中排除。

导航至组件页面,然后选择“管理”、“常规设置”。 “分析范围”选项卡中的“覆盖排除”属性仅设置此组件的排除。

找到组件页面并不明显:单击 SonarQube 项目的代码选项卡。这将显示组件列表。单击屏幕上您感兴趣的组件旁边最左侧的图标:

Open component page

组件页面看起来与整个项目页面相同,但页面顶部的路径将显示项目和组件名称(下图中红色下划线):

Component page

关于.net - SonarQube MSBuild Scanner 不会从分析中排除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49816611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com