SonarQube: un valido strumento di analisi statica del codice
SonarQube (1) è uno strumento che consente ad un team di scrivere codice più pulito e più sicuro. Esso garantisce unʼispezione continua del codice e mette a disposizione migliaia di regole automatizzate finalizzate all’analisi statica del codice. Queste regole forniscono protezione al progetto esaminato e guidano il team di sviluppo.
Nei successivi paragrafi Andrea Caglio darà una scorsa al tool: le pagine principali, tecnologie supportate e gli ambiti attraverso i quali viene misurata la qualità del codice.
Pagine principali di SonarQube
La home page dello strumento fornisce una fotografia della situazione, in termini di qualità, del progetto sottoposto all’analisi.
Tramite la pagina Issues è possibile valutare in dettaglio ogni problematica trovata, quali sono le issue principali, dove si trovano nel codice e quando sono stati aggiunti.
Unʼaltra pagina interessante è quella relative alle Measures che permette di analizzare il progetto in diverse modalità, con lʼobiettivo di evidenziare i file che necessitano dell’attenzione degli sviluppatori. Per ciascun dominio SonarQube fornisce un diagramma a bolle (immagine seguente) che mette in correlazione diverse metriche.
Build technology
Nel caso di un progetto scritto in Java, le tecnologie di default supportate sono Maven (2) e Gradle (3). Qualora ci fosse la necessità di analizzare un progetto Ant (4) si potrebbe comunque ricorrere a SonarQube attraverso la soluzione SonarScanner (5).
Misurazione della qualità con SonarQube
Per fornire una migliore affidabilità del codice, SonarQube si concentra sui seguenti cinque ambiti.
Quality Gate
Il Quality Gate è un insieme di condizioni booleane basate su una collezione di misure. Lo scopo è aiutare l’utente a capire nell’immediato se il progetto preso in esame è pronto per la produzione. Se il Quality Gate dovesse risultare non superato verrebbero mostrate le misure che hanno causato il fallimento e anche i valori necessari per soddisfarlo.
Rilevazione dei bug
I problemi rilevati da SonarQube sono originati da un codice chiaramente errato o che, con elevate probabilità, non produce il comportamento previsto. Questo strumento è in grado di trovare i bug più difficili da individuare e mette in evidenza i problemi che possono causare in più punti del codice (come mostrato di seguito).
Code Smell
SonarQube individua i code smell (6) all’interno del progetto sottoposto all’analisi. Lo smelly code è un codice che probabilmente è in grado di fare ciò per cui è stato scritto, ma è difficile da mantenere. Questa problematica è legata al fatto che, nel peggiore dei casi, tale codice genera confusione e i manutentori rischiano, apportando ulteriori modifiche, di introdurre bug nel progetto. Esempi di
code smell sono codice duplicato, codice non coperto da test e codice troppo complesso (immagine seguente).
Vulnerabilità legate alla sicurezza
SonarQube aiuta gli sviluppatori a migliorare la sicurezza del codice scritto, trovando e tracciando vulnerabilità come SQL Injection (7), le password hard-coded (ovvero scritte all’interno di righe di codice) ed errori gestiti in una maniera inadeguata (immagine seguente).
Esplorazione di tutti i percorsi di esecuzione
SonarQube funziona tramite diversi motori di flusso dei dati che sono orientati ai cammini seguiti dal codice. Tramite questa caratteristica lo strumento esplora tutti i possibili percorsi di esecuzione, riuscendo ad individuare anche i bug più nascosti. Controllare manualmente, senza fare uso di strumenti dedicati, tutti i percorsi di esecuzione di un progetto e verificare che essi siano privi di errori, è praticamente impossibile.