忽略 Visual Studio 中的代码分析规则

Posted

技术标签:

【中文标题】忽略 Visual Studio 中的代码分析规则【英文标题】:Ignore code analysis rules in Visual Studio 【发布时间】:2009-09-18 15:51:27 【问题描述】:

我如何忽略一个特定的 VS 代码分析规则(比如 CA1305 : Microsoft.Globalization):

方法? 上课? 命名空间?

(假设这些选项都是可能的。)

【问题讨论】:

相关:***.com/q/3683729/11410 【参考方案1】:

你可以像这样使用 SupressMessage 属性:-

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "newValue+1", Justification = "The reason I think its acceptable in this case")]
void SomeMethod()

   // Some code that would normal cause this Code Analysis message

关于方法、属性、类型等

【讨论】:

@AnthonyWJones:我在一种方法上尝试了[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1305:Microsoft.Globalization")](为简洁起见),但仍然显示警告。有什么想法吗? @Alex:尝试将类别更改为“Microsoft.Globalization”,请参阅:- msdn.microsoft.com/en-us/library/ms182190.aspx 您可以尝试运行 FxCop,右键单击错误,然后选择 Copy As SuppressMessage。这应该会为您提供正确的属性文本。 请注意,您必须使用 CODE_ANALYSIS 条件编译。【参考方案2】:

使用#pragma warning(suppress: Cxxxx)

您可以将 pragma 放在源文件中的适当范围内(即类、方法)

见http://msdn.microsoft.com/en-us/library/2c8f766e(VS.80).aspx

【讨论】:

#pragma 警告适用于编译器警告。它也适用于代码分析吗? @OregonGhost #pragma warning(suppress) 是专门为 TFS 代码分析引入的。 @JaredPar 这个问题没有提到 FxCop? @Stu 它说代码分析警告并按名称提及特定类别 (Microsoft.Globalization) @Stu:我用#pragma warning(suppress: CA1305) 试过这个,但没有成功。想法?【参考方案3】:

我按照@TrueWill 对@AnthonyWJones 回答的评论的建议下载了 FXCop。这给了我 SuppressMessage:

[SuppressMessage("Microsoft.Globalization",
    "CA1305:SpecifyIFormatProvider",
    MessageId = "System.String.Format(System.String,System.Object)")]

这比原本应该做的要困难得多。 FXCop 与 Visual Studio 的集成发生了什么?感谢回答者的帮助。

【讨论】:

谢谢,如何禁用 StyleCop 警告 SA1307 和 SA1305? @Hamish:我不知道 StyleCop。您可能需要为此提出一个新问题。 好吧,我已经做到了。以防其他人发现这很有用,这里是问题的链接:***.com/questions/5265154/…

以上是关于忽略 Visual Studio 中的代码分析规则的主要内容,如果未能解决你的问题,请参考以下文章

如何让 FxCop 拥有与 Visual Studio 代码分析相同的规则集?

Visual Studio中是否有可变命名约定的规则,可以在开发时强制执行?

Visual Studio 代码分析 (fxCop) 仅在第一次构建后运行

Visual Studio 代码分析与 StyleCop + FxCop

似乎无法忽略 Visual Studio 2010 中的库

在 Visual Studio 2010 中防止条件表达式中的赋值