C# ';抑制消息';对于整个名称空间
为了更好的可读性,我在测试方法中使用下划线,并且我希望对整个测试名称空间抑制FxCop错误/警告 我怎样才能做到这一点?我玩了C# ';抑制消息';对于整个名称空间,c#,.net,namespaces,code-analysis,fxcop,C#,.net,Namespaces,Code Analysis,Fxcop,为了更好的可读性,我在测试方法中使用下划线,并且我希望对整个测试名称空间抑制FxCop错误/警告 我怎样才能做到这一点?我玩了GlobalSuppressions.cs,但没有任何效果: [module: System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Scope = "namespace",
GlobalSuppressions.cs
,但没有任何效果:
[module: System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
Scope = "namespace", Target = "Company.Product.Tests")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
Scope = "namespace", Target = "Company.Product.Tests")]
我认为这是不可能的,就像harlam357已经说过的那样。是的,这在FxCop中是不可能的。正如已经说过的,这是不可能的。嗯,这是因为压制必须统一进行 通过
FXCop 10
使用Copy As>Module level SuppressMessage
功能,可以手动执行此操作
缺点是,每次修改名称空间时都必须重复此操作,但如前所述,全局抑制应该被隔离
Copy As>Module level supersmessage
GlobalSuppressions.cs中,例如
自Visual Studio 2019以来,可以禁止对命名空间及其所有子代符号发出代码分析警告:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
Justification = "Test methods require underscores for readability."
Scope = "namespaceanddescendants", Target = "Company.Product.Tests")]
范围-正在抑制警告的目标。如果未指定目标,则将其设置为属性的目标。支持的作用域包括:
-(Visual Studio 2019新增)此作用域抑制名称空间及其所有子体符号中的警告。名称空间和子体
值仅对Roslyn分析器有效,并被基于FxCop的二进制静态分析忽略namespaceandspondents
[程序集:System.Diagnostics.CodeAnalysis.SuppressMessage(
“Microsoft.Naming”、“CA1707:标识符不应包含下划线”,
Justification=“测试方法需要下划线以确保可读性。”
Scope=“module”)]
我通过使用包含以下规则的.editorconfig文件,成功地忽略了专门针对测试项目的特定警告(我遵循一种命名约定,其中这些项目总是以“Tests.cs”结尾):
[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none
关于我的答案的更多信息+1同上。。。我在AssemblyInfo.cs文件中尝试了类似的方法,但也不起作用。可能CA1707不能针对整个库或命名空间,而只能针对成员本身。是否可以将其应用于整个解决方案?根据预览2,该解决方案变得可用。这很有效我尝试过,在名称空间和子体上。我实际上在官方文档中添加了这一点:注意,您应该在目标中添加~N:,作为前缀,以避免性能问题。参考:示例:[程序集:System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Naming”,“CA1707:IdentifiersShouldNotContainUnderlines”,justionment=“测试方法需要下划线以确保可读性。”Scope=“NamespaceandDescents”,Target=“~N:Company.Product.Tests”)]