2015-04-13 7 views
12

TL; DR: Fondamentalmente quello che sto cercando è un modo per ottenere un elenco di tutte le regole del sonar che hanno sollevato 0 problemi. Potrei quindi spostare tutti quelli verso i bloccanti e proteggermi da qualcuno che aggiunga quel problema in futuro.Ricerca di regole con 0 istanze nel sonar?

La mia azienda utilizza il sonar e l'analisi statica per guidare il refactoring e lo sviluppo di una base di codice legacy considerevole (~ 750K LOC). Abbiamo avuto molto successo abbassando la severità della maggior parte delle regole e quindi scegliendo un insieme più piccolo di regole per promuovere fino a bloccanti o critici poiché troviamo problemi reali nel codice. Ciò ha tenuto gestibile il numero di problemi che stiamo cercando di affrontare in un momento in modo che possiamo effettivamente sentire come stiamo facendo progressi e non affogare nel rumore dei problemi legacy.

In particolare quando siamo stati morsi da un problema di campo o QA che il sonar avrebbe potuto rilevare, trasformiamo tale problema in un BLOCKER e correggiamo ogni istanza di. Questi bloccanti interrompono la compilazione e ora siamo sicuri che non aggiungi nuovamente una nuova istanza dello stesso problema. Questo ha funzionato benissimo e ha tenuto un certo numero di quelli che sarebbero stati i cattivi insetti a scivolare.

Il grande problema con questa metodologia è che abbiamo bisogno di avere un esempio di ognuna di quelle classi di errori almeno una volta nella base di codice in modo da poter imparare che era importante e dovrebbe essere reso un blocco. Eventuali problemi che non abbiamo ancora riscontrato saranno ancora al loro livello predefinito, mi piacerebbe trasferirli tutti fino a BLOCKER ora, quindi notiamo il giorno in cui sono stati aggiunti.

Modifica: Attualmente stiamo usando 3.7.3 ma stiamo per effettuare l'aggiornamento a 5.X.

+0

Quale versione di SonarQube stai utilizzando. – benzonico

risposta

5

Ci sono 2 modi per farlo:

1- Il modo più difficile è quello di interrogare il database SonarQube. Devi capire le tabelle e scrivere una query SQL in base a quale DB viene utilizzato per il tuo SonarQube. Potete trovare qualche riferimento - OR here

2- Non ho mai provato il vostro metodo ma dovrebbe funzionare. È possibile utilizzare l'API del servizio Web Sonar. Hai anche un client Java del servizio Web. Riferimento: link1, link2, link3