Resharper自定义搜索模式以警告IDisposable对象

由于resharper仍未提供有关实现IDisposable的对象的任何警告,我想在resharper 5.0中创建一些自定义搜索模式。

到目前为止我有这个:

(并且不介意我在模式中替换注释,我并不关心它,我只是想在处理一次性对象时在代码中有明确的警告。)

-  -  This class implements IDisposable interface. Please use Using statement, or dispose the object manually when done using. $type$  -       -  This class implements IDisposable interface. Please use Using statement, or dispose the object manually when done using. new $type$($args$)  -        

这处理变量声明的情况,例如

 Bitmap myBitmap = GetBitmap(); private Bitmap _bitmap; 

和CTOR电话,例如

 var myBitmap = new Bitmap(...); 

它不支持的是:

 var myBitmap = GetBitmap(); 

我找不到任何关于如何定义搜索模式的示例,该搜索模式将找到’var’用法,或者是类型为IDisposable的方法返回类型。

我确定有办法,但我找不到它。

这些模式的问题在于,当您实际处理对象时它们不会消失,除非可能是使用语句内部的局部变量声明。 它也不跟踪对象所有权,例如工厂方法和传递方法。 因此,我认为通过结构化模式实现它是无用的。

无论如何,您可能需要两种模式进行局部变量检查,例如

 var $identifier$ = $expression$; $type$ $identifier$ = $expression$; 

表达式和类型正在实现IDisposable。

虽然这不能直接回答您的问题,但是有各种运行时技术可以找到无关的IDisposable 。 这是一种这样的技术 。