Programmeren met argusogen

Tekst: Gerben Bloemendal

Het is de droom van elke programmeur foutloze code te leveren. Met argusogen kijken naar geproduceerde code zit dan ook in het systeem van elke ontwikkelaar. Het ideaal van de programmeur komt nu een stap dichterbij met Argus Codewatch.

Argus Codewatch is een alziend en waakzaam hulpmiddel, gelijk de reus uit de Griekse mythologie die honderd ogen bezat. Het ontdekt op een intelligente manier incorrecte code en doet suggesties voor verbeteringen.

Argus Codewatch is afgelopen zomer tijdens een unieke Summer Internship bij TOPdesk door een aantal student-programmeurs ontwikkeld. Argus Codewatch is een plug-in voor Eclipse, de Java-ontwikkelomgeving waarin onder andere de TOPdesk ApplicationServer geprogrammeerd wordt. We spraken met een aantal Argus-betrokkenen over dit unieke project.

Roel Spilker gaf als senior software ontwikkelaar leiding aan het project ‘Argus Codewatch’. Hij legt uit waarom de plug-in ontwikkeld is: “Elke programmeur krijgt te maken met bugs. En elke programmeur vraagt zich af hoe deze bugs in een vroeger stadium voorkomen kunnen worden. Het achteraf corrigeren van deze fouten is vaak complex en tijdrovend. Eigenlijk zou je niet pas tijdens het testen er achter willen komen dat bepaalde broncode niet correct is, maar al tijdens het schrijven ervan. Dit was de reden om Argus Codewatch te ontwikkelen. En een ‘Summer Internship’ bleek hiervoor de perfecte manier.”

Arno Schuring en Bart Buil waren twee van de studenten die deelnamen aan het project ‘Argus Codewatch’. Wat houdt deze plug-in eigenlijk in? Arno heeft, samen met de student Joppe Kroon, de infrastructuur ontwikkeld voor Argus Codewatch. Hij legt uit: “Deze ‘static analyzer’ gaat verder dan de al aanwezige foutcontrole; standaard worden in Eclipse bijvoorbeeld alleen type- en syntaxfouten gedetecteerd. Argus Codewatch doet veel meer: het analyseert de broncode op een dieper niveau en geeft suggesties voor verbeteringen.“ Bart vult aan: “Argus Codewatch detecteert slechte programmeerstijlen en gevaarlijke constructies; bepaalde patronen worden door Argus herkend.” Arno: “Het gaat hierbij om het verschil tussen goede code en correcte code. Goed is bijvoorbeeld: 5432l, maar correct is: 5432L omdat de letter ‘l’ verward zou kunnen worden met het cijfer ‘1’.”

“Met Argus Codewatch kun je deze afspraken over correcte codes afdwingen. Bovendien is de plug-in uitbreidbaar; je kunt zelf nieuwe ‘fouten’ toevoegen. Door meer checks en fixes toe te voegen wordt Argus Codewatch een steeds beter instrument,” aldus Bart. Arno vertelt: “Vanaf het begin van het ontwikkelen was het doel dat er nieuwe controles toegevoegd moesten kunnen worden. We hebben als test eerst twee basiscontroles ingevoerd.” Bart: “We hebben Argus Codewatch losgelaten op de broncode van de TOPdesk-ApplicationServer. En inderdaad hebben we daar een aantal potentiële incorrecte constructies ontdekt.”

Bart heeft zich uitgebreid bezig gehouden met de integratie van de plug-in in de Eclipse-ontwikkelomgeving: “Er is geen verschil te zien tussen de standaard foutopsporingen van Eclipse en die van Argus Codewatch. De plug-in is naadloos geïntegreerd met de bestaande manier van werken in Eclipse. De programmeur krijgt direct feedback tijdens het programmeren. Dus niet achteraf via een logfile of nachtelijke ‘build’. Ook de instellingen van Argus Codewatch werken op dezelfde wijze als die van Eclipse.”

Is de plug-in een succes? Bart: “Intern wordt de plug-in nu volop gebruikt voor de ontwikkeling van TOPdesk. Het stimuleert om goede broncode te genereren. Het streven naar correcte code is veel inzichtelijker geworden.” Arno: “Tijdens het ontwikkelen van Argus Codewatch hebben we contact met de mensen van Eclipse gehad. In de nieuwe Eclipse-versie zal mede daardoor een aantal Argus Codewatch gerelateerde zaken opgenomen worden. Bovendien zijn er nog genoeg zaken toe te voegen aan de plug-in. De discussie gaat ook door over welke controles wel of niet in Argus Codewatch opgenomen zouden kunnen worden.”

Roel heeft als projectleider de plug-in buiten de organisatie gebracht: “Vanaf het begin was het de bedoeling om Argus Codewatch te publiceren buiten onze organisatie. Omdat de plug-in uitbreidbaar is, is de plug-in toegankelijk voor iedereen. In december hebben we de plug-in gepresenteerd op de beurs. Daar kwamen heel veel enthousiaste reacties op. We hopen dat door het publiceren van de plug-in anderen aansluiten bij het verder ontwikkelen ervan. Bij TOPdesk maken we zelf ook gebruik van open source-middelen en het was daarom een logische stap Argus Codewatch te doneren aan de open source-gemeenschap. Uiteindelijk moet het leiden tot een beter programmeerinstrument voor elke software-ontwikkelaar. Een team mensen van TOPdesk komt maandelijks bij elkaar om de plug-in verder te verbeteren.”

Voor Arno was het Argus Codewatch-project een unieke vakantiebaan. Voor Bart heeft het zomerstageproject inmiddels geleid tot een vaste baan bij TOPdesk: “Het is niet normaal dat je zo’n leuk vakantiebaantje krijgt. En helemaal leuk is dat ik er nu in de praktijk mee mag werken.” Arno besluit: “Bij TOPdesk zijn ze gek op leuk!” (GB)

Meer informatie over Argus Codewatch is te vinden op de website arguscodewatch.sourceforge.net.

Leave a comment