FindBugs for statisk analyse av kode

For de fleste programmerere er det viktig å finne defektene i koden man produserer, slik at kvaliteten er høyest mulig. Man har ikke lyst til å gi ut programvare som er full av feil. Men et trist faktum er at de aller fleste programmer har defekter. Undersøkelser viser at kommersielle programmer har i snitt 20-30 bugs per tusen linjer kode.

Det er mange forskjellige typer defekter i kildekode, og noen er mindre kritiske for programkjøring enn andre, men alle feil bør finnes og fikses. Det finnes en del metodikker som kan senke feil-frekvensen. Noen eksempler på disse er Extreme Programming,Test Driven Developmen og Code Review

Disse metodikkene er fullverdige metoder for å øke kvaliteten på programvaren man produserer, og bør vurderes som en del av den totale utviklings-modellen.

Det er flere måter å finne bugs i kode. Et av disse er statisk analyse av koden. Statisk analyse er å gå gjennom koden og lete etter kjente mønster som indikerer feil, uten å kjøre koden. For Java finnes et program som heter FindBugs. Dette programmet søker gjennom byte-koden etter feil-mønster den kjenner igjen. Den kan f.eks. finne feil der man har glemt en break i en switch statement, eller indikere at noe er feil hvis den ser kode som ikke benytter retur-verdien fra en streng-operasjon. Findbugs kan også finne såkalte falske positiver, dvs at den indikerer at det er feil der det faktisk ikke er feil, men den har selvfølgelig som mål å finne færrest mulig slike.

Det som er veldig fint med Findbugs, er at den også finner kode som ikke nødvendigvis er feil, men som kan være en kjent men dårlig måte å skrive kode.

Jeg har testet FindBugs på et av mine personlige prosjekter, og den fant endel tvilsom kode og et par feil, som jeg sannsynligvis ikke hadde funnet selv før noe gale skjedde i programmet mitt. Jeg testet det også på prosjektet på jobb, og fant noen bugs som garantert hadde dukket opp senere og vært vanskelig å finne ut av. Jeg synes FindBugs er meget nyttig, og er blitt en integrert del av vektøyskassen min til utvikling. Versjon 1.1 er nettopp kommet, og bør sjekkes ut. Det kan være man blir litt flau når man ser hvilke rariteter FindBugs finner i koden, men de framtidige brukerne av programmene dine vil nok være fornøyd med resultatet.

Flere lenker:
Bloggen til forfatteren av FindBugs
Extreme Programming
Introduction to Test Driven Development (TDD)
Effective Code Reviews Without the Pain

Leave a Reply

Your email address will not be published.