如何在.NET应用中使用Coverity的[Tainted]与[NotTainted]属性?
解决Coverity的[Tainted]/[NotTainted]属性在.NET中的使用问题
Coverity文档提到,.NET中可使用[Tainted]和[NotTainted]这类属性,它们位于Coverity.Attributes命名空间,但在NuGet.org上找不到对应的Coverity包,以下是可行的解决方法:
手动定义对应特性类:Coverity的这类标记属性不需要依赖官方分发的程序集,静态分析工具仅识别属性的名称与结构。你可以在项目中自行创建匹配的类:
- 在项目中新建
Coverity.Attributes命名空间 - 定义继承自
System.Attribute的特性类,示例代码如下:namespace Coverity.Attributes { [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.Field, AllowMultiple = false)] public class TaintedAttribute : Attribute { } [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.Field, AllowMultiple = false)] public class NotTaintedAttribute : Attribute { } }
- 在项目中新建
注意事项:
- 确保
AttributeUsage的设置与文档描述一致,保证属性能正确应用到参数、返回值或字段上 - 无需实现额外逻辑,这些属性仅作为Coverity静态分析的标记,运行时无实际功能
- 确保
内容的提问来源于stack exchange,提问作者Frederick Javalera
相关产品推荐
相关产品推荐

