gpt4 book ai didi

c# - 如何让 SonarQube 忽略 GlobalSuppressions.cs 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:15 24 4
gpt4 key购买 nike

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

这些在每个项目的根目录中,但不在解决方案所在的根目录中:例如 enter image description here

我在管理中设置了这个:

enter image description here

**/GlobalSuppressions.cs

每个解决方案中都有很多项目,因此我希望尽可能避免单独引用每个项目。

最佳答案

我对这个问题的解决方案是使用 Powershell 脚本清除 globalsupressions.cs 文件并更改错误的规则集(CodeAnalysisRulesErrors.rulesetCodeAnalysisRulesUnitTestsErrors.ruleset) 到抛出警告的一个(CodeAnalysisRules.rulesetCodeAnalysisRulesUnitTests.ruleset),这样 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{}

关于c# - 如何让 SonarQube 忽略 GlobalSuppressions.cs 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37841029/

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