Resharper 4(甚至 Visual Studio 本身...)中是否有一个设置,如果我忘记将代码包装在 using 阻止,或在 a 中省略正确的 Dispose 调用 finally 堵塞?

有帮助吗?

解决方案

正确的自动Dispose分析需要全局的DF​​A(数据流分析)。您不太可能创建 IDisposable 对象并且不调用它的任何方法并且不将其作为参数传递。如果将一次性对象传递给其他方法(包括在隐式传递“this”时调用其成员),则该工具应分析是否未在其中调用 Dispose,或者该对象是否未存储在某处以供以后处理。

也就是说,检查一次性对象是否实际上是通过“使用”构造或以任何其他方式处置的天真实现会产生太多误报,并使分析变得无用。

其他提示

不满意当前的方法,我创建了自己的: 眼睛一次性. 。它是一个 IL 仪器,因此它应该捕获静态分析未捕获的许多泄漏。目前还处于早期阶段,欢迎大家踊跃留言。

您可以为 R# 设计一个小型插件,您可以在代码编辑器中运行该插件,以扫描代码并更新代码分析,以反映您是一个缺少刚刚描述的结构的对象。

如果您决定走这条路,我会研究 R# 插件架构。

这篇博文 一些测试技巧 Dispose()DEBUG. 。基本上,编写一个仅调试的析构函数来断言您已被处置。

您可能需要查看 FXCop 来了解以下内容: http://msdn.microsoft.com/en-us/library/ms182328(VS.80).aspx

遗憾的是 R# 无法处理它,即使只是对类中的字段和/或您创建的变量发出警告。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top