SonarQube 忽略设置文件

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

在我的 .Net 代码中,我有几个生成的类,我想将它们从针对每个拉取请求运行的 SonarQube 分析中排除。为了弄清楚排除是如何工作的,我尝试了两种方法来排除单个文件的分析

adres.cs

选项A

我在git仓库的根目录下添加了一个文件

sonar-project.properties
,其内容是:

sonar.projectKey=MyProjectKey
sonar.projectName=MyProjectName
sonar.exclusions=**/adres.cs

下面的 YAML 片段显示了如何调用 SonarQube 准备步骤(除了在这种情况下,

sonar.exclusions
在 YAML 文件中被注释掉)。 在构建服务器的输出中,我看到以下有趣的语句:

  1. 生成 SonarQube 项目属性文件到 J:\DevOps\Agent01_work .sonarqube\out\sonar-project.properties
  2. DEBUG:指责文件(本机)src/some_folder/adres.cs
  3. 索引模块“MyModule”的文件。源路径:J:\DevOps\Agent01\_work\some_folder dres.cs

1 表示找到配置文件,2 表示文件已处理。然而,3 表明文件

adres.cs
仍在分析中,我通过在 SonarQube 中查看该文件仍然可见来确认这一点。

选项B

我修改了 YAML 构建管道以包含一个额外的行,用于指定要排除的文件,即下面代码片段的最后一行:

task: SonarQubePrepare@6
  inputs:
    SonarQube: 'SonarQubeOnDocker'
    projectKey: MyProjectKey
    projectName: MyProjectName
    extraProperties: |
      sonar.host.url=myUrl
      sonar.exclusions=**/adres.cs #Only used in Option B
      sonar.verbose=true  

这些是我指定的属性,其余的使用默认值,根据文档意味着:

scannerMode: 'MSBuild'

运行修改后的管道后,该文件不再显示在 SonarQube 中。此外,许多地方的输出都指出排除的来源:**/adres.cs

知道为什么第二种方法有效但第一种方法无效吗?

更新

我将 YAML 任务定义修改为

task: SonarQubePrepare@6
  inputs:
    SonarQube: 'SonarQubeOnDocker'
    projectKey: MyProjectKey
    projectName: MyProjectName
    configFile: 'sonar-project.properties'
    extraProperties: |
      sonar.host.url=myUrl
      sonar.verbose=true  

这还是不行。

解决方案

根据 Kevin Lu 的评论,我将 YAML 任务定义更新为

task: SonarQubePrepare@6
  inputs:
    SonarQube: 'SonarQubeOnDocker'
    projectKey: MyProjectKey
    projectName: MyProjectName
    scannerMode: 'CLI'
    configFile: 'sonar-project.properties'
    extraProperties: |
      sonar.host.url=myUrl
      sonar.verbose=true  

这里最重要的部分是

scannerMode
属性。当我将其设置为非默认值
CLI
时,正在使用配置文件。

azure-pipelines sonarqube
1个回答
0
投票

请参阅此票证:无法从 VSTS 管道中排除 sonar-project.properties 文件

源代码中已有的

sonar-project.properties 文件与 Scanner for MSBuild 不兼容。原因是扫描仪会自己生成一个文件,其中包含所有源参考,以便能够由底层基础扫描仪进行分析。

问题的原因可能是 sonar-project.properties 与 MSBuild 模式不兼容。

要在sonarqube任务中使用sonar-project.properties,您可以更改为使用CLI模式。

在这种情况下,您可以在 configFile 字段中定义 sonar-project.properties 文件。

这是一个例子:

steps:
- task: SonarQubePrepare@6
  displayName: 'Prepare analysis on SonarQube'
  inputs:
    SonarQube: xx
    scannerMode: CLI
    configMode: 'file'
    configFile: 'sonar-project.properties'
    extraProperties: |
       xxxx

有关更多详细信息,您可以参考此文档:SonarQubePrepare@6 - 准备分析配置 v6 任务

configFile: 'sonar-project.properties' # 字符串。选修的。当 ScannerMode = CLI && configMode = file 时使用。设置文件。默认值:sonar-project.properties。

© www.soinside.com 2019 - 2024. All rights reserved.