跟踪未曝光的一次性对象

时间:2009-03-08 22:51:44

标签: .net idisposable

是否有一个工具可以扫描您的代码并确定哪些实现IDisposable的对象在编译时或运行时没有被置于代码库中?

我在代码中有可能没有处理对象的区域,但很难回头看看哪些对象首先需要它。

3 个答案:

答案 0 :(得分:8)

有很多静态分析工具,可以在这里提供帮助。

CodeRush / Refactor Pro和Resharper将在代码时在Visual Studio中向您显示未处置的对象。

现在,作为Visual Studio Code Analysis的一部分打包的FxCop可以为未使用的本地人和班级成员生成编译时警告。

答案 1 :(得分:3)

来自红门的ANTS memory profiler将在运行时帮助解决这个问题。这是我最喜欢的工具之一。

答案 2 :(得分:-1)

当垃圾收集器最终清理不再使用的类时,将调用类的析构函数。你可以做的是检查析构函数中是否已调用“Dispose”。建议不要使用析构函数,但出于测试目的,它可能很有用。

这个方法的唯一问题是你必须创建自己的类,继承你需要为IDispose测试的类并覆盖Dispose方法(这样你就可以设置一个标记,说明它已被调用),在构造函数中初始化标志并在析构函数中检查它(使用“~ClassName(){...}”实现它)