SonarSource - hit, czy kit?

0

Cześć,
tytuł celowo nastawiony na ściągnięcie uwagi, ale chciałem podpytać się doświadczonych stażem, czy wykorzystujecie w pracy C++ static code analysis. Niedawno trafiłem na te narzędzie jako wtyczka do Visual Studio i wypróbowałem na legacy code ( C z klasami w drodze do C++11), aby zobaczyć co ciekawego może pokazać.

Może to kwestia konfiguracji, a może faktycznie nie jest aż tak źle z tym kodem, który mam pod ręką, bo głównie czepiał się, że w #include są "" , więcej rzeczy potrafił w formie sugestii wypisać cpp-check. Ogólnie nie mam jeszcze wyrobionego zdania o tym narzędziu.

Głównie chciałem się podpytać, czy na przykład wspierać można kolegów z zespołu za pomocą takiego narzędzia na code review, albo czy sami używacie, bądź używaliście dopóki szeroko pojęte "dobre praktyki" nie weszły wam w krew.

1

Static code analysis jest spoko, potrafi wyłapać niezłe babole, warto mieć w automatyzacji. Ale przyznam, że nawet nie wiem czego używa moja firma.

2

Zależy jakie narzędzie np. cppcheck sprawdza tylko pliki. Clang-tidy jest już bardziej zaawansowany i analizuje kod bardziej dogłębnie biorąc pod uwagę połączenia między plikami(ale system budowania musi generować specjalny plik json). clazy sprawdza jeszcze qt.

tu warto też poustawiać sobie konkretne flagi dl tych programów

Generalnie używam tego co dostarcza clion(tylko w mojej prywatnej pracy). w pracy obecnie wdrażam takie analizatory. Generalnie warto. Aczkolwiek trzeba uważać czasami wrzuci ci że coś jest Typo ale wiesz że specjalnie tak napisało albo że jeszcze jest nie pełna implementacja czegoś a on ci sugeruje np. move.

Co do teamów:

  1. Możesz to zapiąć jako hookie do git czyli np. w trakcie wykonywania commit odpal cpplinta i sprawdza plik. Jak ma błędy odrzuca
  2. Robisz to na CI z spiętym do review
  3. Robisz to tylko poprzez ide albo bezpośrednio z lini komend.
1

Również w pracy korzystamy z tego co dostarcza clion czyli głównie cppcheck i Clang-tidy i uważam, że warto z tego korzystać (można zaoszczędzić wiele czasu na szukaniu głupich bugów). Co do samego cppchecka to trzeba samemu pododawać reguły wg których ma sprawdzać. W poprzedniej firmie tak to działało, że były sztywno ustalone reguły cppcheck'a, ale było to po to, żeby właśnie na code review już na to nie musieć patrzeć (bo przed wypchnięciem kodu każdy sam powinien popoprawiać takie błędy). Z tego względu dobrze zawsze jak w zespole wszyscy mają podobnie skonfigurowane srodowiska. Nie lubię sytuacji kiedy muszę w code review zwrcać wiele razy uwagę na coś co mi podkreśla ide, bo to trochę marnowanie mojego czasu.

1

Polecam:
https://github.com/Ericsson/codechecker + CI

Jako że zapisuje to skany jesteś w stanie namierzyć czy dany błąd powrócił i kiedy, dodatkowo skanuje ci kod kilkoma toolami :)

1

Prawda jest taka, że wszystko zależy od firmy i jej organizacji.
Pracowałem w korporacji, gdzie wszystko było ładnie skonfigurowanie i po przyzwyczajaniu się było to bardzo przyjemne.

Używałem dużo clang static analyzer, VisualStudio Analyzer oraz odrobinę cpp-check
Najlepiej jak to jest zintegrowane w jakiejś stronie, gdzie można zaznaczyć false positives, a nie obsłużone problemy generują raporty JIRA.

Narzędzi jest sporo, tu można znaleźć listę: https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C,_C++

Generalnie jestem zwolennikiem wszelkich narzędzi automatyzujących sprawdzanie poprawności kodu pod każdym względem,
Od wyłapywania błędów, przez poprawianie formatowanie kodu, literówki w symbolach (np ReSharper), aż po pomiar cyklometryczności kodu.

0

Aktualnie w moim przypadku nie mogę nic więcej, niż używać tych narzędzi u siebie lokalnie, nie da się nikogo uszczęśliwić na siłę, z tego co przeczytałem, to jednak jest hit.
Bardziej teraz mi zależy, aby dorwać narzędzie, które potrafiłoby po "przeskanowaniu" #include-ów, które biblioteki są jak mocno ze sobą "połączone". Chociaż przypuszczam, że pewnie wystarczyłaby jakaś wyszukiwarka tekstu bardziej rozbudowana, kwestia tylko czytelnej prezentacji wyników.

1 użytkowników online, w tym zalogowanych: 0, gości: 1