Jak zapewnić pojedynczy standard kodowania w .NET z obsługą narzędzi

14

Prawdopodobnie podstawowa sytuacja jest znana wszystkim. Uzgodniłeś pewne standardy kodowania w swoim zespole i nadszedł czas, aby upewnić się, że wszyscy je przestrzegają.

Niektóre robią to za pomocą mocno sparowanego programowania, inne prowadzą listę standardów kodowania i dokonują ręcznego przeglądu. Inni nawet używają narzędzia do analizy kodu statycznego z Visual Studio, aby upewnić się, że standardy kodowania są przestrzegane.

Jakie są najlepsze praktyki zapewniające standardy kodowania? Z jakich narzędzi korzystasz - czy są jakieś niezbędne narzędzia, o których każdy deweloper powinien wiedzieć? Jak zintegrujesz standaryzację swojego kodu z narzędziami programistycznymi?

Stefan Papp
źródło

Odpowiedzi:

15

StyleCop (teraz także StyleCop dla Resharper) jest powszechnie używany do egzekwowania reguł stylów kodowania w bazach kodu C #.

Można go zintegrować z kompilacją CI i powodować błędy kompilacji, jeśli zostaną wprowadzone jakiekolwiek naruszenia.

Oded
źródło
Więcej informacji na temat korzystania z niego? Chciałbym uruchomić sprawdzanie stylu przed każdym zatwierdzeniem. Potrzebuję do tego cli. Czy jest jakiś. Nie mogłem znaleźć żadnych istotnych informacji.
FreeLightman
1
To może pomóc blog.submain.com/stylecop-detailed-guide
z-boss
@R. - jeśli tylko można dostosować reguły StyleCop. Och, czekaj ...
Oded
@R. - możesz także napisać własne zasady.
Oded
FWIW, z pliku Readme na github: „Chociaż żądania ściągania będą nadal przyjmowane, jest mało prawdopodobne, aby w tym projekcie dokonano poważniejszych zmian. Coraz trudniejsze i nieefektywne jest utrzymanie niestandardowego parsera C # używanego przez StyleCop.”
zardzewiały
6

Po pierwsze, upewnij się, że masz odpowiedni serwer kompilacji, który stale tworzy kod. TFS lub Jenkins / Hudson + Msbuild to dobre opcje. Na tym serwerze kompilacji oczywiście uruchamiasz testy, a także możesz przeprowadzać analizę kodu statycznego, a także sprawdzanie składni.

Polecam używanie FxCop lub Gendarme do analizy kodu statycznego. Oba mogą być używane obok siebie.

Jeden ważny klucz do sukcesu: nie wdrażaj ich z ogromnym zestawem reguł i oczekuj, że będzie działał dobrze. Będziesz miał miliony ostrzeżeń i nikogo to nie obchodzi.

Podstawowe zasady to:

  • Zawsze mają zero ostrzeżeń. Jeśli to konieczne, początkowo zmniejsz zestaw kontroli, a następnie dodawaj nowe kontrole przy każdym sprincie i napraw je. Upewnij się, że każda przeprowadzona kontrola ma dla Ciebie rzeczywistą wartość i jest zgodna z Twoimi standardami.

  • Jeśli masz reguły specyficzne dla domeny, których musisz przestrzegać, nie bój się wdrożyć własnych reguł.

Aby sprawdzić składnię, użyj StyleCop lub StyleCop dla Resharper, jeśli używasz Resharper (co również bardzo polecam).

Anders Forsgren
źródło
2

StyleCop i FxCop to moje lekkie narzędzia, które przypominają style kodu moim programistom. Resharper jest również dobry, ale sprawia, że ​​VS jest bardzo wolny.

Polecam FxCop ze względu na bogatą bibliotekę reguł, świetną dokumentację, klasyfikacje, przykłady i wiele innych funkcji.

Dostępne jest również rozszerzenie StyleCop Fixer dla studia wizualnego, które pomaga naprawić zwykłe błędy.

Na metryki kodu czasami wpływają również style kodu. Za pomocą tego narzędzia można monitorować łatwość konserwacji kodów.

Reza Owliaei
źródło
2

Chciałbym podkreślić, że wspomniana wcześniej automatyczna analiza kodu (FxCop, StyleCopy, kompilacje CI itp.) Działa jako pierwsza, zamiast ręcznych recenzji. Automatyczne kontrole wykryją znacznie więcej rzeczy, niż jest to prawdopodobne w przypadku przeglądu ręcznego, i zwykle są znacznie bardziej rygorystyczne, spójne i samok dokumentują się. Ręczne przeglądy mogą być przydatne przy podejmowaniu bardziej zaawansowanych decyzji projektowych itp., Ale z mojego doświadczenia mogą być bardzo subiektywne i przypadkowe.

Polyfun
źródło
0

NDepend może służyć do egzekwowania różnych standardów kodowania na podstawie kodu .NET. Ma około 200 domyślnych reguł kodu, które można przeglądać tutaj . Łatwo jest również dostosować istniejące reguły lub utworzyć własne reguły, ponieważ w NDepend reguła jest tylko zapytaniem C # LINQ .

Uwaga: Pracuję dla NDepend

Patrick Smacchia - twórca NDepend
źródło