Sonar (obecnie SonarQube) – monitorowanie projektu i jakości kodu

Sonar-monitorowanie jakości projektu i kodu Open Source

Olivier Gaudin, Freddy Mallet, SonarSource, http://www.sonarsource.com

Co To jest Sonar ?

Sonar (obecnie nazywany SonarQube) jest platformą open source używaną przez zespoły programistyczne do zarządzania jakością kodu źródłowego. Sonar został opracowany z myślą o głównym celu: sprawić, by zarządzanie jakością kodu było dostępne dla wszystkich przy minimalnym wysiłku.

w związku z tym Sonar dostarcza analizatory kodu, narzędzia do raportowania, Moduły wykrywania defektów i TimeMachine jako podstawową funkcjonalność. Ale wprowadza również mechanizm wtyczek umożliwiający społeczności rozszerzenie funkcjonalności (ponad 35 dostępnych wtyczek), dzięki czemu Sonar jest punktem kompleksowej obsługi dla jakości kodu źródłowego poprzez zaspokajanie potrzeb nie tylko programistów, ale także menedżerów.

jeśli chodzi o języki, Sonar obsługuje analizę Javy w rdzeniu, ale także JavaScript, PHP, PL/SQL i Cobol poprzez wtyczki (Open Source lub komercyjne), ponieważ silnik raportowania jest niezależny od języka.

od wersji 2.0 Sonar umożliwia pokrycie jakości na 7 osiach i tak raportowanie:

  • zduplikowany kod
  • standardy kodowania
  • testy jednostkowe
  • złożony kod
  • potencjalne błędy
  • Projektowanie i architektura

Sonar może być używany do jednorazowych audytów, ale został zaprojektowany w celu wsparcia globalnej strategii ciągłego doskonalenia jakości kodu w firmie i dlatego może być używany jako wspólny Centralne Repozytorium zarządzania jakością.

strona www: https://www.sonarqube.org/
Wersja produktu: Sonar 2.0
Licencja: LGPL V3
wsparcie: https://www.sonarsource.com/support/
wtyczki: https://docs.sonarqube.org/display/PLUG/Plugin+Library

dlaczego warto zarządzać jakością kodu źródłowego?

dobrze napisany program to program, w którym koszt wdrożenia funkcji jest stały przez cały okres istnienia programu — Itay Maman

jako szybkie wprowadzenie, jest to Najlepsza definicja jakości kodu źródłowego, jaką mogłem znaleźć. Staje się jeszcze silniejszy, gdy jest odwrotnie: abadly napisany program jest programem, w którym koszt wdrożenia funkcji rośnie w miarę upływu czasu.

to brzmi źle, prawda?

wszyscy widzieliśmy sytuacje, w których rozpoczyna się nowy projekt, którego celem jest opracowanie od podstaw aplikacji w wiodącej technologii. Wszystko idzie bardzo szybko; pierwszy, drugi, trzeci, a potem nagle prędkość zespołu zaczyna spadać. Czwarte wydanie jest odroczone za trzecim razem, naprawienie czegoś psuje coś innego…

co tu się dzieje? Biorąc pod uwagę objawy, możemy przyjąć założenie, że zespół cierpi między innymi na dług techniczny i że interesariusze nie są tego świadomi i dlatego nie mogą sobie z tym poradzić.

ale to najprawdopodobniej zostanie rozwiązane, ponieważ projekt jest nowy, ma widoczność i dlatego ktoś się nim zajmie (przynajmniej możemy mieć taką nadzieję).

ale ten przykład był tylko starterem, ponieważ my, informatycy, nie pracujemy przez większość naszego czasu nad aplikacjami, których rozwój rozpoczął się mniej niż 6 miesięcy temu! Nasza praca polega głównie na aktualizacjach istniejących aplikacji. Jest to miejsce, gdzie większość pieniędzy jest wydawana w IT, gdzie jest mniej widoczności, gdzie często jest duża roczna koperta, aby zrobić jak najwięcej,gdzie są ludzie, którzy są kluczowi, ponieważ są jedynymi w stanie zrozumieć kod, gdzie nie mamy pojęcia, jak długo potrwa zmiana, gdzie regresje są częste i ludzie boją się wprowadzać zmiany. I nie ma w zasadzie żadnej uwagi ze strony biznesu na to, po prostu zrób to!

zarządzanie jakością kodu źródłowego polega na optymalizacji zwrotu z inwestycji, ponieważ zapewni Ci widoczność, a tym samym większą kontrolę nad:

  1. jak trudna będzie konserwacja, czego możemy się spodziewać
  2. fakt, że nie pogarsza się sytuacja
  3. fakt, że należy zwrócić uwagę na krytyczną część systemu, aby zwiększyć na przykład zasięg przez testy jednostkowe, tłumić cykle, usuwać duplikacje

dalej daje to kopię zapasową dla programistów, aby podnieśli rękę, gdy wierzą, że niektóre z nich są wymagana jest refaktoryzacja, która dodałaby trochę do zmiany, ale miałaby dobry zwrot z inwestycji.

jak zarządzać jakością kodu źródłowego?

istnieje siedem osi technicznych, na które należy zwrócić uwagę podczas analizy kodu źródłowego projektu, a Sonar jest w stanie wspierać zarządzanie wszystkimi siedmioma. W zespole Sonar lubimy nazywać je 7 grzechów głównych dewelopera:

  • nieprzestrzeganie standardów kodowania i najlepszych praktyk
  • Brak komentarzy w kodzie źródłowym, zwłaszcza w publicznych API
  • posiadanie zduplikowanych linii kodu
  • posiadanie złożonego komponentu lub/i zły rozkład złożoności między komponentami
  • brak lub niski zasięg kodu w testach jednostkowych, szczególnie w złożonej części programu
  • pozostawienie potencjalnych błędów
  • posiadanie projektu spaghetti (cykle pakietów…)

pierwszym krokiem podczas zarządzania jakością kodu źródłowego jest zdefiniowanie, które z tych osi są dla Ciebie ważne i w jakim zakresie.Następnie, w oparciu o obecną sytuację, należy opracować plan, aby osiągnąć poziom docelowy (może to być po prostu utrzymanie wysokiego poziomu jakości). Bardzo ważne jest, aby zacząć od małych i powiększyć, gdy zostanie w pełni przyjęty przez cały zespół programistów.

teraz przyjrzyjmy się, jak używać sonaru w tym podejściu.

profile jakości

Sonar umożliwia zarządzanie wieloma profilami jakości w celu dostosowania wymaganego poziomu do rodzaju projektu (Tylko wsparcie, nowy projekt,krytyczna aplikacja, lib techniczny…). Zarządzanie profilem składa się z:

Aktywuj / Dezaktywuj / wagi zasady kodowania

zdefiniuj progi metryk dla automatycznych alarmów

zdefiniuj skojarzenie projektu / profilu

pulpity nawigacyjne

Sonar zawiera pulpity nawigacyjne 2, które dają duży obraz, Aby uzyskać wskazówki, gdzie mogą wystąpić problemy i porównać projekty:

  1. skonsolidowany widok, który pokazuje wszystkie projekty
  2. panel projektu jest również dostępny na poziomie modułów i pakietów

narzędzia łowieckie

aby potwierdzić, że to, co wydaje się być problemem, jest naprawdę problemem, Sonar oferuje zestaw narzędzi łowieckich, który umożliwia przejście od przeglądu do najdrobniejszych szczegółów:

  • przejrzyj każdy wyświetlany środek, aby zobaczyć, co kryje się za
  • klasy chmury, aby znaleźć mniej objęte klasy przez testy jednostkowe
  • hotspoty, aby mieć na stronie najwięcej i najmniej plików
  • i wiele wpisów (powielanie, pokrycie, naruszenia, sukces testów…) source viewer w celu potwierdzenia ustaleń dokonanych za pomocą narzędzi łowieckich

TimeMachine

bez wątpienia wiedza o tym, gdzie znajduje się aplikacja, jest bardzo ważna. Ale jeszcze ważniejsze jest poznanie i zrozumienie jego ewolucji.Rzeczywiście, co warto wiedzieć, że istnieje 20% pokrycia kodu przez unittests? To dobrze czy źle? Czy odpowiedź jest inna, jeśli dwa miesiące temu było to 15%lub 25%? TimeMachine pozwala obserwować ewolucję i odtwarzać przeszłość, zwłaszcza, że rejestruje wersje projektu

jak działa Sonar?

Sonar jest wykonany z dość prostej i elastycznej architektury, która składa się z trzech komponentów:

  • zestaw analizatorów kodu źródłowego, które są zgrupowane w wtyczce Maven i są uruchamiane na żądanie. Analizatory wykorzystują konfigurację zapisaną w bazie danych. Chociaż Sonar wykorzystuje Mavena do prowadzenia analizy, jest w stanie analizować projekty Mavena i nie-Mavena.
  • baza danych, która nie tylko utrzymuje wyniki analizy, projekty i globalną konfigurację, ale także prowadzi analizę historyczną dla TimeMachine. Obecnie obsługiwanych jest 5 silników baz danych: Oracle, MySQL, Derby (tylko demo), PostgreSQL i MS SQLServer
  • narzędzie do raportowania internetowego do wyświetlania pulpitów jakości kodu w projektach, polowania na usterki, sprawdzania TimeMachine i konfigurowania analizy.

w ramach swoich analizatorów Sonar core wykorzystuje najlepsze w swojej klasie narzędzia do wykrywania naruszeń zasad kodowania (PMD, Checkstyle), wykrywania potencjalnych błędów(Findbugs) i pomiaru zasięgu za pomocą testów jednostkowych (Cobertura, Clover). Ale to, co sprawia, że Sonar jest naprawdę wyjątkowy, to Squid, własny analizator kodu, który nie tylko analizuje kod źródłowy,ale także kod bajtowy i miesza wyniki.

ponieważ analiza jest uruchamiana za pomocą wtyczki Maven, Sonar można łatwo uruchomić w środowiskach „Continuous Integration”.

przypadek użycia w projekcie Apache commons-collection

warunkiem uruchomienia sonaru jest zainstalowanie Javy i Mavena na pudełku. W takim przypadku możesz uruchomić Sonar w 5 prostych krokach:

1. Pobierz dystrybucję z https://www.sonarqube.org/ pobrań / i rozpakuj ją

2. Otwórz konsolę i uruchom serwer:

> $SONAR_HOME \ bin \ windows-x86-32 \ StartSonar.bat na windows

> $SONAR_HOME/bin//sonar.sh na innych platformach

3. Otwórz konsolę, w której chcesz sprawdzić źródło i uruchom:

svn co http://svn.apache.org/viewvc/commons/proper/collections/trunk/.

4. Uruchom mvn install sonar: sonar w tym samym katalogu

5. Przeglądaj http://localhost:9000

Strona główna aplikacji pokazuje listę projektów pod kontrolą jakości z kilkoma konfigurowalnymi metrykami.

aby powiększyć, możesz po prostu kliknąć projekt i uzyskać jego pulpit nawigacyjny

stamtąd masz dostęp do szeregu narzędzi łowieckich, wśród których:

hotspot, aby dowiedzieć się o plikach, które mają „najwięcej” lub „najmniej”…

ale także, każda metryka na desce rozdzielczej jest klikalna, aby przejść do sceny i uzyskać widok metryki według podstawowego komponentu

każde narzędzie łowieckie ostatecznie przenosi myśliwego do kodu źródłowego, w którym podświetlane są Prey

ekosystem sonaru

wokół sonaru istnieje bardzo dynamiczny ekosystem

  • aktywna społeczność złożona z ponad 300 osób na liście mailingowej użytkowników i ponad 150 osób na liście mailingowej deweloperów
  • 35 + wtyczek w kuźni (http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/), które są podzielone do czterech kategorii
  • integracja z zewnętrznymi narzędziami, takimi jak Jira, Hudson, Bamboo, GateIn, AnthillPro, Crowd
  • bezpośrednie rozszerzenie podstawowej funkcjonalności poprzez dodanie nowego zachowania, obliczenie zaawansowanych metryk lub konsolidację projektów, dodanie nowych metryk
  • Dodaj pokrycie języków, takich jak PL/SQL, ActionScript3
  • integracja z IDEs, aby uzyskać informacje o wadach kodu podczas jego edycji
  • ponad 3000 pobrań miesięcznie
  • zespół programistów kierowany przez Sonarsource (http://www.sonarsource.com)

wniosek

po masowym przyjęciu continuous integration engines and Tests Driven Development practices, managing source quality looks like thenaturalny next step for development teams in their effort of industrialization. Sonar umożliwia osiągnięcie tego celu przy niewielkim wysiłku i zabawie.

w 2010 r.Platforma Sonar będzie nadal ewoluować, a główne osie rozwoju obejmują nowe języki i poprawiają integrację z IDE.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post 10 rzeczy, o których nie wiedziałeś, że możesz zrobić z Sudocrem
Next post wymagania certyfikacyjne TS 16949