如果IDisposable处理不正确,是否可以将Resharper设置为警告?
时间:2020-03-06 14:25:49 来源:igfitidea点击:
如果我忘记将代码包装在using
块中,或者忽略了在finally
块中进行适当的Dispose调用,Resharper 4(甚至是Visual Studio本身)中是否存在强制发出警告的设置?
解决方案
正确的自动处理分析需要全局使用DFA(数据流分析)。我们不太可能创建IDisposable对象,并且不对它调用任何方法,也不要将其作为参数传递。如果将一次性对象传递给其他方法(包括在隐式传递" this"时调用其成员),则该工具应分析是否未在内部调用Dispose,或者该对象没有存储在以后的处置中。
也就是说,天真地执行检查一次性对象是否实际上是通过"使用"构造或者以其他任何方式处置的操作会产生过多的误报,并使分析无用。
我们可以为R设计一个小的插件,可以在代码编辑器中运行该插件,以扫描代码并更新代码分析,以反映我们缺少刚刚描述的结构的对象。
如果我们决定走这条路,我将研究Rplugin架构。
有关在DEBUG中测试Dispose()的一些技巧,请参见此博客文章。基本上,编写一个仅DEBUG的析构函数,断言我们已被处置。
我们可能需要为此查看FXCop:http://msdn.microsoft.com/zh-cn/library/ms182328(VS.80).aspx
可惜R不能处理它,即使只是警告类和/或者我们创建的变量中的字段。