2009-01-09 6 views
10

Ich habe vor kurzem angefangen, es zu benutzen. Allerdings nach dem Ausführen gegen eines der größten Projekte meines Unternehmens. Es wirft Berge von Problemen auf.Wie man FxCop überwältigende Berichte verwaltet

Die Liste der Probleme war so überwältigend, dass es Tage dauern würde, einige, wenn nicht alle Sachen zu finden und zu reparieren.

Jetzt weiß ich, dass es nicht sehr praktisch ist, alles zu reparieren, was Ihnen FxCop sagt. Aber wie ich neu zu diesem kleinen Werkzeug bin ...

Was sind einige gute Tipps und Tricks zur effektiven Verwendung von FxCop?

Auf ein neues Projekt und auf ein bestehendes Projekt?

Wenn auch die Programmierer bei meiner Firma in der Regel schreibt guten Code zur Verfügung gestellt?

Antwort

4

Zuerst können Sie am Anfang mit einem kleinen Regelwerk beginnen. Und dann erhöhen Sie die Anzahl der Regeln, die Sie anwenden.

Und auch müssen Sie einen Blick auf this questio n die Antworten haben ...

3

Erstellen Sie eine Baseline, indem Sie fxCop einmal ausführen und alle gefundenen Objekte ausschließen.

Speichern Sie dies als .fxcop-Datei und verwenden Sie diese, um zukünftige Prüfungen auszuführen.

Wenn Sie dann Änderungen an Ihrem Code vornehmen, werden Sie neue, verwaltbare Verletzungen erstellen. FxCop reflagiert Dinge, wenn Sie beispielsweise die Signatur einer Methode ändern.

Wenn Sie Zeit haben, können Sie nacheinander eine Kategorie von Verstößen angehen, indem Sie sie ausschließen.

1

Sortieren der Ausgang durch die Art der Regel ... dann durch die Sortierliste gehen, um zu sehen, welche Teilmenge der gebrochenen Regeltypen sind wichtig und es lohnt sich, IYO zu reparieren.

1

Nicht alles, was fxCop meldet, sind "mustfix" -Probleme. Beispielsweise ist das Einfügen von Benutzereingaben in einen Datenbankbefehl unter Verwendung einer Zeichenkettenverkettung viel schlimmer als Stilprobleme wie Ungarisch oder Einfangen einer Ausnahme anstelle einer spezifischeren Ausnahme.

3

Filtern Sie auf jeden Fall diejenigen heraus, die für Ihre Organisation nicht wichtig sind. Zum Beispiel war der gesamte Internationalisierungsblock für eines unserer Projekte größtenteils unwichtig, so dass wir ihn einfach ausschlossen und das alleine reichte, um die Liste überschaubar zu machen. (Es gibt einige großartige Vorschläge in diesem Block, die wir implementieren wollten, aber sie waren zu der Zeit nicht wichtig.)

Sie können auch ein paar FxCop-Projekte erstellen, die die Ausnahmen gruppieren, bis Sie die Nummer auf etwas herunter bekommen handhabbar ("repariere diese jetzt", "repariere diese bald", "repariere diese wann immer").

Ich bin ziemlich sicher, dass ich eine solide Woche des Ausschlusses/der Verstöße verbracht habe, bis wir eine Liste hatten, die unseren Richtlinien entspricht. Dann noch 2-3, die nur Verstöße beheben. :-(

+0

Das ist fast gleich zu einem Monat ... :-( – chakrit

+0

Traurig, aber wahr ... Je später Sie es in einem Projekt ausführen desto schlechter dran sind Sie - gelernt, dass aus Erfahrung. –

2

Die Sache über FxCop ist, es ist ein ausgezeichnetes Werkzeug für den spezifischen Anwendungsfall für entworfen wurde. Es wurde entwickelt, Klassenbibliothek, Entwicklern zu helfen. Also, wenn Sie Developer Express oder Infragistics und du bist‘ Um eine Code-Bibliothek zu erstellen, die weltweit von Entwicklern verwendet werden kann, braucht es eine gute Namensgebung, eine gute Globalisierung und eine Menge anderer Dinge.

Also wenn Sie alle Ihre Formulare Dinge wie frmMain nennen, wird FxCop beschweren, weil das in einer Klassenbibliothek hässlich aussieht. Aber wenn Sie nur an einer internen WinForms-App arbeiten, müssen Sie sich nicht darum kümmern. Ebenso werden Sie mit all dem Zeugs über IFormatProvider, MessageBox-Überladungen, die die Textrichtung angeben, und so weiter verrückt. Wenn Sie jedoch keinen Code für eine globale Zielgruppe erstellen, können Sie diese ignorieren.

Wichtig ist, die Zielgruppe von FxCop zu verstehen. Sie können bestimmte Empfehlungen aufgrund der Unterschiede zu dieser Zielgruppe ignorieren.

0

Eine Alternative zu FxCop wäre die Verwendung des Tools NDepend. Dieses Tool ermöglicht das Schreiben von Code-Regeln über C# LINQ-Abfragen (was wir CQLinq nennen). Haftungsausschluss: Ich bin einer der Entwickler des Tools

Mehr als 200 code rules sind standardmäßig vorgeschlagen. Das Anpassen vorhandener Regeln oder das Erstellen eigener Regeln ist dank der bekannten C# LINQ-Syntax problemlos möglich.

Um die Anzahl der falsch-positive niedrig zu halten (das heißt überwältigende Berichte zu vermeiden), bietet CQLinq die einzigartigen Fähigkeiten zu definieren, was die Menge JustMyCode durch spezielle Code-Abfragen ist mit notmycode vorangestellt. Weitere Erläuterungen zu dieser Funktion finden Sie unter here. Hier sind zum Beispiel zwei notmycode Standardabfragen:

Um die Anzahl der falsch-positive niedrige zu halten, mit CQLinq können Sie auch Regeln zur Folge konzentrieren sich nur auf Code hinzugefügt oder Code refaktoriert, da ein defined baseline in the past. Siehe die folgende Regel, dass Methoden erkennen zu komplex hinzugefügt oder überarbeitet, da die Basislinie:

warnif count > 0 
from m in Methods 
where m.CyclomaticComplexity > 20 && 
     m.WasAdded() || m.CodeWasChanged() 
select new { m, m.CyclomaticComplexity } 

schließlich feststellen, dass mit NDepend Coderegeln live in Visual Studio und Bauprozess Zeit überprüft werden können, in einem generated HTML+javascript report.