Welche Strategien werden bei der Implementierung von FxCop/statische Analyse auf vorhandenen Codebasen mit vorhandenen Verstößen verwendet? Wie kann man die Verstöße gegen die statische Analyse am effektivsten reduzieren?Wie implementiert man FxCop/statische Analyse auf einer vorhandenen Codebasis?
Antwort
Verwenden Sie das Attribut [SuppressMessage] großzügig, um damit zu beginnen. Zumindest am Anfang. Sobald Sie die Anzahl über das Attribut auf 0 gesetzt haben, legen Sie eine Regel fest, nach der neue Checkins keine FxCop-Verstöße einführen dürfen.
Visual Studio 2008 verfügt über eine nützliche Codeanalysefunktion, mit der Sie sicherstellen können, dass die Codeanalyse bei jedem Build ausgeführt wird und Sie Warnungen als Fehler behandeln können. Das könnte die Dinge ein wenig verlangsamen, daher empfehle ich, einen Continuous Integration Server (wie CruiseControl.NET) einzurichten und bei jedem Check-in eine Code-Analyse durchzuführen.
Sobald Sie es unter Kontrolle bekommen und keine neuen Verstöße bei jedem Check-in einführen, beginnen Sie ganze Klassen von FxCop-Verstößen gleichzeitig anzugehen, mit dem Ziel, die von Ihnen verwendeten SuppressMessageAttributes zu entfernen.
Um zu verfolgen, welche Sie wirklich behalten möchten, fügen Sie den zu unterdrückenden Elementen immer einen Korrekturwert hinzu.
Schreiben Sie Ihren Code im Vorübergehen neu!
Im Ernst, eine alte Codebasis wird Hunderte von Fehlern haben - aber deshalb haben wir Anfänger/Praktikanten Programmierer. Das Korrigieren von FxCop-Verstößen ist eine gute Möglichkeit, einen Überblick über die Codebasis zu erhalten und auch zu lernen, wie man konformen .NET-Code schreibt.
Also nur in den sauren Apfel beißen, viel Koffein trinken und es in ein paar Tagen schaffen!
NDepend looks like es könnte tun, was Sie wollen, aber ich bin mir nicht sicher, ob es in eine automatisierte CruiseControl.Net-Build integriert werden kann, und den Build fehlschlagen, wenn der Code die Anforderungen nicht erfüllt (was ist was ich gerne würde).
Irgendwelche anderen Ideen?
Eine Alternative zu FxCop wäre das Tool NDepend. Dieses Tool ermöglicht das Schreiben von Code-Regeln über C# LINQ-Abfragen (was wir CQLinq nennen). Haftungsausschluss: ich bin einer der Entwickler dieses Tools
Mehr als 200 code rules werden 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 gering zu halten, 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:
Damit die Zahl der falsch-positive niedrig, mit CQLinq können Sie auch Regeln konzentrieren führen 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.
- 1. Wie implementiert man REST in einer Webanwendung?
- 2. Wie implementiert man den HandleError-Filter auf einer Ajax-Anfrage?
- 3. Hinzufügen einer vorhandenen Lösung zu einem vorhandenen Projekt auf TFS
- 4. Wie implementiert man Textauswahl?
- 5. Wie implementiert man die Suche auf jqgrid?
- 6. Wie finden Sie eine bestimmte Funktionalität in einer großen Codebasis?
- 7. Wie implementiert man Wasserkräuselungen?
- 8. Wie implementiert man jScroll?
- 9. Wie man IDisposable richtig implementiert
- 10. Wie integriert man Clojurescript in bestehende JavaScript-Codebasis?
- 11. Asymptotische Analyse einer Wiederholungsrelation
- 12. Wie unterdrückt man Code-Analyse auf generierten Code?
- 13. Wie implementiert man vollständig deklarative Horn Logik?
- 14. Strategie zum Verständnis einer großen Codebasis
- 15. Tags in Emacs mit einer großen Codebasis
- 16. Gemeinsame Nutzung einer Codebasis zwischen mehreren Projekten
- 17. Simplemodal - Wie man es implementiert?
- 18. Werkzeuge zum Analysieren der C++ - Codebasis
- 19. Wie man bessere OOPs implementiert
- 20. Wie man eine Kommentarbenachrichtigung implementiert?
- 21. Wie man Objekt und Struktur von einer vorhandenen Struktur ändert?
- 22. Wie schreibe ich Komponententests in PHP mit einer prozeduralen Codebasis?
- 23. Wie kann ich Ctags in einer großen Codebasis ausführen?
- 24. Wie MacOS Entwickler große Codebasis navigieren
- 25. Wie implementiert man JavaScript Cascades ..?
- 26. Wie implementiert man nested_form gem?
- 27. Wie implementiert man einen Ansichtshalter?
- 28. Wie implementiert man JavaScript-Funktion?
- 29. Wie implementiert man einen Zustandsraumbaum?
- 30. Wie implementiert man das Prototypmuster?