【问题标题】:How do I get SonarQube to ignore the GlobalSuppressions.cs file?如何让 SonarQube 忽略 GlobalSuppressions.cs 文件?
【发布时间】:2016-10-16 21:34:16
【问题描述】:

我想从 SonarQube 分析中排除 GlobalSuppressions.cs 文件,这样它就不会查看其中的 System.Diagnostics.CodeAnalysis.SuppressMessage 指令。

这些位于每个项目的根目录中,但不在解决方案所在的根目录中:例如

我在管理员中设置了这个:

**/GlobalSuppressions.cs

每个解决方案都有很多项目,所以我想尽可能避免单独引用每个解决方案。

【问题讨论】:

    标签: c# sonarqube


    【解决方案1】:

    我对此问题的解决方案是使用 Powershell 脚本来清除 globalsupressions.cs 文件并将规则集从出错的规则集(CodeAnalysisRulesErrors.rulesetCodeAnalysisRulesUnitTestsErrors.ruleset)更改为引发警告的规则集(CodeAnalysisRules.ruleset 或 @987654325 @),这样 SonarQube 就正确地报告了技术债务。

    [CmdletBinding()]
    param (
      [string]$localWorkspace
    )
    begin{}
    process
    {
      try
      {
        $localWorkspace =  "$($env:SYSTEM_DEFAULTWORKINGDIRECTORY)\$($localWorkspace)"
        $localWorkspace = $localWorkspace -replace "/" , "\"
        $localWorkspace = $localWorkspace -replace "\\" , "\"
    
        Write-Verbose $localWorkspace
    
        #Work out top level directories, excluding system dirs
        [System.Collections.ArrayList]$topLevelDirs = @()
        $topLevelItem = Get-ChildItem $localWorkspace -Exclude @("node_modules", "packages", "Common", ".nuget", ".vs", "_Resharper.Caches", "Javascript")
        foreach ($item in $topLevelItem)
        {
            if (Test-Path $item -PathType Container) {
                Write-Verbose $item
                $topLevelDirs.Add($item)
            }
        }
    
        foreach ($topLevelFolder in $topLevelDirs)
        {
            Write-Verbose $topLevelFolder
            $ServiceDirs = Get-ChildItem -Path $topLevelFolder -Filter GlobalSuppressions.cs -Recurse
            foreach ($sd in $ServiceDirs)
            {
                Write-Verbose $sd
                Clear-Content $sd.FullName
            }
    
            Get-ChildItem -Path $topLevelFolder -Filter *.csproj -Recurse | ForEach {
                 Write-Verbose $_.FullName
                 (Get-Content $_.FullName | ForEach  { $_ -replace 'CodeAnalysisRulesErrors.ruleset', 'CodeAnalysisRules.ruleset' }) | Set-Content $_.FullName
                 (Get-Content $_.FullName | ForEach  { $_ -replace 'CodeAnalysisRulesUnitTestsErrors.ruleset', 'CodeAnalysisRulesUnitTests.ruleset' }) | Set-Content $_.FullName
            }
        }
      }
      catch
      {
        write-host "Caught an exception:" 
        write-host "Exception Type: $($_.Exception.GetType().FullName)" 
        write-host "Exception Message: $($_.Exception.Message)" 
      }
    }
    end{}
    

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 2015-05-23
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2018-05-12
      • 1970-01-01
      相关资源
      最近更新 更多