Sonar-Monitoraggio della qualità del progetto e del codice open Source
Olivier Gaudin, Freddy Mallet, SonarSource, http://www.sonarsource.com
Che cos’è il Sonar ?
Sonar (ora chiamato SonarQube) è una piattaforma open source utilizzata dai team di sviluppo per gestire la qualità del codice sorgente. Sonar è stato sviluppato con un obiettivo principale in mente: rendere la gestione della qualità del codice accessibile a tutti con il minimo sforzo.
Come tale, Sonar fornisce analizzatori di codice, strumenti di reporting, moduli di caccia difetti e TimeMachine come funzionalità di base. Ma si imbarca anche un meccanismo di plugin che consente alla comunità di estendere la funzionalità (più di 35 plugin disponibili), rendendo Sonar il one-stop-shop per la qualità del codice sorgente, affrontando non solo gli sviluppatori, ma anche i manager esigenze.
In termini di lingue, Sonar supporta l’analisi di Java nel core, ma anche di JavaScript, PHP, PL/SQL e Cobol attraverso plugin (Open Source o commerciali) in quanto il motore di reporting è indipendente dal linguaggio.
a partire dalla versione 2.0, Sonar consente di coprire qualità su 7 assi e quindi alla relazione sulla:
- codice Duplicato
- standard di Codifica
- Unit test
- codice
- Potenziali bug
- Design e architettura
Sonar può essere utilizzato per le verifiche, ma è stato progettato per il supporto globale per il miglioramento continuo della strategia sulla qualità del codice in azienda e, pertanto, può essere utilizzato come un comune repository centrale per la gestione della qualità.
Sito Web: https://www.sonarqube.org/
Versione del prodotto: Sonar 2.0
Licenza: LGPL V3
Supporto: https://www.sonarsource.com/support/
Plugin: https://docs.sonarqube.org/display/PLUG/Plugin+Library
Perché dovresti gestire la qualità del codice sorgente?
Un programma ben scritto è un programma in cui il costo di implementazione di una funzionalità è costante per tutta la durata del programma-Itay Maman
Come introduzione rapida, questa è la migliore definizione della qualità del codice sorgente che ho trovato. Diventa ancora più forte quando viene messo il contrario: abadly programma scritto è un programma in cui il costo di implementazione di una funzione cresce nel tempo.
Che suona male, non è vero?
Abbiamo tutti visto situazioni in cui inizia un nuovo progetto il cui obiettivo è quello di sviluppare da zero un’applicazione in una tecnologia all’avanguardia. Tutto va molto veloce; prima, seconda, terza release e poi allof un tratto, la velocità della squadra inizia a diminuire. La quarta versione è posticipataper la terza volta, aggiustando qualcosa si rompe qualcos’altro…
Cosa sta succedendo qui? Dati i sintomi, possiamo ipotizzare che la squadra soffra di debiti tecnici tra le altre cose e che le parti interessate non ne siano consapevoli e non possano quindi affrontarli.
Ma molto probabilmente verrà risolto poiché il progetto è nuovo, ha visibilità e quindi qualcuno si prenderà cura di esso (almeno possiamo sperarlo).
Ma questo esempio è stato solo un antipasto, poiché noi, IT people, non lavoriamo la maggior parte del nostro tempo su applicazioni il cui sviluppo è iniziato meno di 6 mesi fa! Il nostro lavoro è fatto principalmente di aggiornamenti alle applicazioni esistenti. Che iswhere la maggior parte del denaro viene speso in ESSO, dove c’è meno visibilità, whereoften c’è una grande annuali avvolgono di fare quanto ci è possibile, dove c’arepeople che sono fondamentali, perché sono gli unici in grado di capire il codice,dove non abbiamo idea di quanto tempo un cambiamento sta andando a prendere, dove le regressioni arefrequent e le persone hanno paura di fare modifiche. E non c’è praticamente alcuna attenzione da parte del business su questo, fallo e basta!
La gestione della qualità del codice sorgente consiste nell’ottimizzare il ROI in quanto ti darà visibilità e quindi un maggiore controllo:
- come è dura la manutenzione sarà, che cosa possiamo aspettarci
- il fatto che le cose non sono sempre peggio
- il fatto che una certa attenzione dovrebbe essere data alla parte critica del sistema, per aumentare ad esempio la copertura dei test di unità, sopprimere cicli, rimuovere duplicazioni
inoltre si dà una copia di backup per gli sviluppatori di alzare la mano quando credono che alcune di refactoring è necessario che vorresti aggiungere un po ‘ di amutamento ma devono avere un buon ROI.
Come gestire la qualità del codice sorgente?
Ci sono sette assi tecnici che dovrebbero essere esaminati quando si esegue l’analisi del codice sorgente di un progetto e Sonar è in grado di supportarela gestione di tutti e sette. Nel team Sonar, ci piace chiamarli i 7 peccati capitali dello sviluppatore:
- non rispetto di standard di codifica e di best practice
- privo di commenti nel codice sorgente, specialmente in pubblico, Api
- avere duplicati righe di codice
- complessa, componente e/o una cattiva distribuzione di complessità tra componenti
- avere scarse o nessuna copertura del codice da parte di unit test, soprattutto nella parte complessa del programma
- lasciando potenziali bug
- avendo spaghetti di design (pacchetto di cicli…)
Il primo passo quando si esegue la gestione della qualità del codice sorgente è definire quale di questi assi è importante per te e a quale estensione.Quindi, sulla base della situazione attuale, dovrebbe essere stabilito un piano per raggiungere il livello obiettivo (che potrebbe essere semplicemente quello di mantenere un alto livello di qualità). Veryimportant è quello di iniziare in piccolo e andare più grande quando viene completamente adottato da tutto il team di sviluppo.
Ora, diamo un’occhiata a come utilizzare Sonar in questo approccio.
Profili di qualità
Sonar consente di gestire più profili di qualità per adattare il livello richiesto al tipo di progetto (solo supporto, nuovo progetto, applicazione critica, lib tecnica…). La gestione di un profilo consiste in:
attiva / disattiva / regole di codifica del peso
definisci soglie sulle metriche per l’avviso automatico
definisci associazione progetto / profilo
Dashboard
Sonar contiene 2 dashboard che forniscono il quadro generale per ottenere suggerimenti dove potrebbero esserci problemi e per confrontare i progetti:
- una visualizzazione consolidata che mostra tutti i progetti
- un progetto dashboard è disponibile anche in moduli e pacchetti di livello
Strumenti di Caccia
Per confermare che quello che sembra essere un problema che è davvero un problema, Sonar offre una battuta di caccia insieme di strumenti che consente di passare dalla panoramica al smallestdetails:
- drill-down su ogni misura visualizzata per vedere cosa c’è dietro
- classi nuvole per trovare classi meno coperte da test unitari
- hotspot per avere su una pagina il maggior numero e il minor numero di file
- e un multi-entry (duplicazione, copertura, violazioni, test di successo…) source viewer per confermare i risultati fatti con gli strumenti di caccia
TimeMachine
Non c’è dubbio che sapere dove si trova un’applicazione è molto importante. Ma ancora più importante è conoscere e capire la sua evoluzione.In effetti, quanto vale la pena sapere che esiste il 20% della copertura del codice da parte di unittest? È buono o cattivo? La risposta è diversa se due mesi fa era 15%o 25%? TimeMachine consente di guardare l’evoluzione e riprodurre il passato, soprattutto perché registra le versioni del progetto
Come funziona Sonar?
Sonar è costituito da un’architettura abbastanza semplice e flessibile che consiste di tre componenti:
- Un insieme di analizzatori di codice sorgente che sono raggruppati in un plugin Maven e vengono attivati su richiesta. Gli analizzatori utilizzano la configurazione memorizzata nel database. Sebbene Sonar si basi su Maven per eseguire l’analisi, è in grado di analizzare progetti Maven e non Maven.
- Un database per non solo mantenere i risultati dell’analisi, i progetti e la configurazione globale, ma anche per mantenere l’analisi storica per TimeMachine. Sono attualmente supportati 5 motori di database: Oracle, MySQL, Derby (solo demo), PostgreSQL e MS SqlServer
- Uno strumento di reporting web per visualizzare dashboard di qualità del codice sui progetti, cercare difetti, controllare TimeMachine e configurare l’analisi.
Come parte dei suoi analizzatori, Sonar core si imbarca best of breed strumenti per trovare regole di codifica violazioni (PMD, Checkstyle), rilevare potenziali bug(Findbugs) e misurare la copertura da unit test (Cobertura, Clover). Ma ciò che rende Sonar davvero unico è Squid, il suo analizzatore di codice che non solo analizza il codice sorgente ma anche il codice byte e mescola i risultati.
Poiché l’analisi viene eseguita attraverso un plugin Maven, Sonar può essere lanciato facilmente in ambienti di “Integrazione continua”.
Caso d’uso su Apache commons-collection project
Un pre-requisito per eseguire Sonar è avere Java e Maven installati sulla scatola. Una volta che questo è il caso, è possibile eseguire Sonar in 5 semplici passaggi:
1. Scarica la distribuzione da https://www.sonarqube.org/ download / e decomprimila
2. Aprire una console e avviare il server:
> $SONAR_HOME \ bin \ windows-x86-32 \ StartSonar.bat su windows
> $SONAR_HOME/bin//sonar.sh su altre piattaforme
3. Aprire una console in cui si desidera eseguire il checkout dell’origine ed eseguire:
svn co http://svn.apache.org/viewvc/commons/proper/collections/trunk/.
4. Eseguire mvn install sonar: sonar nella stessa directory
5. Sfoglia http://localhost:9000
La home page dell’applicazione mostra l’elenco dei progettisotto controllo di qualità con alcune metriche configurabili.
Per ingrandire, puoi semplicemente fare clic sul progetto e ottenere la sua dashboard
Da lì si ha accesso a una serie di strumenti di caccia tra i quali:
L’hotspot per scoprire i file che hanno “il più” o “il meno” …
Ma anche, qualsiasi metrica nel cruscotto è cliccabile per saltare tobehind la scena e ottenere una vista della metrica da componente sottostante
Ogni strumento di caccia porta alla fine il cacciatore, il codice sorgente, dove le prede sono evidenziati
Il Sonar Ecosistema
C’è un modo molto dinamico ecosistema intorno Sonar
- attiva Una comunità di 300 persone in lista e 150+ persone nella mailing list di sviluppo
- 35+ plug-in su la fucina (http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/) che sono divisi in quattro categorie
- Integrazione con strumenti esterni come Jira, Hudson, Bambù, GateIn, AnthillPro, Folla
- Diretta estensione di funzionalità di base con l’aggiunta di nuovi comportamento, calcolare le metriche avanzate o consolidare progetti di aggiungere nuovi parametri
- Aggiungere la copertura di lingue come l’PL/SQL, ActionScript3
- Integrazione con l’Ide per ottenere difetti informazioni sul codice quando viene modificato
- 3,000+ download al mese
- Un team di sviluppo guidato da SonarSource (http://www.sonarsource.com)
Conclusione
Dopo la massiccia adozione di motori di integrazione continua e test Guidati Pratiche di sviluppo, la gestione della qualità delle fonti sembra il passo successivo naturale per i team di sviluppo nel loro sforzo di industrializzazione. Sonar permette di raggiungere questo obiettivo con pochi sforzi e con divertimento.
Nel 2010, la piattaforma Sonar continuerà ad evolversi, i principali assi di sviluppo sono la copertura di nuovi linguaggi e il miglioramento dell’integrazione con IDE.