Sonar-proiect Open Source și de monitorizare a calității Cod
Olivier Gaudin, Freddy Mallet, SonarSource, http://www.sonarsource.com
ce este sonarul ?
Sonar (numit acum SonarQube) este o platformă open source utilizată de echipele de dezvoltare pentru a gestiona calitatea codului sursă. Sonar a fost dezvoltat cu un obiectiv principal în minte: face managementul calității Cod accesibil pentru toată lumea, cu un efort minim.
ca atare, Sonar oferă analizoare de cod, instrumente de raportare, module de vânătoare defecte și TimeMachine ca funcționalitate de bază. Dar, de asemenea, pornește un mecanism de plugin care permite comunității să extindă funcționalitatea (mai mult de 35 de pluginuri disponibile), făcând Sonar ghișeul unic pentru calitatea codului sursă, adresându-se nu numai dezvoltatorilor, ci și nevoilor managerilor.
în termeni de limbi, analiza suport Sonar de Java în miez, dar, de asemenea, de JavaScript, PHP, PL/SQL și Cobol prin plugin-uri (Open Source sau comerciale) ca motorul de raportare este limba agnostic.
începând cu versiunea 2.0, Sonar permite acoperirea calității pe 7 axe și astfel raportarea:
- Cod duplicat
- standarde de codificare
- teste unitare
- cod Complex
- erori potențiale
- proiectare și arhitectură
sonarul poate fi utilizat pentru audituri unice, dar a fost conceput pentru a sprijini strategia globală de îmbunătățire continuă a calității codului într-o companie și, prin urmare, poate fi utilizat depozit central pentru managementul calității.
website: https://www.sonarqube.org/
Versiune produs: Sonar 2.0
Licență: LGPL V3
suport:https://www.sonarsource.com/support/
plugin-uri: https://docs.sonarqube.org/display/PLUG/Plugin+Library
de ce ar trebui să gestionați calitatea codului sursă?
un program bine scris este un program în care costul implementării unei caracteristici este constant pe toată durata de viață a programului-Itay Maman
ca introducere rapidă, aceasta este cea mai bună definiție a calității codului sursă pe care am putut-o găsi. Devine și mai puternic atunci când este pus invers: programul scris abadly este un program în care costul implementării unei funcții crește de-a lungul timpului.
asta sună rău, nu-i așa?
cu toții am văzut situații în care începe un nou proiect al cărui obiectiv este de a dezvolta de la zero o aplicație într-o tehnologie de vârf. Totul merge foarte repede; prima, a doua, a treia eliberare și apoi dintr-o dată, viteza echipei începe să scadă. A patra eliberare este amânatăpentru a treia oară, fixarea ceva rupe altceva…
ce se întâmplă aici? Având în vedere simptomele, putem presupune că echipa suferă de datorii tehnice, printre altele, și că părțile interesate nu sunt conștiente de aceasta și, prin urmare, nu pot face față acesteia.
dar acest lucru se va rezolva cel mai probabil, deoarece proiectul este nou, are vizibilitate și, prin urmare, cineva va avea grijă de el (cel puțin putem spera).
dar acest exemplu a fost doar un starter, deoarece noi, oamenii IT, nu lucrăm de cele mai multe ori la aplicații a căror dezvoltare a început cu mai puțin de 6 luni în urmă! Treaba noastră este făcută în principal din upgrade-uri la aplicațiile existente. Acolo unde majoritatea banilor sunt cheltuiți în ea, unde există mai puțină vizibilitate, unde de multe ori există un înveliș anual mare pentru a face cât de mult putem, unde există oameni care sunt cheie pentru că sunt singurii capabili să înțeleagă codul,unde nu avem idee cât va dura o schimbare, unde regresiile sunt frecvente și oamenii se tem să facă schimbări. Și nu există practic nici un fel de atenție de afaceri pe care, doar fă-o!
gestionarea calității codului sursă se referă la optimizarea ROI, deoarece vă va oferi vizibilitate și, prin urmare, mai mult control asupra:
- cât de greu va fi întreținerea, la ce ne putem aștepta
- faptul că lucrurile nu se înrăutățesc
- faptul că ar trebui acordată o atenție deosebită părții critice a sistemului, pentru a crește, de exemplu, acoperirea prin teste unitare, pentru a suprima ciclurile, pentru a elimina duplicările
mai mult oferă o copie de rezervă pentru dezvoltatori refactorizarea este necesară, care ar adăuga un pic la achange, dar ar avea un roi bun.
cum se gestionează calitatea codului sursă?
există șapte axe tehnice care ar trebui analizate atunci când se face analiza codului sursă a unui proiect, iar sonarul este capabil să sprijine gestionarea tuturor celor șapte. În echipa Sonar, ne place să le numim cele 7 păcate mortale ale dezvoltatorului:
- nerespectarea standardelor de codificare și a celor mai bune practici
- lipsa comentariilor în codul sursă, în special în API-urile publice
- având linii duplicate de cod
- având componente complexe sau/și o distribuție necorespunzătoare a complexității între componente
- fără acoperire de cod sau scăzută prin teste unitare, în special în 7278>
- lăsând potențiale bug-uri
- având un design spaghete (cicluri pachet…)
primul pas atunci când faceți managementul calității codului sursă este într-adevăr să definiți care dintre aceste axe sunt importante pentru dvs. și în ce măsură.Apoi, pe baza situației actuale, ar trebui stabilit un plan pentru a atinge nivelul țintă (care ar putea fi pur și simplu pentru a menține un nivel ridicat de calitate). Veryimportant este de a începe mici și du-te mai mare atunci când acesta devine pe deplin adoptat de întreaga echipă de dezvoltare.
acum, să aruncăm o privire la modul de utilizare a sonarului în această abordare.
profiluri de calitate
Sonar permite gestionarea mai multor profiluri de calitate pentru a adapta nivelul necesar la tipul de proiect (numai suport, proiect nou,aplicație critică, lib tehnic…). Gestionarea unui profil constă din:
activare / dezactivare / reguli de codare a greutății
definiți pragurile pentru valorile pentru alertarea automată
definiți Asociația de proiect / profil
tablouri de bord
Sonar conține 2 tablouri de bord care oferă imaginea de ansamblu pentru a obține indicii unde ar putea exista probleme și pentru a compara proiectele:
- o vizualizare consolidată care arată toate proiectele
- un tablou de bord al proiectului este de asemenea disponibil la nivel de module și pachete
instrumente de vânătoare
pentru a confirma că ceea ce pare a fi o problemă este într-adevăr o problemă, Sonar oferă un set de instrumente de vânătoare care:
- detaliați fiecare măsură afișată pentru a vedea ce se află în spatele
- nori de clase pentru a găsi clase mai puțin acoperite prin teste unitare
- hotspot-uri pentru a avea pe o pagină Cele mai multe și cele mai puține fișiere
- și o intrare multiplă (duplicare, acoperire, încălcări, teste de succes…) sursă viewer pentru a confirma constatările făcute cu instrumente de vânătoare
TimeMachine
fără îndoială că știind în cazul în care o cerere se află este foarte important. Dar și mai important este să cunoaștem și să înțelegem evoluția sa.Într-adevăr, ce merită să știți că există 20% din acoperirea codului de către unittests? Este bine sau rău? Răspunsul este diferit dacă acum două luni era 15% sau 25%? TimeMachine permite să urmăriți evoluția și reluarea trecutului, mai ales că înregistrează versiuni ale proiectului
cum funcționează Sonar?
sonarul este realizat dintr-o arhitectură destul de simplă și flexibilă, care constă din trei componente:
- un set de analizoare de cod sursă care sunt grupate într-un plugin Maven și sunt declanșate la cerere. Analizoarele utilizează configurația stocată în baza de date. Deși Sonar se bazează pe Maven pentru a rula analiza, este capabil să analizeze proiectele Maven și non-Maven.
- o bază de date pentru a persista nu numai rezultatele analizei, proiectele și configurația globală, ci și pentru a păstra analiza istorică pentru TimeMachine. 5 motoare de baze de date sunt acceptate în prezent : Oracle, MySQL, Derby (numai demo), PostgreSQL și MS SQLServer
- un instrument de raportare web pentru a afișa tablouri de bord de calitate cod pe proiecte, hunt pentru defecte, verificați TimeMachine și pentru a configura analiza.
ca parte a analizoarelor sale, Sonar core pornește cele mai bune instrumente de rasă pentru a găsi încălcări ale regulilor de codificare (PMD, Checkstyle), pentru a detecta eventualele erori(Findbugs) și pentru a măsura acoperirea prin teste unitare (Cobertura, Clover). Dar ceea ce face ca sonarul să fie cu adevărat unic este Squid, propriul său analizor de cod care nu numai că analizează codul sursă, ci și Codul octet și amestecă rezultatele.
deoarece analiza este rulat printr-un plugin Maven, Sonar poate fi lansat cu ușurință în medii de „Integrare Continuă”.
Utilizare caz pe Apache commons-collection project
o condiție prealabilă pentru a rula Sonar este de a avea Java și Maven instalat pe cutie. Odată ce acesta este cazul, puteți rula Sonar în 5 pași simpli:
1. Descărcați distribuția din https://www.sonarqube.org/ descărcări / și dezarhivați-o
2. Deschideți o consolă și porniți serverul:
> $SONAR_HOME \ Coș\ferestre-x86-32 \ StartSonar.bat pe windows
> $SONAR_HOME/bin//sonar.sh pe alte platforme
3. Deschideți o consolă în care doriți să verificați sursa și rulați:
svn co http://svn.apache.org/viewvc/commons/proper/collections/trunk/.
4. Rulați MVN instalați sonar: sonar în același director
5. Răsfoiți http://localhost:9000
pagina principală a aplicației afișează lista de proiecte sub controlul calității cu câteva valori configurabile.
pentru a mări, puteți pur și simplu să faceți clic pe proiect și să obțineți tabloul de bord
de acolo aveți acces la o serie de instrumente de vânătoare printre care:
hotspot-ul pentru a afla despre fișierele care au „cel mai mult” sau „cel mai puțin” …
dar, de asemenea, orice metrică din tabloul de bord poate face clic pentru a sări în spatele scenei și a obține o vedere a metricii după componenta de bază
fiecare instrument de vânătoare aduce în cele din urmă vânătorul la codul sursă unde sunt evidențiate pradele
ecosistemul Sonar
există un ecosistem foarte dinamic în jurul Sonar
- o comunitate activă formată din peste 300 de persoane pe lista de discuții a utilizatorilor și peste 150 de persoane pe lista de discuții pentru dezvoltare
- 35 + pluginuri pe forge (http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/) care sunt împărțite în în patru categorii
- integrarea cu instrumente externe, cum ar fi Jira, Hudson, bambus, GateIn, AnthillPro, mulțimea
- extinderea directă a funcționalității de bază prin adăugarea de noi comportamente, se calculează valori avansate sau consolida proiecte, se adaugă noi valori
- adauga acoperire de limbi, cum ar fi PL/SQL, ActionScript3
- integrarea cu IDE pentru a obține informații 7278>
- 3.000+ descărcări pe lună
- o echipă de dezvoltare de bază condusă de Sonarsource (http://www.sonarsource.com)
concluzie
după adoptarea masivă a motoarele de integrare continuă și practicile de dezvoltare bazate pe teste, gestionarea calității sursei arată ca următorul pas natural pentru echipele de dezvoltare în efortul lor de industrializare. Sonar permite atingerea acestui obiectiv cu puține eforturi și cu distracție.
în 2010, platforma Sonar va continua să evolueze, principalele axe de dezvoltare acoperind noi limbi și îmbunătățind integrarea cu IDE.