【问题标题】:How do I suppress FxCop rule 'DoNotCatchGeneralExceptionTypes' with SupressMessage?如何使用 SupressMessage 抑制 FxCop 规则“DoNotCatchGeneralExceptionTypes”?
【发布时间】:2026-02-11 21:10:01
【问题描述】:

我的代码可以捕获并记录所有内容。我通常不这样做,但我正在编写一个 HTTP 处理程序并希望返回一个适当的 HTTP 代码。无论如何,我将以下内容放在我的方法的顶部:

[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "We just log the exception and return an HTTP code")]

FxCop 似乎忽略了这一点,这非常令人沮丧。特别是因为它也忽略了我所有的复合词覆盖!

知道为什么要这样做吗?我正在使用 FxCop 10,它是 Windows 7/.NET 4 SDK 的一部分。

【问题讨论】:

    标签: fxcop


    【解决方案1】:
    1. Solution Explorer 中,右键单击您的项目并选择 属性
    2. 属性窗口中,选择构建标签。
    3. 条件编译符号文本框中,输入 CODE_ANALYSIS
    4. 在要禁止显示某些消息的代码中,添加 命名空间 System.Diagnostics.CodeAnalysis 到 using 部分。
    5. 在 FxCop 中,右键单击要隐藏的消息,然后 选择复制为 -> SuppressMessage
    6. 在您的 C# 代码中,将 SuppressMessage 属性粘贴到您的 代码。

    您的 SupressMessage 看起来正确,因此可能是缺少条件编译符号!

    希望这会有所帮助,至少可以在我的机器上运行;) 问候,汤姆。

    Source

    【讨论】:

    • 谢谢汤姆,这不是我第一次忘记那个符号了! :|