Analiza jakości kodu wykorzystując SonarCloud


Wykorzystując wersjonowanie kodu za pomocą Git-a możemy posługiwać się dodatkowym oprogramowaniem do analizy jakości kodu, jakim jest np. SonarCloud. W szerokim wachlarzu funkcji SonarCloud jest w stanie wyszukać w kodzie błędy, luki w zabezpieczeniach czy też nadmiarowy kod za każdym razem kiedy jest dodawany nowy kod do repozytorium. Na chwilę obecną obsługiwane jest ponad 20 języków, w tym Python, PL/SQL czy też HTML5.


Usługa SonarCloud jest rozwiązaniem w pełni chmurowym. Istnieje możliwość integracji SonarCloud z GitHub, Bitbucket, Azure DevOps oraz GitLab. Poniżej zostanie przedstawiony sposób takiej integracji z usługą Bitbucketem.


Korzystanie z SonarCloud z Bitbucketem

Podczas ingtegracji SonarCloud z Bitbucketem pierwszym krokiem jest uruchomienie dostępnych w Bitbuckecie pipelinów i zintegrowanie go z SonarCloud za pomocą tokenu. Kolejne kroki skupiają się na dodaniu plików konfiguracyjnych do repozytorium. Pierwszy z nich bitbucket-pipelines.yml zawiera informację o tym, kiedy dane repozytorium będzie analizowane, np. podczas pull requesta z feature brancha do brancha deweloperskiego. Drugim dodatkowym plikiem jest sonar-project.properties, który pozwala na ustalenie parametrów samej analizy, np. można wykluczyć z analizy określone pliki.



Dla każdej analizy kodu określona jest całościowa jakość (Quality Gate), która bazuje na ustalonych warunkach obejmujących między innymi ocenę bezpieczeństwa kodu czy liczbę zduplikowanego kodu. Przy spełnionych warunkach mamy pewność, że kod spełnia ustalone przez zespół deweloperski standardy kodu. Co więcej przy wstępnej analizie niepustego repozytorium, SonarCloud rozdziela analizę na starą oraz na nową część kodu. Pozwala to ustalić dług techniczny starego kodu, oddzielając go od nowego kodu, co powala deweloperom skupić się na bieżących błędach.



Przy próbie dodania do głównego repozytorium niepoprawnego kodu, deweloper dostaje raport o problematycznej zmianie. Raport określa typ błędu, miejsce w kodzie, informacje o stanowiącym zagrożeniu oraz wskazuje na proste i przykładowe rozwiązanie zaistniałego problemu.


Warto też wspomnieć o SonarLint. Jest to rozwiązanie podobne do SonarCloud, lecz jest w stanie działać jako wtyczka do IDE, np. PyCharm czy VS Code. W swoim szerokim wachlarzu reguł SonarLint rozszerza analizę tworzonego kodu o jego bardzo wnikliwą kontrolę. Wtyczka pozwala w trakcie pisania kodu uchronić przed błędami stylistycznymi jak i też przed błędami funkcjonalnymi.



Całościowo SonarLint chroni przed dodaniem niepoprawnego kodu do samego repozytorium. Cała analiza jest wykonywana na żywo, dostarczając jednocześnie powody, jak i też przykładowe rozwiązania problemu. Główną różnicą między SonarLint a SonarCloud (oprócz tego, że SonarLint działa w czasie rzeczywistym, a SonarCloud post factum) jest to, że SonarCloud opiera się na współdzieleniu raportów analizy kodu pomiędzy członkami zespołu projektowego.

Bazując na naszym dotychczasowym doświadczeniu możemy śmiało stwierdzić, że zarówno SonarCloud jak i SonarLint są świetnymi narzędziami edukacyjnymi. Pozwalają kształtować dobre cechy programistyczne, nie dając się złapać w pułapkę własnych, zatwardziałych i niepoprawnych nawyków w podejściu do tworzenia kodu. Korzystanie z tych narzędzi to często lepszy sposób nauki stylistyki i gramatyki kodu, niż wertowanie podręczników i dokumentacji (np. PEP 8 dla Pythona). Umożliwiają stopniowe przyswajanie reguł wraz z pisaniem własnego kodu.




Michał Dąbrowski

Junior Machine Learning Developer

michal.dabrowski@bitpeak.pl

74 wyświetlenia

Ostatnie posty

Zobacz wszystkie