¿Puede configurar Resharper para advertir si IDisposable no se manejó correctamente?

¿Existe una configuración en Resharper 4 (o incluso en Visual Studio en sí …) que fuerza una advertencia si olvido incluir el código en un bloque que using , o si omito la llamada Dispose en un bloque finally ?

El análisis correcto de Eliminación automática requiere DFA (Análisis de flujo de datos) de forma global. Es poco probable que cree un objeto IDisposable y no llame a ningún método y no lo transmita como argumento. Si el objeto desechable se pasa a otros métodos (incluida la llamada a sus miembros, cuando se pasa implícitamente “this”), la herramienta debe analizar si Dispose no se llama dentro, o ese objeto no se almacena en algún lugar para su posterior eliminación.

Dicho esto, la implementación ingenua de la comprobación de si el objeto desechable está dispuesto de hecho con la construcción “que usa” o de cualquier otra forma arrojaría demasiados falsos positivos y haría que el análisis sea inútil.

Descontento con los métodos actuales, creé el mío: EyeDisposable . Es un instrumento IL, por lo que debería detectar muchas fugas que no son detectadas por el análisis estático. Todavía está en su etapa inicial, los inpuits son bienvenidos.

Puede diseñar un pequeño complemento a R # que podría haber ejecutado dentro del editor de código que escanea el código y actualiza el análisis del código para reflejar que es un objeto al que le falta la estructura que acaba de describir.

Buscaría en la architecture del complemento R # si decides seguir esa ruta.

Vea esta publicación en el blog para algunos trucos para probar Dispose() en DEBUG . Básicamente, escriba un destructor de solo DEPURACIÓN que afirme que usted fue eliminado.

Es posible que desee ver FXCop para esto: http://msdn.microsoft.com/en-us/library/ms182328(VS.80).aspx

Es una pena que R # no lo maneje, incluso si solo es una advertencia para los campos de su clase y / o las variables que crea.