Achtergrond

Compiler vertelt weinig over programmeerfouten

Wojciech Basalaj heeft negen jaar technische ervaring in de consultancygroep en is de meest ervaren technisch adviseur van PRQA. Frank van den Beuken heeft acht jaar technische ervaring bij PRQA als technisch adviseur in de consultancygroep.

Reading time: 5 minutes

Het is goed gebruik om compilers op het hoogste waarschuwingsniveau in te stellen tijdens de ontwikkeling van software. Overtredingen van taalstandaarden, gevaarlijke constructies en hindernissen bij porten komen zo snel boven water. Toch ontdekken compilers maar een fractie van de fouten, blijkt uit een case study waarbij de meldingen van vier populaire compilers werden vergeleken met de output van een statische-codeanalysetool.

Als broncode zonder foutmeldingen of waarschuwingen compileert, wordt de software vaak als ’klaar‘ beschouwd en gaat die verder naar de tests of code-review in de verificatiefase. Compilers controleren echter alleen op de syntax van de software. Het scala van compilerwaarschuwingen is daarmee ernstig beperkt vergeleken met een statische-analyse- (SA) of coding standards enforcing-tool (CSE).

In dit artikel voeren we een case study uit waarin we een aantal populaire C++-compilers vergelijken met onze eigen tool voor statische analyse en CSE. We testen de compilers op Gnu Common C++ 2 versie 1.6.3, een bibliotheek van ongeveer 42 duizend regels code. Aangezien het om cross-platformcode gaat, is er geen voorkeur voor een bepaalde compiler en beschouwen we het als een representatieve steekproef. De bescheiden omvang maakt het mogelijk om handmatig alle compilerwaarschuwingen te controleren op nauwkeurigheid en zorgt ervoor dat hun diversiteit en aantal niet triviaal is.

This article is exclusively available to premium members of Bits&Chips. Already a premium member? Please log in. Not yet a premium member? Become one for just €20 for the first year and enjoy all the benefits.

Login

Related content