是否有本地使用的IDisposable的FxCop规则?

ulr*_*chb 6 .net c# fxcop idisposable

...如果我在局部变量中使用IDisposable,但不调用Dispose()或使用using()模式.

public void BadMethod()
{
    var fs = new FileStream("file.txt", FileMode.Create);
    fs.WriteByte(0x55);
    // no dispose, no using()
}
Run Code Online (Sandbox Code Playgroud)

就像"拥有一次性领域的类型应该是一次性的"规则的领域.


编辑:由FileStream替换MemoryStream,因为MemoryStream只是分配内存而不使用(非托管)资源,所以有人可以讨论强制Dispose()调用.

bob*_*mcr 15

这有一个FxCop规则吗?是的,不是.

在FxCop 1.35中,这是Visual Studio 2005 Code Analysis所基于的,有一个规则DisposeObjectsBeforeLosingScope就是这样做的.

在FxCop 1.36(Visual Studio 2008代码分析)中,他们删除了他们的数据流分析引擎,这意味着还必须删除此规则.

但是,在下一个FxCop(Visual Studio 2010代码分析)中,似乎DisposeObjectsBeforeLosingScope已经返回!