Sonar (nu Sonar) – Monitor projekt og kode kvalitet

Sonar – open Source projekt og kode kvalitet overvågning

Olivier Gaudin, Freddy Mallet, SonarSource, http://www.sonarsource.com

Hvad er Sonar ?

Sonar (nu kaldet sonar) er en open source-platform, der bruges af udviklingshold til at styre kildekodekvalitet. Sonar er udviklet med et hovedmål i tankerne: gør kodekvalitetsstyring tilgængelig for alle med minimal indsats.

som sådan giver Sonar kodeanalysatorer, rapporteringsværktøjer, fejljagtmoduler og TimeMachine som kernefunktionalitet. Men det indleder også en plugin-mekanisme, der gør det muligt for samfundet at udvide funktionaliteten (mere end 35 tilgængelige plugins), hvilket gør Sonar til one-stop-shop for kildekodekvalitet ved ikke kun at adressere udviklere, men også lederes behov.

med hensyn til sprog understøtter Sonar analyse af Java i kernen, men også af JavaScript, PHP, PL/COBOL og Cobol gennem plugins (Open Source eller kommerciel), da rapporteringsmotoren er sprogagnostisk.

siden version 2.0 gør Sonar det muligt at dække kvalitet på 7 akser og så at rapportere om:

  • duplikeret kode
  • kodningsstandarder
  • enhedstest
  • kompleks kode
  • potentielle fejl
  • Design og arkitektur

Sonar kan bruges til engangsrevisioner, men er designet til at understøtte den globale kontinuerlige forbedringsstrategi for kodekvalitet i en virksomhed og kan derfor bruges som en delt central repository for kvalitetsstyring.

hjemmeside: https://www.sonarqube.org/
produktversion: Sonar 2.0
Licens: LGPL V3
Support: https://www.sonarsource.com/support/
Plugins: https://docs.sonarqube.org/display/PLUG/Plugin+Library

hvorfor skal du administrere kildekode kvalitet?

et velskrevet program er et program, hvor omkostningerne ved implementering af en funktion er konstante i hele programmets levetid-Itay Maman

som en hurtig introduktion er dette den bedste definition af kildekodekvalitet, jeg kunne finde. Det bliver endnu stærkere, når det er omvendt: abadly skriftlig program er et program, hvor omkostningerne ved at implementere en funktion vokser gennem tiden.

det lyder dårligt,ikke?

vi har alle set situationer, hvor et nyt projekt starter, hvis mål er at udvikle en applikation fra bunden i en førende edgeteknologi. Alt går meget hurtigt; første, anden, tredje udgivelse og derefter pludselig begynder holdets hastighed at falde. Fjerde udgivelse udskydesfor tredje gang bryder fastsættelse af noget noget andet…

Hvad sker der her? I betragtning af symptomerne kan vi antage, at teamet lider af teknisk gæld blandt andet, og at interessenter ikke er opmærksomme på det og derfor ikke kan håndtere det.

men dette vil sandsynligvis blive løst, da projektet er nyt, har synlighed, og derfor vil nogen tage sig af det (i det mindste kan vi håbe det).

men dette eksempel var kun en starter, da vi, IT-folk, ikke arbejder det meste af vores tid på applikationer, hvis udvikling startede for mindre end 6 måneder siden! Vores job er hovedsageligt lavet af opgraderinger til eksisterende applikationer. Det er der, hvor de fleste af pengene bruges i det, hvor der er mindre synlighed, hvorofte er der en stor årlig indhylling at gøre så meget som vi kan, hvor der er mennesker,der er nøglen, fordi de er de eneste, der er i stand til at forstå koden, hvor vi ikke aner, hvor lang tid en ændring vil tage, hvor regressioner er hyppige, og folk er bange for at foretage ændringer. Og der er dybest set ingen opmærksomhed overhovedet fra virksomheden på det, bare gør det!

håndtering af kildekodekvalitet handler om at optimere ROI, da det vil give dig synlighed og derfor mere kontrol på:

  1. hvor hård vedligeholdelse vil være, hvad kan vi forvente
  2. det faktum, at tingene ikke bliver værre
  3. det faktum, at der skal lægges en vis opmærksomhed på den kritiske del af systemet, for eksempel at øge dækningen ved enhedstest, undertrykke cyklusser, fjerne duplikationer

yderligere mere giver det en sikkerhedskopi for udviklere at hæve deres hånd, når de tror, at nogle refactoring er påkrævet, der ville tilføje lidt til achange, men ville have god roi.

hvordan til at styre kildekode kvalitet?

der er syv tekniske akser, der skal ses på, når du laver kildekodeanalyse af et projekt, og Sonar er i stand til at understøttestyring af alle syv. I Sonar-teamet kalder vi dem de 7 dødssynder hos udvikleren:

  • manglende respekt for kodningsstandarder og bedste praksis
  • manglende kommentarer i kildekoden, især i offentlige API ‘ er
  • har duplikeret kodelinjer
  • har kompleks komponent eller/og en dårlig fordeling af kompleksitet blandt komponenter
  • har ingen eller lav kodedækning ved enhedstest, især i kompleks del af programmet
  • leaving potentielle bugs
  • at have en spaghetti design (pakke cykler…)

det første skridt, når du laver kildekodekvalitetsstyring, er virkelig at definere, hvilke af disse akser der er vigtige for dig, og i hvilket omfang.På baggrund af den nuværende situation bør der udarbejdes en plan for at nå målniveauet (det kan simpelthen være at opretholde et højt kvalitetsniveau). Meget vigtigt er at starte i det små og blive større, når det bliver fuldt vedtaget af hele udviklingsholdet.

lad os nu se på, hvordan man bruger Sonar i denne tilgang.

kvalitetsprofiler

Sonar gør det muligt at styre flere kvalitetsprofiler for at tilpasse det krævede niveau til projekttypen (kun support, Nyt projekt,kritisk applikation, teknisk lib…). Styring af en profil består af:

Aktiver / Deaktiver / vægtkodningsregler

Definer tærskler for målinger til automatisk alarmering

Definer projekt / profilforening

Dashboards

Sonar indeholder 2 dashboards, der giver det store billede for at få tip, hvor der kan være problemer, og for at sammenligne projekter:

  1. en konsolideret visning, der viser alle projekter
  2. et projektdashboard er også tilgængeligt på moduler og pakker niveau

jagtværktøjer

for at bekræfte, at det, der synes at være et problem, virkelig er et problem, tilbyder Sonar et jagtværktøjssæt, der gør det muligt at gå fra Oversigt til mindste detaljer:

  • bor ned på hvert mål, der vises for at se, hvad der ligger bag
  • klasser skyer for at finde mindre dækkede klasser ved enhedstest
  • hotspots at have på en side de fleste og de mindste filer
  • og en multi-entry (duplikering, dækning, overtrædelser, test succes…) kildeviser for at bekræfte resultaterne med jagtværktøjerne

TimeMachine

ingen tvivl om, at det er meget vigtigt at vide, hvor en applikation står. Men endnu vigtigere er at kende og forstå dens udvikling.Faktisk, hvad er det værd at vide, at der er 20% af kodedækningen af unittests? Er det godt eller dårligt? Er svaret anderledes, hvis det for to måneder siden var 15% eller 25%? TimeMachine gør det muligt at se udviklingen og afspille fortiden, især da den registrerer versioner af projektet

Hvordan fungerer Sonar?

Sonar er lavet af en ret enkel og fleksibel arkitektur, der består af tre komponenter:

  • et sæt kildekodeanalysatorer, der er grupperet i et Maven-plugin og udløses efter behov. Analysatorerne bruger konfiguration gemt i databasen. Selvom Sonar er afhængig af Maven til at køre analyse, er den i stand til at analysere Maven og ikke-Maven projekter.
  • en database til ikke kun at fortsætte resultaterne af analysen, projekterne og den globale konfiguration, men også for at holde historisk analyse for TimeMachine. 5 databasemotorer understøttes i øjeblikket: Oracle, Derby, Derby (kun demo), postgraduate og MS Server
  • et internetrapporteringsværktøj til at vise kodekvalitetsdashboards på projekter, jage efter defekter, kontrollere TimeMachine og konfigurere analyse.

som en del af sine analysatorer indleder Sonar core det bedste af raceværktøjer til at finde overtrædelser af kodningsregler (PMD, Checkstyle), opdage potentielle bugs(Findbugs) og måle dækning ved enhedstest (Cobertura, Clover). Men hvad gør Sonar virkelig unik er blæksprutte, sin egen kodeanalysator, der ikke kun analyserer kildekode, men også byte-kode og blander resultaterne.

da analysen køres gennem et Maven-plugin, kan Sonar let lanceres i “kontinuerlig Integration” – miljøer.

Use case on Apache commons-collection project

en forudsætning for at køre Sonar er at have Java og Maven installeret på kassen. Når dette er tilfældet, kan du køre Sonar i 5 enkle trin:

1. Hent distributionen fra https://www.sonarqube.org/Hent / og pak den ud

2. Åbn en konsol, og start serveren:

> $SONAR_HOME \ bin \ vinduer-86-32 \ StartSonar.bat på vinduer

> $SONAR_HOME/bin//sonar.sh på andre platforme

3. Åbn en konsol, hvor du vil tjekke kilden og køre:

svn co http://svn.apache.org/viewvc/commons/proper/collections/trunk/.

4. Kør MVN installer sonar: sonar i samme mappe

5. Gennemse http://localhost:9000

programmets hjemmeside viser listen over projekterunder kvalitetskontrol med et par konfigurerbare målinger.

for at forstørre kan du blot klikke på projektet og få dets dashboard

derfra har du adgang til en række jagtværktøjer, blandt hvilke:

hotspot for at finde ud af om de filer, der har “mest” eller “mindst” …

men også, enhver måling i instrumentbrættet kan klikkes for at hoppe tilbag scenen og få et billede af metrikken efter underliggende komponent

hvert jagtværktøj bringer til sidst jægeren til kildekoden, hvor rovdyrene fremhæves

Sonarøkosystemet

der er et meget dynamisk økosystem omkring Sonar

  • et aktivt samfund lavet af 300+ mennesker på brugerpostlisten og 150+ personer på udviklingspostlisten
  • 35+ plugins på forge (http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/), der er opdelt i to grupper: i fire kategorier
  • Integration med eksterne værktøjer som Jira, Hudson, Bamboo, GateIn, AnthillPro, publikum
  • direkte udvidelse af kernefunktionalitet ved at tilføje ny adfærd, beregne avancerede målinger eller konsolidere projekter, tilføje nye målinger
  • Tilføj dækning af sprog som Pl/kvm, ActionScript3
  • Integration med IDE ‘ er for at få fejloplysninger om koden, når den redigeres
  • 3.000+ overførsler pr. måned
  • et Kerneudviklingsteam ledet af Sonarsource (http://www.sonarsource.com)

konklusion

efter den massive vedtagelse af kontinuerlig integration motorer og test drevet udviklingspraksis, styring af kildekvalitet ligner detnaturligt næste skridt for udviklingshold i deres indsats for industrialisering. Sonar gør det muligt at nå dette mål med få indsats og med sjov.

i 2010 vil Sonarplatformen fortsætte med at udvikle sig, idet de vigtigste udviklingsakser dækker nye sprog og forbedrer integrationen med IDE ‘ er.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

Previous post 10 ting, du ikke vidste, du kunne gøre med Sudocrem
Next post TS 16949 certificeringskrav