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
。 这是一种这样的技术 。