¿Se puede configurar Resharper para advertir si no se maneja correctamente el identificador?
Hay una configuración en Resharper 4 (o incluso en el propio Visual Studio...) que obliga a una advertencia si olvido envolver código en un bloque using
, o ommit la llamada de Eliminación adecuada en un bloque finally
?
5 answers
El análisis de eliminación automático correcto requiere DFA (Análisis de Flujo de Datos) de manera global. Es poco probable que cree un objeto identificable y no llame a ningún método en él y no lo pase como argumento. Si el objeto desechable se pasa a otros métodos (incluyendo llamar a sus miembros, cuando "esto" se pasa implícitamente), la herramienta debe analizar si no se llama a Dispose dentro, o si ese objeto no se almacena en algún lugar para su posterior eliminación.
Dicho esto, implementación ingenua de comprobar si el objeto desechable está de hecho dispuesto con la construcción" using " o de cualquier otra manera produciría demasiados falsos positivos, y haría inútil el análisis.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 13:27:00
Descontento con los métodos actuales, he creado el mío propio: EyeDisposable . Es un instrumento IL por lo que debería atrapar muchas fugas no atrapadas por el análisis estático. Todavía está en su etapa inicial, los inpuits son bienvenidos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-22 12:40:50
Podría diseñar un pequeño complemento a R# que podría haber ejecutado dentro del editor de código que escanee el código y actualice el análisis de código para reflejar que es un objeto al que le falta la estructura que acaba de describir.
Echaría un vistazo a la arquitectura del plugin R# si decides ir por esa ruta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 14:44:24
Ver esta entrada de blog para algunos trucos para probar Dispose()
en DEBUG
. Básicamente, escribe un destructor de solo DEPURACIÓN que afirme que estás dispuesto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 15:03:10
Es posible que desee mirar 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 variables que crea.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-22 10:37:52