Existe-t-il un paramètre dans Resharper 4 (ou même dans Visual Studio lui-même ...) qui force un avertissement si j'oublie de mettre le code dans un bloc using
ou omet le bon appel Dispose dans un finally
bloc?
Réponses
Trop de publicités?Automatique correcte Disposer d'analyse nécessite des DFA (Analyse de Flux de Données) de manière globale. Il est peu probable que vous créez un IDisposable objet et ne pas appeler n'importe quelle méthode sur elle et de ne pas les passer en argument. Si jetables objet est passé à d'autres méthodes (y compris l'appel de ses membres, lorsque "cela" est implicitement passé), l'outil doit analyser si dispose n'est pas appelée à l'intérieur, ou que l'objet n'est pas stocké quelque part pour élimination ultérieure.
Cela dit, implémentation naïve de vérifier si jetables objet est en fait disposé avec "l'aide" de construire ou de toute autre manière donnerait trop de faux positifs, et de rendre l'analyse inutile.
Mécontent des méthodes actuelles, j'ai créé le mien: EyeDisposable . C'est un instrumentateur IL donc il devrait attraper de nombreuses fuites non détectées par l'analyse statique. Il est encore à ses débuts, les inpuits sont les bienvenus.
Vous pouvez concevoir un petit complément à R # que vous auriez pu exécuter dans l'éditeur de code qui analyse le code et met à jour l'analyse de code afin de refléter le fait que vous êtes un objet manquant de la structure que vous venez de décrire.
Je regarderais dans l'architecture du plugin R # si vous décidiez de suivre cette voie.
Voir ce billet de blog pour quelques astuces pour tester Dispose()
en DEBUG
. Fondamentalement, écrivez un destructeur réservé à DEBUG qui affirme que vous avez été supprimé.