Różnica między SonarQube i SonarLint

89

Czym dokładnie różni się SonarQube od SonarLint? SonarQube ma powiązany z nim serwer, a Sonar lint działa bardziej jak wtyczka. Ale jaka jest ich szczególna różnica?

Jeevan Varughese
źródło

Odpowiedzi:

131

SonarLint działa tylko w środowisku IDE (IntelliJ, Eclipse i Visual Studio). Jego celem jest zapewnienie natychmiastowej informacji zwrotnej podczas pisania kodu. W tym celu koncentruje się na tym, jaki kod dodajesz lub aktualizujesz.

SonarQube to centralny serwer, który przetwarza pełne analizy (uruchamiane przez różne skanery SonarQube). Jego celem jest przedstawienie 360-stopniowej wizji jakości Twojego kodu. W tym celu regularnie analizuje wszystkie linie źródłowe twojego projektu.

Zarówno SonarLint, jak i SonarQube opierają się na tych samych statycznych analizatorach kodu źródłowego - większość z nich jest napisana przy użyciu technologii SonarSource.

Fabrice - zespół SonarSource
źródło
Dzięki @Fabrice! Ale jedno dodatkowe pytanie. Znajduję różnicę w raportach dotyczących sonarqube i lint sonaru dla tej samej wersji bazy kodu. To był pierwotny problem, który skłonił mnie do napisania tego pytania. Co może być problemem?
Jeevan Varughese
7
Powinieneś "podłączyć" SonarLint do SonarQube i powiązać swój projekt lokalny (w IDE) ze zdalnym (w SonarQube), aby upewnić się, że używasz tych samych profili jakości (= zestawów reguł) w obu światach.
Fabrice - SonarSource Team
Dzięki, Fabrice. Może to również oznaczać, że różne wersje różnych zestawów reguł mogą dawać różne raporty, prawda? Na przykład może istnieć różnica między raportami z wersji 5.6 i 6.0 dla tej samej wersji bazy kodu.
Jeevan Varughese
1
Może się to okazać interesujące; ten artykuł pomógł mi zrozumieć różnicę między trzema różnymi trybami uruchamiania SonarQube: analiza (kto generuje raport w interfejsie użytkownika SonarQube), podgląd i przyrostowy (używany przez SonarLint). blog.sonarsource.com/…
YB Cause
23

Należy dodać, że SonarQube wykonuje również skany za pomocą analizatorów innych producentów (findBugs, checkstyle, PMD), podczas gdy SonarLint ich nie zawiera. Myślę, że powodem jest priorytetyzacja wydajności i oparcie funkcji findBugs na kodzie bajtowym Java.

W związku z tym wyniki uzyskane w SonarQube i SonarLint mogą się różnić, jeśli podstawowy profil jakości wykorzystuje skanery innych firm.

guitarlum
źródło
2
Masz rację @guitarlum, a głównym powodem nie jest ten, o którym wspomniałeś, ale fakt, że naprawdę wierzymy, że SonarJava (analizator Java opracowany przez SonarSource) całkowicie przewyższa PMD + Findbugs.
Fabrice - Zespół SonarSource
3
@ Fabrice-SonarSourceTeam Rozumiem twoje rozumowanie i może to być prawdą w przypadku domyślnych FindBugs i PMD, jednak w obszarze bezpieczeństwa aplikacji, a mianowicie FindSecurityBugs ( find-sec-bugs.github.io ), które moim zdaniem jest najlepszym skanem podatności, SonarJava nie spełnia wymagań.
guitarlum
4

SonarQube to serwer, na którym możesz hostować swoje projekty i przeprowadzać analizy, podczas gdy SonarLint to agent, który pozwala nam połączyć się z tym SonarQube i zdalnie przeprowadzić analizę. SonarLint może być używany z IDE lub może być również wykonywany za pomocą poleceń CLI.

SonarLint zawiera własny zestaw domyślnych reguł, ale po podłączeniu do SonarQube użytkownicy mogą importować reguły z SonarQube, które są czymś więcej niż tylko standardowym zestawem reguł. Możemy zintegrować PDM, CodeStyle i wiele innych narzędzi do sprawdzania w SonarQube i tworzyć własne reguły.

Dwa fakty, o których chcę wspomnieć, a których nauczyłem się z własnego doświadczenia, SonarLint nie odziedziczy tych niestandardowych reguł z SonarQube, po drugie Sonar nie działa na klasach Test.

yug
źródło
0

Sonarqube przeprowadza weryfikację reguł na serwerze. Zintegrowaliśmy go z naszymi wersjami TFS. SonarLint działa w IDE, więc zanim zatwierdzę swój kod, wiem, które linie naruszają jakie zasady wewnątrz IDE.

Jeff Schreib
źródło
Pytanie dotyczyło różnic między skanerem? Twoja odpowiedź jest podana jako przesłanka do pytania. Serwer i wtyczki są już wymienione w pytaniu.
Jeevan Varughese