Czym jest SonarLint?

Popraw jakość kodu i napraw błędy zanim uruchomisz swoją aplikację z tym darmowym rozszerzeniem IDE!

Czym jest SonarLint?

Rozszerzenie IDE, które zmieni Twoje devowe życie

SonarLint to darmowe rozszerzenie IDE (ang. Integrated Development Environment, czyli zintegrowane środowisko developerskie), które identyfikuje i pomaga naprawiać luki bezpieczeństwa i poprawiać jakość kodu podczas jego pisania. Warto nadmienić, że jest Open Source. Można porównać go do narzędzia, które sprawdza poprawność naszej pisowni np. w programie Microsoft Word i podkreśla błędy, które popełniliśmy.

Przykładami IDE są InteliJ IDEA i Eclipse. Rozszerzenie SonarLint jest dostępne dla wielu IDE:

W tym artykule skupię się na korzystaniu z SonarLint na InteliJ IDEA Community Edition.

Instalacja

Instalacja SonarLint jest niezwykle prosta. Aby to zrobić należy:

  1. Otworzyć InteliJ IDEA
  2. Skrótem CTRL + ALT + S otworzyć ustawienia
  3. Przejść do opcji Plugins
  4. Zaznaczyć zakładkę Marketplace
  5. Wyszukać rozszerzenie SonarLint
  6. Kliknąć przycisk Install
  7. Po zainstalowaniu kliknąć przycisk Restart IDE -> Restart
Proces instalacji rozszerzenia SonarLint w InteliJ IDEA Community Edition

Na Wirtualnej Maszynie, którą Ci udostępniam, rozszerzenie SonarLint jest już zainstalowane.

Reguły

SonarLint korzysta z tej listy reguł podczas skanowania kodu. Nie ograniczają się one tylko do Javy, ale istnieją również dla wielu innych języków. Kod jest skanowany w trakcie jego pisania (lub skrótem CTRL + SHIFT + S) i gdy pojawi się w nim jakiś problem, natychmiast jesteś o nim informowany w zakładce SonarLint. Przykładowo po stworzeniu pustej klasy w InteliJ IDEA w zakładce SonarLint pojawia się reguła java:S2094. Mówi ona nam, że klasy nie powinny być puste i jeżeli chcemy tak to pozostawić, to klasa powinna zostać zamieniona na interfejs.

Reguła java:S2094 "Classes should not be empty"

Jednakże w klasie tej chciałbym umieścić jakieś Constanty, czyli wartości stałe, które mogę potem użyć w innych klasach. Będę miał je zdefiniowane w jednym miejscu zamiast zahardcodowane w wielu (umieszczone bezpośrednio w źródłowym kodzie). Po dodaniu dwóch Constantów SonarLint wyświetlił regułę java:S1118. Reguła ta mówi nam, że klasy pomocnicze (składające się tylko ze statycznych elementów) nie powinny posiadać publicznych konstruktorów.

Reguła java:S1118 "Utility classes should not have public constructors"

Java dodaje pośrednio publiczny konstruktor bez argumentów do każdej klasy, w której nie zdefiniowaliśmy żadnego konstruktora. W związku z tym po dodaniu bezpośrednio prywatnego konstruktora nasza klasa pomocnicza będzie zgodna ze wszystkimi regułami i nie będzie można stworzyć jej instancji.

Klasa zgodna z regułami

Warto nadmienić, że reguły posiadają swój opis, ale także przykłady niezgodnego (ang. noncompliant) i zgodnego (ang. compliant) kodu z regułą wraz z wyjątkami. Dzięki temu same reguły mogą być też dobrym źródłem wiedzy co należy robić, a czego nie.

Przykłady niezgodnego i zgodnego kodu wraz z wyjątkiem od reguły java:S1118

Dodatkowe informacje

Automatyczną analizę kodu SonarLint można włączyć/wyłączyć przechodząc do ustawień skrótem CTRL + ALT + S i w opcji Tools należy przejść do opcji SonarLint. Tam znajduje się ustawienie Automatically trigger analysis.

Ustawienie automatycznej analizy kodu SonarLint

W zakładce File Exclusions możemy wyłączyć skanowanie dla danych plików, zaś w zakładce Rules możemy włączyć lub wyłączyć reguły.

Skanowanie w otwartym pliku możemy również uruchomić w zakładce SonarLint w oknie Current file zielonym przyciskiem Analyze with SonarLint (skrót CTRL + SHIFT + S:

Skanowanie całego projektu możemy uruchomić w oknie Report przyciskiem Analyze All Project Files:

Jeżeli z jakiegoś powodu nie widzisz zakładki SonarLint w pasku na dole InteliJ IDEA, to możesz otworzyć ją w menu View -> Tool Windows -> SonarLint.

Parę słów o Czystym Kodzie

Jeżeli już mówimy o jakości i bezpieczeństwie naszego kodu, warto również wspomnieć o jego czystości. Książka Czysty Kod. Podręcznik dobrego programisty Roberta C. Martina jest zdecydowanie obowiązkową pozycją dla każdego programisty. Wydana w 2010 roku, ale wciąż aktualna! Zbliżają się święta, więc może warto napisać list do św. Mikołaja i wyczekiwać jej pod choinką 😀

Podsumowanie

Dzięki darmowemu rozszerzeniu SonarLint dla wielu IDE możesz identyfikować i naprawiać luki bezpieczeństwa czy poprawiać jakość kodu podczas jego pisania. Instalacja jest banalnie prosta, zaś czytanie samych reguł oraz dostosowywanie do nich kodu dostarcza wiedzy, która z pewnością zaprocentuje w przyszłości.

Ponadto warto skanować swój kod przed commitem do repozytorium. W pracy, gdy dodasz swoje zmiany i skończysz zadanie, zazwyczaj podlegają one procesowi review (przegląd kodu) przez innego programistę. Lepiej więc skorzystać z pomocy SonarLint i za wczasu dostosować swój kod do jego reguł niż otrzymać komentarz od kogoś innego z prośbą o poprawę, prawda? 😉

Liczba komentarzy:

Zaloguj się lub dołącz do społeczności Javowców, aby móc uczestniczyć w dyskusji 🙂