Salut,
On néglige souvent de détruire les objets que l'on créé en se disant que le garbage collector se débrouillera bien tout seul.
Cependant, ce n'est pas toujours le cas ou alors on essaye d'utiliser des objets dont on pense qu'on peut encore disposer.
Je voudrais donc créer une règle dans FXCop afin de vérifier que tous les types qui présentent une méthode "Dispose" sont utilisés dans un "using".
J'ai repris le code de cet article qui analyse les membres d'une classe.
Plutôt qu'un membre, j'imagine qu'il faut vérifier un "Type". Si ce type présente une méthode (un membre) Dispose, ou bien implémente l'interface IDisposable, alors il faut vérifier qu'il se trouve dans un using.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 using System; using System.Collections.Generic; using System.Text; using Microsoft.FxCop.Sdk; using System.Collections; namespace Immobilis.Fundamentals.CustomRules { public abstract class BaseCustomRule : BaseIntrospectionRule { protected BaseCustomRule(string ruleName) : base(ruleName, "ImmobilisCustomRules.Rules", typeof(BaseCustomRule).Assembly) { } } public class Rule1 : BaseCustomRule { public Rule1() : base("ImmobilisRule1") { } public override void BeforeAnalysis() { base.BeforeAnalysis(); } public override ProblemCollection Check(Member member) { if (member == null) return null; if (member.ToString().StartsWith("toto")) Problems.Add(new Problem(GetResolution(member.Name.ToString()))); return Problems; } public override void AfterAnalysis() { base.AfterAnalysis(); } } }
C'est bien dit comme ça, mais je ne sais pas trop comment faire.
Quelqu'un aurait-il une idée?
Merci
A+
Partager