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.

