在 C++ 中,可以通过两个宏 CA_SUPPRESS_MESSAGE 和 CA_GLOBAL_SUPPRESS_MESSAGE 实现相同的目的。
建议您在调试版本或签入版本中使用源代码中禁止显示,以避免错误地提供源代码中禁止显示元数据以及由于元数据膨胀而影响执行或性能。
SuppressMessage 的用法
在应用 SuppressMessage 属性的实例的级别上,禁止显示代码分析警告。执行此操作的目的是为了使禁止显示信息与发生冲突的代码紧密耦合。
禁止显示的一般形式包括规则类别和一个规则标识符,该标识符包含可选的规则名称的用户可读表示形式。例如,
[SuppressMessage(
"Microsoft.Design"
,
"CA1039:ListsAreStrongTyped"
)]
如果出于严格的性能原因,要求最大程度地减少代码内禁止显示元数据,则可以省略规则名称本身。规则类别及其规则 ID 一起构成足够唯一的规则标识符。例如,
[SuppressMessage(
"Microsoft.Design"
,
"CA1039"
)]
出于可维护性的原因,建议不要使用该格式。
SuppressMessage 属性
当您右击“错误列表”中的某个代码分析警告并单击“禁止显示消息”时,SuppressMessage 属性将添加到您的代码中,或者添加到项目的全局禁止显示文件中。
SuppressMessage 属性的格式如下所示:
C#
[Scope:SuppressMessage(
"Rule Category"
,
"Rule Id"
,
"Justification"
,
"MessageId"
, Scope =
"Scope"
, Target =
"Target"
)]其中:
Rule Category - 定义的规则所属的类别。
Rule Id - 规则的标识符。支持对规则 ID 的使用短名称或长名称。短名称为 CAXXXX;长名称为 CAXXXX:FriendlyTypeName。
Justification - 用于记录禁止显示消息的原因的文本。
Message Id - 每个消息的问题的唯一标识符。
Scope - 在其上禁止显示警告的目标。如果未指定目标,则设置为属性的目标。支持的范围包括:
模块
命名空间
资源
类型
成员
参数
Target - 用于指定在其上禁止显示警告的目标的标识符。它必须包含完全限定的项名称。