Statische code-analyse, waarbij softwareprogramma’s automatisch worden gecontroleerd zonder ze daadwerkelijk te draaien, is een belangrijke techniek om veelvoorkomende programmeerfouten op te sporen en te rapporteren. Vaak geven tools voor deze analyse echter valse alarmmeldingen. Hiervoor ontwikkelde Tukaram Muske, promovendus aan TU Eindhoven (TU/e), een oplossing.
Het verminderen van het aantal statische analysemeldingen is een belangrijke uitdaging, waaraan zowel de academische wereld als de industrie werkt. Een mogelijke oplossing is het negeren van een subset van de meldingen. Dat is echter niet ongevaarlijk, doordat je kritische fouten over het hoofd kunt zien. Muske, werkzaam bij een Indiaas r&d-lab van dienstverlener TCS, pakt het probleem van de grote aantallen meldingen daarom anders aan: hij analyseert ze nadat ze zijn gegenereerd, door middel van postprocessing.
36 procent minder alarmmeldingen
Deze technieken werken onafhankelijk van de gebruikte statische-analysetool en slagen erin om het aantal alarmmeldingen met 36 procent te verminderen. De tijd die nodig is om fout-positieven automatisch te elimineren, vermindert met 60 procent. Dit kan een belangrijke tijd- en kostenbesparing opleveren en een snellere en nauwkeurigere reactie op softwarefouten mogelijk maken.
Postprocessing vermindert het aantal meldingen dat moet worden gecontroleerd en de inspanning die nodig is om ze handmatig te inspecteren. Muske en zijn collega’s evalueerden bestaande technieken en stelden vast waar deze kunnen worden verbeterd. Vervolgens bedachten zij op basis van die evaluatie werktechnieken en evalueerden deze op verschillende industriële en open source-systemen. De nieuwe technieken waren beter in het groeperen van vergelijkbare alarmen en het automatisch elimineren van valse alarmmelding. Ze presteerden ook beter in het onderdrukken van meldingen die werden gegenereerd bij continu veranderende code.
Inspectie
Een andere verbetering is de inspectie van meldingen die worden gegenereerd op code die deel voor deel wordt geanalyseerd: de technieken identificeren of het alarm uniek is en wordt geactiveerd binnen één software-partitie, of dat het een dubbelalarm is, geactiveerd als gevolg van de onderliggende code die door verschillende partities wordt gebruikt.
De belangrijkste manier waarop Muske de bestaande technieken heeft verbeterd, was door rekening te houden met waar de tools worden gebruikt en op welk soort toepassingen ze worden gebruikt. ‘De resultaten laten een enorme verbetering zien, die nog verder kan verbeteren door zijn nieuwe technieken te combineren met bestaande’, aldus de onderzoeker.