Jasica.Net

C#, .Net, SQL i nie tylko

Ukrywanie kodu przed narzędziami dbajacymi o jakość

W większych projektach często są wykorzystywane różne narzędzia generujące kod, które pozwalają zaoszczędzić czas programisty. Mogą one robić to poprzez tworzenie kodu źródłowego lub bezpośrednio bibliotek. Często jednak taki kod może być kłopotliwy dla narzędzi dbających o jakość.

Jeżeli kod jest generowany automatycznie może się okazać, że metryki typu Maintainability Index są stosunkowo niskie. W normalnym wypadku popsułoby to jedynie statystyki, ale jeżeli wykorzystujemy któreś z metryk w procesie ciągłej integracji, jako strażnika broniącego przed kodem niskiej jakości może się okazać, że takowy kod będzie problematyczny. Mankament ten można łatwo wyeliminować oznaczając wygenerowaną metodę atrybutem GeneratedCode. Dodatkowo jako parametr można przekazać nazwę narzędzia i wersję, które zostało wykorzystane do stworzenia kodu. Jeden atrybut i build server nie będzie sprawiał kłopotów. 

Analogicznie sprawa wygląda z wykluczeniem z pokrycia kodu- wystarczy dodać atrybut DebuggerNonUserCode. W tym przypadku jednak warto zastanowić się czy na pewno chcemy mieć kod w repozytorium, który nie jest weryfikowany przez żadne testy.

Style Cop można poprosić o ignorowanie kodu na kilka sposobów: poprzez dodanie w nagłówku pliku komentarza zawierającego "<auto-generated />" lub poprzez stworzenie regionu o nazwie zawierającej "generateg code".

Podsumowując czasami spotykanie niedogodności nie powinny być wymówką do zaniechania wdrażania narzędzi podnoszących jakość kodu, gdyż większość z nich można obejść.