11

我正在寻找一种方法来查找给定警告 (BC42015) 的 SuppressMessageAttribute 类别。

收到以下警告后,我想压制它。

'SomeLib.SomeInterface.DrawRuler' is already implemented by the base class 'SomeLib.SomeClass'. Re-implementation of function assumed.  C:\Project\somefile.vb  5   115 ALibName

使用 SuppressMessage 属性应该可以工作,但我怎样才能找到相关的类别。以下将不起作用。

<CodeAnalysis.SuppressMessageAttribute("IDUNNO","BC42015")>

所有 MSDN 示例都毫无用处。 在源抑制概述中

规则类别 - 定义规则的类别。有关代码分析规则类别的更多信息,请参阅一些无用的链接。

4

4 回答 4

8

发现代码分析警告类别以用于SuppressMessageAttribute属性的一般方法是查阅警告文档。

例如,对于CA1039,我们得到:

TypeName            ListsAreStronglyTyped

CheckId             CA1039

Category            Microsoft.Design

Breaking Change     Breaking

现在,因为BC42015我们找不到这样的信息。为什么?因为它不是代码分析警告。这是一个编译器警告(请注意,我们在 MSDN 库的完全不同的部分)。

据我所知,没有本地方法可以覆盖 VB 中的编译器警告 - 您所能做的就是在项目级别禁用警告(但我承认,这几乎不是您想要做的)。

于 2012-11-26T08:42:14.143 回答
2

您应该在以下位置找到警告列表:http: //msdn.microsoft.com/en-us/library/dd380629 (v=vs.100).aspx和http://msdn.microsoft.com/en-us/库/ms228296%28v=VS.90%29.aspx

PS:要抑制特定警告,您是否尝试过http://msdn.microsoft.com/en-us/library/vstudio/edzzzth4(v=vs.100).aspx

于 2012-11-26T08:41:32.100 回答
1

在 VS2010 中,您只需右键单击错误列表中的消息并选择“Suppress Message(s)”您可以选择在源代码或全局项目抑制文件中进行抑制。

您可以查看生成的抑制,看看它做了什么。

于 2015-11-16T23:28:08.450 回答
1

正如 Damien_The_Unbeliever 的回答中提到的,代码分析警告的处理方式与编译器警告不同。但是,您可以使用预处理器指令(#Disable Warning在 VB 中,#pragma warning在 C# 中)在代码中的特定位置抑制此或其他编译器警告。

此示例显示 BC40003 在类 C2 实现 sub1 时被抑制,该子类已由基类 C1 实现:

    Interface I1
        Sub sub1(arg1 As Integer)
    End Interface

    Class C1
        Implements I1
        Public Sub sub1(arg1 As Integer) Implements I1.sub1
        End Sub
    End Class

    Class C2
        Inherits C1
        Implements I1
#Disable Warning BC40003
        Public Sub sub1(arg1 As Integer) Implements I1.sub1
#Enable Warning BC40003
        End Sub
    End Class
于 2021-08-01T02:17:19.810 回答