Antworten:
Stylecop ist ein Tool zur Stilanalyse, das auf Quellcodeebene arbeitet. Es besteht hauptsächlich darin, einen einzigen gemeinsamen Stil bereitzustellen, mit dem verwaltete Projekte in der größeren Welt der verwalteten Software konsistent bleiben können. Es trifft Entscheidungen in Bezug auf den Stil in erster Linie, um heilige Kriege zu vermeiden (schließlich ist Stil fast immer eine inhärent subjektive Sache). Ich glaube nicht , dass ich jemals jemanden, der alle StyleCop Regeln gemocht getroffen habe, aber das ist ok . Dies bedeutet, dass StyleCop ein allgemein guter Kompromiss zwischen den zahlreichen vorhandenen Stilrichtlinien ist. (Wenn die Regeln von stylecop in hohem Maße anpassbar wären und nicht nur aktiviert / deaktiviert würden, würde dies den gesamten Zweck des Tools zunichte machen.)
FxCop hingegen ist ein statisches Analysetool, das auf der Ebene der verwalteten Assembly arbeitet. Es kann Anweisungen über Attribute erhalten, da es Attribute auf Codeelementen sehen kann, z. Es erkennt Probleme, die auf der "binären" Ebene (sozusagen) im Gegensatz zur syntaktischen Ebene auftreten.
Um Ihre Frage zu beantworten, ersetzt StyleCop FxCop nicht und FxCop ersetzt Stylecop nicht. Es handelt sich um zwei verschiedene Tools mit zwei unterschiedlichen Zwecken, die beide einen echten Vorteil für Ihren Code bieten können.
(AKA, ich laufe mit beiden. :))
Ein paar Beispiele für Dinge, die man erkennen könnte, im Vergleich zu Dingen, die der andere erkennen könnte:
StyleCop-Verstöße können Warnungen enthalten, die sich auf Folgendes beziehen: Leerzeichen, Formatierung, Dokumentation öffentlicher Methoden über XML-Kommentare, Reihenfolge der Methodendefinition innerhalb einer Klasse.
Zu den Verstößen gegen FxCop können Warnungen gehören, die sich auf Folgendes beziehen: Globalisierung, enge Kopplung, zyklomatische Komplexität, mögliche Null-Dereferenzen.
stylecop funktioniert mit Ihrem C # -Quellcode. fxcop betrachtet Ihren kompilierten Code aus einer beliebigen .net-Sprache.
Eine Alternative oder eine gute Ergänzung zu FxCop / StyleCop wäre die Verwendung des kommerziellen Tools NDepend . Mit diesem Tool kann man Code-Regeln über LINQ-Abfragen (nämlich CQLinq) schreiben . Haftungsausschluss: Ich bin einer der Entwickler des Tools
Standardmäßig werden mehr als 200 Coderegeln vorgeschlagen, darunter Design , Architektur , Codequalität , Codeentwicklung , Namenskonventionen , toter Code , Verwendung von .NET Fx ...
CQLinq dient zum Schreiben von Coderegeln, die live in Visual Studio oder während des Erstellungsprozesses überprüft und in einem HTML / Javascript-Bericht gemeldet werden können .
Die Stärke von CQLinq gegenüber FxCop oder StyleCop besteht darin, dass es einfach ist, eine Coderegel zu schreiben und sofort Ergebnisse zu erhalten. Es werden Einrichtungen zum Durchsuchen übereinstimmender Codeelemente vorgeschlagen. Konkret sieht das so aus:
FXCop führt eine statische Code-Analyse Ihrer verwalteten Code-Assemblys durch. Stellen Sie sich vor, Sie finden Probleme, die zur Laufzeit Probleme verursachen oder die Auswirkungen des Entwicklers auf den Code haben (nicht erreichbarer Code).
StyleCop analysiert die Struktur Ihres Codes aus Textsicht. Stellen Sie sich dies als Probleme vor, die sich auf Ihre Entwicklungs- und Entwurfserfahrung auswirken (Formatierung, Namenskonventionen, Dokumentation).
Sie sind beide SEHR wertvolle Werkzeuge und Sie sollten beide verwenden, aber sie konzentrieren sich auf verschiedene Probleme.
StyleCop führt eine Quellcode-Analyse durch, die nicht sehr konfigurierbar ist. Es macht nicht wirklich dasselbe wie FxCop, das den kompilierten Code analysiert.
Die Wikipedia-Artikel zu diesen bieten gute Zusammenfassungen der Unterschiede: