Sonar-Åpen Kildekode-Prosjekt Og Kodekvalitet Overvåking
Olivier Gaudin, Freddy Mallet, SonarSource, http://www.sonarsource.com
Hva Er Sonar ?
Sonar (nå Kalt SonarQube) er en åpen kildekode-plattform som brukes av utviklingsteam for å administrere kildekoden kvalitet. Sonar er utviklet med et hovedmål i tankene: gjør kodekvalitetsstyring tilgjengelig for alle med minimal innsats.
Som sådan Gir Sonar kodeanalysatorer, rapporteringsverktøy, feiljaktmoduler og Tidsmaskin som kjernefunksjonalitet. Men Det legger også ut en plugin mekanisme slik at samfunnet for å utvide funksjonaliteten (mer enn 35 plugins tilgjengelig), Noe Som Gjør Sonar one-stop-shop for kildekoden kvalitet ved å ta ikke bare utviklere, men også ledere behov.
Når det gjelder språk, Støtter Sonar analyse Av Java i kjernen, men også Av JavaScript, PHP, PL/SQL og Cobol gjennom plugins (Åpen Kildekode eller kommersiell) som rapporteringsmotoren er språk agnostisk.
Siden versjon 2.0 Gjør Sonar det mulig å dekke kvalitet på 7 akser og så rapportere om:
- Duplisert kode
- Kodingsstandarder
- Enhetstester
- Kompleks kode
- Potensielle feil
- Design og arkitektur
Sonar kan brukes til engangsrevisjoner, men Er designet for å støtte global kontinuerlig forbedringsstrategi for kodekvalitet i et selskap og kan derfor brukes som en Felles Sentralt lager for kvalitetsstyring.
Nettsted: https://www.sonarqube.org/
Produktversjon: Sonar 2.0
Lisens: Lgpl V3
Støtte: https://www.sonarsource.com/support/
Plugins: https://docs.sonarqube.org/display/PLUG/Plugin+Library
Hvorfor bør du administrere kildekoden kvalitet?
et velskrevet program er et program der kostnadene ved å implementere en funksjon er konstant gjennom programmets levetid-Itay Maman
som en rask intro er dette den beste definisjonen av kildekodekvalitet jeg kunne finne. Det blir enda sterkere når satt den andre veien rundt: abadly skrevet program er et program der kostnadene ved å implementere en funksjon vokser hele tiden.
det høres dårlig ut, ikke sant?
vi har alle sett situasjoner der et nytt prosjekt starter hvis mål er å utvikle fra grunnen av et program i en ledende kantteknologi. Alt går veldig fort; første, andre, tredje utgivelse og så alt plutselig begynner lagets hastighet å synke. Fjerde utgivelse er utsattfor tredje gang, fikse noe bryter noe annet…
Hva skjer her? Gitt symptomene, kan vi anta at teamet lider av teknisk gjeld blant annet og at interessenter ikke er klar over det og derfor ikke kan håndtere det.
men dette vil sannsynligvis bli løst da prosjektet er nytt, har synlighet og derfor kommer noen til å ta vare på det (i det minste kan vi håpe det).
men dette eksemplet var bare en startpakke, DA VI, IT-folk, ikke jobber mesteparten av tiden vår på applikasjoner hvis utvikling startet mindre enn 6 måneder siden! Vår jobb består hovedsakelig av oppgraderinger av eksisterende applikasjoner. Det er hvor det meste av pengene blir brukt I det, hvor det er mindre synlighet, hvor det ofte er en stor årlig innhylling å gjøre så mye som mulig,hvor det er folk som er nøkkelen fordi de er de eneste som kan forstå koden, hvor vi ikke aner hvor lenge en endring kommer til å ta, hvor regresjoner er hyppige og folk er redd for å gjøre endringer. Og det er i utgangspunktet ingen oppmerksomhet fra virksomheten på det, bare gjør det!
Administrere kildekoden kvalitet handler om å optimalisere ROI som det kommer til å gi deg synlighet og derfor mer kontroll på:
- hvor hardt vedlikehold kommer til å være, hva kan vi forvente
- det faktum at ting ikke blir verre
- det faktum at noen oppmerksomhet bør gis til kritisk del av systemet, for å øke for eksempel dekning av enhet tester, undertrykke sykluser, fjerne duplikater
Videre mer det gir en backup for utviklere å heve sin hånd når de tror noen refactoring er nødvendig som vil legge litt til achange, men ville ha god avkastning.
hvordan administrere kildekoden kvalitet?
det er syv tekniske akser som bør sees på når du gjør kildekodeanalyse av et prosjekt, Og Sonar kan støtte styring av alle syv. I Sonar-teamet liker vi å kalle dem utviklerens 7 dødelige synder:
- ikke respekt for kodingsstandarder og beste praksis
- mangler kommentarer i kildekoden, spesielt i offentlige Apier
- har dupliserte kodelinjer
- har kompleks komponent eller/og en dårlig fordeling av kompleksitet blant komponenter
- har ingen eller lav kodedekning av enhetstester, spesielt i kompleks del av programmet
- forlater potensielle feil
- har en spaghetti design (pakkesykluser…)
det første trinnet når du gjør kildekoden kvalitetsstyring er virkelig å definere hvilke av disse aksene er viktig for deg og i hvilken grad.Deretter basert på den nåværende situasjonen, bør det etableres en plan for å nå målnivå (det kan bare være å holde et høyt kvalitetsnivå). Veldig viktig er å starte små og gå større når det blir fullt adoptert av hele utviklingsteamet.
La Oss nå se på Hvordan Du bruker Sonar i denne tilnærmingen.
Kvalitetsprofiler
Sonar gjør det mulig å administrere flere kvalitetsprofiler for å tilpasse ønsket nivå til prosjekttype (kun støtte, nytt prosjekt,kritisk søknad, teknisk lib…). Administrere en profil består av:
aktiver / deaktiver / vektkodingsregler
definer terskler for beregninger for automatisk varsling
definer prosjekt / profiltilknytning
Dashbord
Ekkolodd inneholder 2 dashbord som gir det store bildet for å få tips om hvor det kan være problemer og sammenligne prosjekter:
- en konsolidert visning som viser alle prosjekter
- et prosjektdashbord er også tilgjengelig på modul-og pakkenivå
Jaktverktøy
For å bekrefte at Det som ser ut til å være et problem egentlig er et problem, Tilbyr Sonar et jaktverktøysett som gjør det mulig å gå fra oversikt til minstedetaljer:
- drill ned på hvert mål som vises for å se hva som ligger bak
- klasser skyer for å finne mindre dekket klasser etter enhetstester
- hotspots å ha på en side mest og minst filer
- og en multi-entry (duplisering, dekning, brudd, tester suksess…) source viewer for å bekrefte funnene gjort med jakt verktøy
TimeMachine
Ingen tvil om at å vite hvor en søknad står er svært viktig. Men enda viktigere er å vite og forstå dens utvikling.Faktisk, hva er det verdt a vite at det er 20% av kodedekningen av unittests? Er det bra eller dårlig? Er svaret annerledes hvis for to måneder siden var det 15% eller 25%? TimeMachine gjør det mulig å se utviklingen og spille fortiden, spesielt ettersom den registrerer versjoner av prosjektet
Hvordan Fungerer Sonar?
Sonar er laget av en ganske enkel og fleksibel arkitektur som består av tre komponenter:
- et sett med kildekodeanalysatorer som er gruppert i En maven plugin og utløses på forespørsel. Analysatorene bruker konfigurasjon lagret i databasen. Selv Om Sonar er avhengig Av maven å kjøre analyse, er det i stand til å analysere Maven og ikke-maven prosjekter.
- en database for ikke bare å fortsette resultatene av analysen, prosjektene og global konfigurasjon, men også å holde historisk analyse For TimeMachine. 5 databasemotorer støttes for øyeblikket: Oracle, MySQL , Derby (kun demo), PostgreSQL Og MS SQLSERVER
- et webrapporteringsverktøy for å vise kodekvalitetsdashboards på prosjekter, jakte på feil, sjekke TimeMachine og konfigurere analyse.
Som en del av Sine analysatorer, Sonar core legger ut beste av rasen verktøy for å finne koding regler brudd(PMD, Checkstyle), oppdage potensielle bugs (Findbugs) og måle dekning av enhet tester (Cobertura, Clover). Men whatmakes Sonar virkelig unik Er Squid, sin egen kodeanalysator som ikke bare analyserer kildekoden, men også byte-kode og blander resultatene.
siden analysen kjøres gjennom En maven plugin, Kan Sonar startes lett i» Kontinuerlig Integrasjon » miljøer.
use case på Apache commons-collection project
en forutsetning for å kjøre Sonar er Å ha Java og Maven installert på boksen. Når dette er tilfelle, kan Du kjøre Sonar i 5 enkle trinn:
1. Last ned distribusjonen fra https://www.sonarqube.org/nedlastinger / og pakk den ut
2. Åpne en konsoll og start serveren:
> $SONAR_HOME \ bin \ windows-x86-32 \ StartSonar.bat på windows
> $SONAR_HOME/bin//sonar.sh på andre plattformer
3. Åpne en konsoll der du vil sjekke kilden og kjøre:
svn co http://svn.apache.org/viewvc/commons/proper/collections/trunk/.
4. Kjør mvn installer sonar: sonar i samme katalog
5. Browse http://localhost:9000
hjemmesiden til programmet viser listen over prosjekterunder kvalitetskontroll med noen konfigurerbare beregninger.
for å zoome inn, kan du bare klikke på prosjektet og få dashbordet
Derfra har du tilgang til en rekke jaktverktøy, blant annet:
hotspotet for å finne ut om filene som har «mest» eller «minst»…
men også, noen beregning i dashbordet er klikkbar for å hoppe tilbak scenen og få en visning av metriske av underliggende komponent
Hvert jaktverktøy bringer til slutt jegeren til kildekoden der preys er uthevet
Ekkoloddøkosystemet
Det er et veldig dynamisk økosystem Rundt Ekkolodd
- et aktivt fellesskap laget av 300+ personer på brukerens e-postliste og 150 + personer på utviklings-postlisten
- 35 + plugins på forge (http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/) som er delt inn i I fire kategorier
- Integrasjon med eksterne verktøy Som Jira, Hudson, Bamboo, GateIn, AnthillPro, Crowd
- direkte utvidelse av kjernefunksjonalitet ved å legge til ny oppførsel, beregne avanserte beregninger eller konsolidere prosjekter, legg til nye beregninger
- Legg til dekning av språk SOM PL/SQL, ActionScript3
- Integrasjon med Ide for å få feilinformasjon om koden når den er redigert
- 3000+ nedlastinger per måned
- Et Kjerneutviklingsteam Ledet Av Sonarsource (http://www.sonarsource.com)
Konklusjon
etter den massive adopsjonen av kontinuerlig integrasjon motorer Og Tester Drevet utviklingspraksis, administrerende kilde kvalitet ser ut somnaturlig neste skritt for utviklingsteam i sin innsats for industrialisering. Sonar gjør det mulig å nå dette målet med få anstrengelser og med moro.
I 2010 Skal Sonarplattformen fortsette å utvikle seg, hovedaksene for utvikling dekker nye språk og forbedrer integrasjon med Ide.