2010-12-16 9 views
1

Ich habe mich gefragt, ob es ein Addon gibt, das eine Warnung (oder einen Fehler) erkennen und erstellen kann, wenn es die Erstellung eines IDisposable-Objekts entdeckt, das niemals entsorgt wird.Gibt es ein visuelles Studio-Addon, das warnt, wenn Code das IDisposable-Muster verletzt?

Ich sah Resharpers Dokumente durch, aber sah nichts, was aussah, als was ich wollte.

bearbeiten - Um genauer zu sein, hätte ich eine lokale Variable gesagt, die IDisposable implementiert, aber nie Disposed.

Zum Beispiel wird ein Stift in einer Malmethode erstellt, aber nicht nach der Zeichnung entsorgt.

Antwort

2

Dies wurde in FxCop einige Male ein- und ausgeschaltet. Der aktuelle Status ist wieder aktiviert, zumindest für die Version, die mit VS2010 geliefert wird. Er erzeugt CA2000 auf diesem Code:

protected override void OnPaint(PaintEventArgs e) { 
     var pen = new Pen(Brushes.Black); 
    } 

Warnung 5 CA2000: Microsoft.Reliability: In Methode 'Form1.OnPaint (PaintEventArgs)', rufen System.IDisposable.Dispose auf Objekt 'pen' bevor alle Verweise darauf sind außerhalb des Geltungsbereichs.

Beachten Sie, dass die Zuverlässigkeit dieser Warnung nicht groß ist, es ist ein schwieriges Problem zu lösen.

+0

Das sieht nah genug für mich aus! – asawyer

1

Es ist unglaublich unwahrscheinlich, dass ein statisches Analysewerkzeug in der Lage wäre zu zeigen, dass ein Objekt jemals in einem beliebigen Programm angeordnet ist oder nicht. Ich glaube, dass dies effektiv der Lösung des Halting-Problems entspricht.

+0

Sorry, ich habe die Frage genauer bearbeitet. – asawyer