可以让代码分析理解代码合同吗?

Sta*_*son 21 c# code-analysis code-contracts

在组合使用代码分析和代码合同时,我会收到很多警告

CA1062:Microsoft.Design:在外部可见方法'Foo.Bar(Log)'中,在使用之前验证参数'log'.

在Foo.Bar,我有一份验证的合同log.

public Bar(Log log)
{
   Contract.Requires(log != null);
   log.Lines.Add(...);
   // ...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让FxCop理解代码合约?

Jar*_*Par 14

不,我认为在当前构建中不可能,因为合同重写器生成的代码不会产生FxCop正在寻找的标准模式.

通常虽然我在使用代码契约时禁用了这个特定的FxCop规则.我发现静态验证器不仅可以弥补这条规则的损失,因为它会比FxCop更加积极地对缺乏检查感到愤怒.我会建议在这里采用相同的方法来解决这个问题.

  • 要实际执行此操作,您必须执行以下任务:1.在代码分析中禁用CA1062 - 2.在项目的"代码约定"窗格中启用"执行静态合同检查". - **3.启用"隐含的非空义务" - 4.将警告级别设置为"hi"(重要的是,这就是我所缺少的!)** (3认同)