【发布时间】:2019-02-08 09:55:43
【问题描述】:
我们正在使用 Coverity 来分析我们的 C# 代码是否存在缺陷。
我们有一些单元测试可以明确验证空参数是否被正确处理。
这些被 Coverity 列为缺陷。如果这是微软自己的代码分析,我们可以用[SuppressMessage(...)] 标记我们的方法进行空值传递,Coverity 是否可以使用类似的东西?
我们宁愿不要试图混淆代码以混淆 Coverity。
下面是给出此缺陷的示例代码:
[Test]
public void SomeRandomTest()
{
var obj = new SomeRandomObject();
Assert.Throws<ArgumentNullException>(() => obj.Method(null));
}
...
public class SomeRandomObject
{
public void Method(object value)
{
if (value == null) throw new ArgumentNullException(nameof(value));
...
}
}
显式错误显示为
显式 null 取消引用 (FORWARD_NULL)
var_deref_model:将null传递给Method,检查null后抛出异常。
【问题讨论】:
-
Something like this 可能但带有
var_deref_model事件标签? -
这看起来很有希望。愿意留下这个答案吗?我们会试一试,看看这是否能消除事件,但这肯定看起来正是我们想要的。
-
我只发现用一些有创意的 Google-fu,完全不知道它是否会起作用。如果确实如此,将添加一个答案。
-
我们正在等待覆盖率分析,我认为它每天晚上都会运行,我是团队中的新手,所以我不完全确定该部分构建的运行频率,将发布当我知道时更新评论。
-
我们在这里尝试了多种方法,所以如果我发现什么有效,我会发布更新。