Stylecop gegen FXcop


Antworten:


170

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.


1
Ja, die vorherigen Antworten zum Vergleich der beiden sind in jeder Hinsicht falsch. StyleCop und FxCop führen zwei sehr unterschiedliche Aufgaben aus. Es lohnt sich, den Wert zu untersuchen, den jede auf Ihrer Codebasis bietet, und warum Sie sie ausführen sollten.
Jedidja

3
Stimmen Sie zu, dass nicht alle StyleCop-Regeln gut sind, aber wie Sie sagen, können diejenigen, die Sie nicht möchten, deaktiviert werden. Wir verwenden StyleCop - nachdem wir die einfachen dummen Regeln deaktiviert haben, bietet es uns einen guten Wert - zu geringen Kosten ..! Empfohlen. (Beachten Sie, dass wir es auf den ersten Blick hassten ..)
stiank81

@ stiank81: Ja, ich denke, jeder hasst StyleCop zuerst. Nach kurzer Zeit zeigen sich die Vorteile jedoch wirklich und es erweist sich als ein sehr nützliches Werkzeug zur Aufrechterhaltung der Konsistenz in der Quelle. :)
Greg D

1
tolle Antwort, wonach ich gesucht habe :)
GibboK

16

stylecop funktioniert mit Ihrem C # -Quellcode. fxcop betrachtet Ihren kompilierten Code aus einer beliebigen .net-Sprache.


Kann FXCop also einen Wert hinzufügen, wenn Sie Stylecop verwenden?
JL.

Wirklich, Sie sind besser dran, wenn Sie FxCop verwenden.
Andrew Rollings

Zumindest für den Moment, bis es konfigurierbarer wird. :)
Andrew Rollings

1
Es ist unwahrscheinlich, dass Stylecop wesentlich konfigurierbarer wird. Ein weitaus wichtigeres Merkmal für Stylecop ist die automatische Korrektur von Stilverletzungen.
Greg D

Wir verwenden Resharper, um Code automatisch an die Stylecop-Regeln anzupassen. Das allein macht es den Kaufpreis wert. Darüber hinaus erhalten Sie alle weiteren Vorteile.
Keine Rückerstattung Keine Rückgabe

11

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:

CQLinq-Code-Regel


6

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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.