Geautomatiseerd bugs constateren voordat ze op je testomgeving komen. Iedere applicatie heeft bugs. Sommige meer dan anderen, want software wordt geschreven door mensen en helaas maken we soms fouten. Gelukkig is er een manier om te voorkomen dat we last krijgen van die fouten. Misschien heb je er wel eens van gehoord, static code analysis. Een static code analyzer (SCA) scant je code op fouten zonder de code uit te voeren. Maar wat doet het nou eigenlijk?


Kleine foutjes sluipen er soms in

In de meeste applicaties zitten honderden uren aan development werk. Het is makkelijk om het overzicht van alle code in een applicatie te verliezen naargelang de applicatie groeit. Daardoor maak je als ontwikkelaar makkelijk kleine foutjes. Soms vallen deze foutjes niet op, maar soms zorgt het wel voor een bug.

Een voorbeeld

Een goed voorbeeld is het berekenen van een som in JavaScript. Een computer maakt onderscheid tussen cijfers `0-9` en tekenreeksen `a-Z0-9` (eigenlijk alle tekens die je met een toetsenbord kan maken). Zoals je ziet kan een getal dus ook onderdeel zijn van een tekenreeks. Een rekenmachine kan alleen met cijfers werken. In JavaScript wordt alles in de reeks `0-9` automatisch herkend als een cijfer(reeks). Tekenreeksen zijn te herkennen aan open en sluit haakjes: `’abc’` of `”abc”`.

Als je gaat rekenen met getallen (cijferreeksen) zie je dat dat prima werkt:

>> 2 + 2
<- 4


Maar wanneer je (per ongeluk) een tekenreeks opstuurt dan klopt de uitkomst niet meer:

>> 2 + "2"
<- "22"

Fouten opsporen en oplossen

In dit voorbeeld is de fout makkelijk op te sporen en op te lossen. Wanneer deze fout zich bevindt tussen duizenden regels code met allerlei verschillende variabelen en functies, verdeeld over een veelvoud aan losse bestanden, dan kost het behoorlijk wat tijd om de fout op te sporen. Om tijd te besparen kan je natuurlijk met git bisect aan de slag gaan om je bug op te sporen.

Nog mooier zou zijn als we dit soort problemen geautomatiseerd kunnen opsporen voordat de code überhaupt op de test of acceptatieomgeving van onze klant terecht komt. Dat doen we met static code analysis!

Static Code Analysis (SCA)

Een SCA is specifiek gemaakt voor een bepaalde programmeertaal. Terwijl een developer code schrijft kan een SCA de code voortdurend analyseren op mogelijke problemen of afwijkingen van code standaarden. Je zou deze problemen achteraf in een code review kunnen vinden, maar code reviews kosten tijd en zijn niet 100% accuraat. Een SCA draait op de achtergrond, terwijl een developer aan het werk is, en ziet geen dingen over het hoofd.

Bij de meeste SCA’s kan het development team zelf aangeven aan welke ‘regels’ de applicatie moet voldoen. Dit kunnen code standaarden zijn, maar je kan ook controles uitvoeren die de veiligheid van je code controleren. Een SCA kan ook veel situaties afvangen waar we normaliter een test voor zouden moeten schrijven.

Welke SCA voor PHP of Javascript?

Voor onze PHP projecten gebruiken wij PHPStan. Dit is een open-source SCA met veel mogelijkheden en uitbreiding voor bijvoorbeeld WordPress en Laravel. Wanneer we JavaScript code schrijven gebruiken wij het liefst TypeScript. Dat is een uitbreiding op JavaScript waar een SCA ingebouwd zit. Lijkt je dat ook wel wat? Onze eigen JavaScript guru Jordy heeft hier al eerder een blog over geschreven: From zero to hero with React and TypeScript: Let's build another to-do app!

Heb je een vraag? Mail me dan gerust. Ik help je graag!

Geschreven door: Maarten Kuiper


Meer kennis bijspijkeren? Kom dan naar onze Meetup: Ode aan de Code!

Bekijk onze Meetups

Wij zijn altijd op zoek naar getalenteerde vakgenoten!

Bekijk onze vacatures