Existe-t-il un moyen de vérifier automatiquement le code source C# existant pour les instances d'objets qui ne sont pas correctement éliminés, par exemple. en utilisant try/catch/finally ou en utilisant des instructions? Ou dois-je juste regarder manuellement le code?Vérification des objets qui implémentent IDisposable mais qui ne sont pas correctement disposés
Répondre
Jetez un oeil à FxCop pour VS2010 - Je crois qu'ils ont restauré la règle DisposeObjectsBeforeLeavingScope - qui peut faire exactement ce que vous voulez.
Utilisez FX Cop pour une règle pour vérifier si IDisposable sont placés dans un bon bloc avec ...
Vous pouvez utiliser réflecteur pour passer par l'objet avec IDisposable
Ref. : Is there a list of common object that implement IDisposable for the using statement? pour idée supplémentaire
HTH
CodeRush a un certain support pour le repérage évident variantes de ce. Une autre option possible est (peut-être via un symbole de compilation facultatif) ajouter un finaliseur à vos propres objets IDisposable
, et se plaindre fortement s'ils sont finalisés sans être éliminés (définir un drapeau booléen dans le Dispose
). Mais notez: avoir un finalizer change le comportement des objets, alors ne le laissez pas dans le code de production (ou même vos tests unitaires réguliers).
- 1. Élimination des membres qui implémentent IDisposable
- 2. Les objets IDisposable dans HttpContext.Current.Session sont-ils disposés sur Application_End?
- 3. Icon.ExtractAssociatedIcon pour les objets qui ne sont pas des fichiers?
- 4. Accéder aux interfaces des classes qui ne les implémentent pas?
- 5. Trouver des articles qui ne sont pas [Serializable]
- 6. débogueurs php qui ne sont pas gonflés
- 7. Recevez tweets qui ne sont pas mentionne
- 8. Est-ce que opengl rend des objets qui ne sont pas visibles?
- 9. Énumération des collections qui ne sont pas intrinsèquement IEnumerable?
- 10. getopt_long() et les paramètres qui ne sont pas des drapeaux?
- 11. Comment trouver des enregistrements qui ne sont pas joints?
- 12. Mocking classes qui ne sont pas des interfaces
- 13. PHP trouver des mots qui ne sont pas en regex
- 14. Identifier les clients WCF qui ne disposent pas correctement
- 15. Des exemples de macros simples mais convaincants qui ne sont pas déjà dans Clojure
- 16. Les lignes qui ressortent dans un fichier, mais ne sont pas des doublons exacts
- 17. JACOB ne libère pas les objets correctement
- 18. Avec JDO, est-il possible d'interroger tous les objets qui implémentent une interface particulière?
- 19. Implémentation IDisposable pour la classe qui contient des threads
- 20. Vérification des objets sérialisés
- 21. Les plugins ne sont pas correctement installés
- 22. Les objets affichés ne s'alignent pas correctement
- 23. Création d'une ArrayList d'objets avec une boucle, vérification des objets qui se chevauchent
- 24. Existe-t-il un modèle reconnu pour les objets inutiles qui implémentent une interface?
- 25. retourner les objets qui ne sont pas dans le fichier de mappage de nhibernate hql
- 26. Dans ActionScript 3, comment puis-je traiter les objets qui ne sont pas sur l'image 1?
- 27. Vérification automatique des appels aux API qui ne sont pas pris en charge dans iOS <4.0?
- 28. git ignore les fichiers qui ne sont pas dans .gitignore?
- 29. comment randomiser les noms qui ne sont pas répétés?
- 30. regex: match-espaces blancs qui ne sont pas enfermés dans []
J'ai téléchargé la version d'évaluation de VS2010 Premium et il a en effet cette règle CA2000. Merci. – etoisarobot