2016-05-11 36 views
8

Utilizziamo la versione 5.3 del server SonarQube con SonarLint 2.0 in modalità connessa. Come IDE utilizziamo Eclipse Mars 2.0 e quando confrontiamo i risultati trovati dal server SonarQube con i risultati trovati da SonarLint all'interno di IDE, i risultati sono diversi (esempi di file 274 ​​errori in IDE, 826 in SonarQube!).SonarLint non mostra tutti i record rispetto al server SonarQube di riferimento

Una delle consuete differenziazioni è che "Variabile potrebbe essere dichiarata finale".

anche uno dei miei colleghi che sta usando per SonarLint IntelliJIdea sta avendo problemi simili (Idea versione 2016/01/01, SonarLint 2.0.2, file di esempio - stessi usati per il confronto in IDE 293 errori).

Mi chiedo perché ci sono tali differenziazioni contro il server e anche tra IDE.

Qualcuno potrebbe darmi una mano? Grazie.

risposta

10

sto affrontando un problema simile, illustrato da questo esempio: SonarLint 2.0.2: 99 problemi. SonarQube 5.4 UI: 116 problemi. Differenze causate da 2 regole che appartengono al plugin Checkstyle.

Come si sta parlando di "variabile potrebbe essere dichiarato finale" Sto assumendo la regola dietro le questioni che manca è PMD: LocalVariableCouldBeFinal, che appartiene al Plugin PMD.

Fabrice ha commentato su questo argomento in SonarQube Google Group che "non aggiungerà il supporto per qualsiasi motore esterno": SonarQube Google Group (questo è vero per PMD, Checkstyle, Findbugs e altri ...)

Quindi, purtroppo, possiamo utilizzare solo le regole menzionate in SonarLint rules list fornite da SonarQube out of the box (ovvero il loro Java Plugin).

+0

Capisco! Grazie mille per la spiegazione sui motori esterni, ora ha molto più senso. – Uhla

+0

Una buona risposta! Forse, il rimedio sarebbe per le persone di creare un nuovo profilo di qualità in SonarQube, facendo uso della mappatura delle regole e quindi attivare quel profilo invece di ciò che è disponibile in FindBugs e PMD. Immagino che questa dovrebbe essere una nuova richiesta di funzionalità per il prodotto SonarQube --- elevando il profilo basato su FindBug all'analizzatore SonarSource. – Jaywalker

6

Prima di tutto, SonarQube eseguito un'analisi completa del progetto, mentre SonarLint analizza solo i file che si apre. Quindi non so davvero come il tuo paragone del numero di problemi possa avere senso (a meno che tu non abbia aperto tutti i file uno per uno in Eclipse).

In secondo luogo, ci sono alcune ragioni per cui noti SonarLint mostrerà meno o più problemi di quanto SonarQube:

  • Alcune regole in base alle metriche vengono calcolate solo in SonarQube. Per esempio:
    • insufficiente copertura (linea o ramo)
    • commento insufficiente densità
    • codice duplicato
  • Potreste aver definito emettere esclusioni su SonarQube, che non sono ancora presi in considerazione in SonarLint
    • Ma questo arriverà presto
  • esclusioni di codice sorgente Si potrebbe avere definito su SonarQube, che non sono ancora presi in considerazione in SonarLint
    • Ma questo arriverà presto
+0

Prima di tutto, grazie per la risposta. Apprezzo la risposta rapida. Secondo: ho capito che per alcuni problemi sono necessari più file analizzati (ad esempio per problemi di immutabilità, ecc.), Tuttavia non credo che sia necessario in particolare per il tipo di errore "Variabile potrebbe essere dichiarato finale". solo il contesto più vicino lì, non dovresti? Non ho esclusioni di problemi su SonarQube e le esclusioni del codice sorgente non influiscono sull'area testata. Capisco anche l'argomento delle metriche - e vorrei capire quelle mancanti. – Uhla

+0

Tuttavia, se mi concentro specificamente su _Variable potrebbe essere dichiarato final_, non capisco davvero perché non vengano visualizzati. – Uhla

+0

Ok, leggi i commenti sui motori esterni da @ jan-s e ha senso ora. – Uhla

-1

Se si fa clic sul progetto, non funzionerà, è necessario andare nel progetto e fare clic sui file java, una volta che si fa clic sui file Java presenti nel progetto. Si vedrà SonarLint ottenere attivato e che mostra tutti gli errori presenti. Ha funzionato per me