2009-12-10 24 views
87

Hat Stylecop FXcop ersetzt? Welches Produkt sollten wir mit Visual Studio 2008 verwenden?Stylecop vs FXcop

+1

dup? http://stackoverflow.com/questions/580168/visual-studio-code-analysis-vs-stylecop-fxcop –

Antwort

158

Stylecop ist ein Stilanalyse-Tool, das auf Quellcodeebene funktioniert. Es besteht hauptsächlich darin, einen einheitlichen Stil zu bieten, den Projekte verwalten können, um innerhalb der größeren Welt der verwalteten Software konsistent zu bleiben. Stilistische Entscheidungen werden vor allem getroffen, um heilige Kriege zu vermeiden (Stil ist ja fast immer eine von Natur aus subjektive Sache). Ich glaube nicht, dass ich jemanden getroffen habe, der alle Regeln von StyleCop mochte, aber das ist ok. Es bedeutet, dass StyleCop im Allgemeinen ein guter Kompromiss unter den vielen bestehenden Stilrichtlinien ist. (Wenn die Regeln von stylecop in hohem Maße anpassbar wären, würden sie den gesamten Zweck des Werkzeugs nicht erfüllen.)

FxCop dagegen ist ein statisches Analysewerkzeug, das auf der Ebene des verwalteten Werkzeugs funktioniert Versammlung. Es kann Richtungen über Attribute gegeben werden, weil es Attribute auf Codeelementen sehen kann, z. B. Es erkennt Probleme, die auf der "binären" Ebene (sozusagen) im Gegensatz zur syntaktischen Ebene gesehen werden können.

Um Ihre Frage zu beantworten, ersetzt StyleCop FxCop nicht, und FxCop ersetzt nicht Stylecop. Sie sind zwei verschiedene Tools mit zwei verschiedenen Zwecken, die beide einen echten Vorteil für Ihren Code bieten können.

(. AKA, ich laufe sowohl mit :))


ein paar Beispiele für die Dinge, die man gegen Dinge erkennen könnte die andere vielleicht erkennen:

StyleCop Verletzungen könnte Warnungen sind im Zusammenhang mit : Whitespace, Formatierung, Öffentliche Methodendokumentation über XML-Kommentare, Reihenfolge der Methodendefinition innerhalb einer Klasse.

FxCop-Verstöße könnten Warnungen enthalten in Bezug auf: Globalisierung, enge Kopplung, zyklomatische Komplexität, potentielle Null-Dereferenzierung.

+1

Ja, die vorherigen Antworten, die die beiden vergleichen, sind in allen Punkten falsch. StyleCop und FxCop führen zwei sehr unterschiedliche Aufgaben aus, und es lohnt sich, den Wert zu untersuchen, den jede Komponente in 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 einen guten Wert für uns - zu geringen Kosten ..! Empfohlen. (Beachten Sie, dass wir es auf den ersten Blick hassten ..) – stiank81

+0

@ stiank81: Ja, ich denke _everybody_ hasst StyleCop zuerst. Nach einiger Zeit etablieren sich die Vorteile jedoch wirklich und es erweist sich als ein sehr nützliches Werkzeug für die Aufrechterhaltung der Konsistenz in der Quelle. :) –

16

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

+0

Also, wenn Sie Stylecop verwenden, kann FXCop jeden Wert hinzufügen? –

+0

Wirklich, Sie sind besser dran mit FxCop. –

+0

Zumindest für jetzt, bis es konfigurierbar wird. :) –

6

FXCop tut statische Code-Analyse Ihrer verwalteten Code-Anordnungen. Stellen Sie sich das Problem so vor, dass Probleme auftreten, die während der Laufzeit Probleme verursachen oder sich darauf auswirken, wie der Entwickler glaubt, dass der Code ausgeführt wird (nicht erreichbarer Code).

StyleCop analysiert die Struktur Ihres Codes vom Text aus. Stellen Sie sich dies als Probleme vor, die Ihre Entwicklungs- und Designerfahrung beeinflussen (Formatierung, Namenskonventionen, Dokumentation)

Sie sind beide sehr wertvolle Werkzeuge und Sie sollten beide verwenden, aber sie konzentrieren sich auf verschiedene Probleme.

11

Eine Alternative oder eine gute Ergänzung zu FxCop/StyleCop wäre, das kommerzielle Tool NDepend zu verwenden.Mit diesem Tool kann man Code-Regel über LINQ Abfragen schreiben(namely CQLinq). Disclaimer: Ich bin einer der Entwickler des Werkzeugs

Mehr als 200 code rules sind standardmäßig vorgeschlagen, dazu gehören Design, Architektur, Codequalität, Code Evolution, Namenskonventionen, totem Code, .NET Fx Nutzung ...

CQLinq widmet sich Code Regeln zu schreiben, die können sei verified live in Visual Studio, oder das kann verified during build process and reported in an HTML/javascript report sein.

Die Stärke CQLinq über FxCop oder StyleCop, ist, dass ist es einfach, eine Coderegel und sofort Ergebnisse erhalten zu schreiben. Einrichtungen werden vorgeschlagen, um übereinstimmende Codeelemente zu durchsuchen. Konkret sieht das so aus:

CQLinq code rule