Stylecop vs FXcop

Czy Stylecop zastąpił FXcop? Jakiego produktu powinniśmy używać w Visual Studio 2008?

Author: JL., 2009-12-11

5 answers

Stylecop jest narzędziem do analizy stylów, które działa na poziomie kodu źródłowego. Istnieje przede wszystkim po to, aby zapewnić jeden wspólny styl, który zarządzane projekty mogą wykorzystać do zachowania spójności w większym świecie zarządzanego oprogramowania. Podejmuje decyzje dotyczące stylu przede wszystkim po to, aby uniknąć holy wars (w końcu styl jest prawie zawsze rzeczą z natury subiektywną). Chyba nigdy nie spotkałam kogoś, kto lubi wszystkie zasady Stylecopa, ale to ok . Oznacza to, że StyleCop jest ogólnie dobry kompromis wśród ogromnego zestawu wytycznych dotyczących stylu, które istnieją. (Gdyby reguły stylecop ' a były wysoce konfigurowalne, poza włączaniem/wyłączaniem ich, zniszczyłoby to cały cel narzędzia.)

FxCop, z drugiej strony, jest narzędziem analizy statycznej, która działa na poziomie zarządzanego zestawu. Można mu nadać kierunek za pomocą atrybutów, ponieważ widzi atrybuty na elementach kodu, np.. Wykrywa problemy, które można zobaczyć na poziomie "binarnym" (jak to było) w przeciwieństwie do poziomu składniowego.

Aby odpowiedzieć na twoje pytanie, StyleCop nie zastępuje FxCop, a FxCop nie zastępuje stylecop. Są to dwa różne narzędzia o dwóch różnych celach, które mogą przynieść realne korzyści dla Twojego kodu.

(AKA, biegam z obu. :) )


Kilka przykładów rzeczy, które można wykryć w porównaniu z rzeczami, które mogą wykryć inne:

Naruszenia stylów mogą zawierać ostrzeżenia związane z: Whitespace, formatowanie, Public method dokumentacja poprzez XML-komentarze, kolejność definicji metody w obrębie klasy.

Naruszenia FxCop mogą obejmować Ostrzeżenie związane z: globalizacją, ciasnym sprzężeniem, złożonością cyklomatyczną, potencjalnymi zerowymi dereferencjami.

 161
Author: Greg D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 22:40:55

Stylecop działa na Twoim kodzie źródłowym C#. fxcop patrzy na Twój skompilowany kod z dowolnego języka. NET.

 16
Author: No Refunds No Returns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 22:28:31

Alternatywą lub dobrym uzupełnieniem FxCop / StyleCop byłoby użycie komercyjnego narzędzia NDepend . Za pomocą tego narzędzia można napisać regułę kodu nad zapytaniami LINQ (mianowicie CQLinq) . Zastrzeżenie: jestem jednym z twórców narzędzia

Ponad 200 zasad kodowania jest domyślnie zaproponowanych, należą do nich Projektowanie, Architektura, jakość kodu, ewolucja kodu, konwencje nazewnictwa , martwy kod, . NET FX usage ...

CQLinq jest dedykowany do pisania reguł kodu, które mogą być zweryfikowane na żywo w Visual Studio , lub które mogą być zweryfikowane podczas procesu budowania i zgłoszone w raporcie HTML/javascript .

Siła CQLinq nad Fxcopem lub Stylecopem polega na tym, że łatwo jest napisać regułę kodu i uzyskać natychmiast wyniki. Obiekty są proponowane do przeglądania dopasowanych elementów kodu. Konkretnie to wygląda tak:

Reguła kodu CQLinq

 11
Author: Patrick from NDepend team,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-22 10:37:14

FXCop wykonuje statyczną analizę kodu Twoich zarządzanych zespołów kodu. Pomyśl o tym jako o znalezieniu problemów, które będą powodować problemy w czasie uruchamiania lub które będą miały wpływ na to, jak deweloper wierzy, że kod będzie działał (kod nieosiągalny).

StyleCop analizuje strukturę twojego kodu z punktu widzenia tekstu. Pomyśl o tym jako o problemach, które będą miały wpływ na Twoje doświadczenia programistyczne i projektowe (formatowanie, konwencje nazewnictwa, dokumentacja)

Oba są bardzo cennymi narzędziami i należy używać oba, ale skupiają się na różnych problemach.

 6
Author: AllenSanborn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 22:34:20

StyleCop wykonuje analizę kodu źródłowego nie jest zbyt konfigurowalny. Nie robi tego samego co FxCop, który analizuje skompilowany kod.

Artykuły Wikipedii na ten temat dostarczają dobrych podsumowań różnic:

Http://en.wikipedia.org/wiki/StyleCop

Http://en.wikipedia.org/wiki/FxCop

 5
Author: Andrew Rollings,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 22:30:29