我为我的测试方法使用下划线以获得更好的可读性,我想要为整个测试命名空间抑制FxCop错误/警告。
我怎样才能做到这一点?我玩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)]
答案 0 :(得分:20)
您可以为此使用“模块”作用域,与支持较新的“ namespaceanddescendants”作用域的编译器相比,较早的编译器支持。模块作用域会影响项目中的所有内容,并且不需要目标规范。
示例用法:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
Justification = "Test methods require underscores for readability."
Scope = "module")]
答案 1 :(得分:3)
我认为这是不可能的,因为harlam357已经说过。
答案 2 :(得分:3)
是的,FxCop< = 10.0是不可能的。
您可以做的是使用自定义规则文件禁用CA1707(可能仅适用于您的测试项目)。
答案 3 :(得分:3)
通过包含以下规则的.editorconfig文件,我设法忽略了专门针对测试项目的特定警告(我遵循的命名约定始终以“ Tests.cs”结尾)。
[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none
有关我的答案here
的更多信息答案 4 :(得分:2)
如前所述,开箱即用是不可能的。 Imho,它的目的是因为压制必须一起完成。
有一种解决方法可以通过具有FXCop 10
功能的Copy As > Module-level SuppressMessage
手动执行此操作。
缺点,每次修改命名空间时都必须重复此操作,但正如已经说过的那样,应该隔离全局抑制。
Copy As > Module-level SupressMessage
GlobalSuppressions.cs
例如注意:这可以在程序集,命名空间或类型级别完成。
答案 5 :(得分:0)