是否有视觉工作室插件警告代码是否违反IDisposable模式?

时间:2010-12-16 18:19:52

标签: visual-studio idisposable

我想知道是否有一个插件可以检测并创建警告(或错误),如果它检测到创建了一个永远不会丢弃的IDisposable对象。

我查看了Resharper的文档,但没有看到任何看起来像我想要的东西。

编辑 - 更具体地说,我应该说一个实现IDisposable的局部变量,但从不处理。

例如,Pen是在绘制方法中创建的,但在绘制完成后不会处理。

2 个答案:

答案 0 :(得分:2)

在FxCop中已经开启和关闭了几次。它的当前状态再次开启,至少对于VS2010附带的版本而言。它会在此代码上生成CA2000

    protected override void OnPaint(PaintEventArgs e) {
        var pen = new Pen(Brushes.Black);
    }
  

警告5 CA2000:   Microsoft.Reliability:方法   'Form1.OnPaint(PaintEventArgs)',调用   System.IDisposable.Dispose on object   所有引用之前的“笔”   超出范围。

请注意此警告的可靠性不高,这是一个难以解决的问题。

答案 1 :(得分:1)

静态分析工具非常不可能显示某个对象是否曾经被置于任意程序中。我相信这实际上等同于解决停机问题。