[StyleCop] Jakie severity (Warning czy Error) dla problemów zgłaszanych przez StyleCop?

Opiszę pomysł, który zobaczyłem w projekcie i bardzo mi się spodobał. Nie będę opisywał możliwych modyfikacji, które sobie wyobrażam. Rozumiem też, że będąc w innym projekcie (Context is King!) musiałbym go dostosować.

Errory tylko w Release

Gdy piszemy kod to zazwyczaj jesteśmy w „Debug”, i w takim trybie nie chcemy dostawać Errorów do StyleCopa. Powodów może być wiele: kod experymentalny, kod przeklejony z internetu, z poprzedniego projektu, itp. Albo po prostu każdy ma inną wrażliwość na to jak formatować kod. I lokalnie niech się każdemu kompiluje i pokazuje Warningi, ale niech się odpala.

Jednak w kodzie produkcyjnym, którym dzielimy się z wszystkimi, gdzie przechodzi Build Script na serwerze Continuous Integration – chcemy mieć czysto. Dlatego mamy drugi ruleset dla trybu „Release”, w tym drugim wszystkie reguły traktowane są jako Errory. W skrypcie jest więc osobny krok, który odpowiada za zbudowanie solucji w trybie „Release”.

Przykład ze skryptu PowerShellowego (używającego Psake):

Przykładowe rulesety (wycinki)

Debug:

<Rule Id="SA1405" Action="Warning" />
<Rule Id="SA1406" Action="Warning" />
<Rule Id="SA1407" Action="None" />

Release:

<Rule Id="SA1405" Action="Error" />
<Rule Id="SA1406" Action="Error" />
<Rule Id="SA1407" Action="None" />

Domyślnie wszystko jest Warningiem

Dzięki temu plik z regułami jest krótszy. Odstępstwo od reguły będzie Warningiem. W pliku *Debug.ruleset to co chcemy ignorować dodajemy jako:

<Rule Id="SA1407" Action="None" />

Jednak w pliku *Release.ruleset musimy severity tych wszystkich domyślnych reguł potraktować jako „error”.

Co za tym idzie najlepiej w obydwu plikach mieć explicite wszystkie reguły. Wtedy ręcznie w obydwu naraz zmieniamy gdy chcemy zmienić podejście do którejś reguły.

Konflikty korzystania z Configuration

Minusem jest to, że Configuration (Debug/Release) nie jest do takich zastosowań. Może być też używana przez inne narzędzia. Obecnie w projekcie gryzie się to z BenchmarkDotNet. Jest on odpalany tylko w trybie „Release” i wtedy StyleCop musi być na czysto. Więc nachodzą na siebie, ale da się z tym żyć, nie jest problematyczne.

One Comment on “[StyleCop] Jakie severity (Warning czy Error) dla problemów zgłaszanych przez StyleCop?

  1. Pingback: dotnetomaniak.pl

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Connecting to %s