An Evaluation of General-Purpose Static Analysis Tools on C/C++ Test Code
Jean Malm, Eduard Paul Enoiu, Abu Naser Masud, Björn Lisper, Sigrid Eldh, Zoltan Porkolab
In Euromicro Conference Series on Software Engineering and Advanced Applications (SEAA2022)
Abstract:
In recent years, maintaining test code quality has gained more attention due to increased automation and the growing focus on issues caused during this process.Test code may become long and complex, but maintaining its quality is mostly a manual process, that may not scale in big software projects. Moreover, bugs in test code may give a false impression about the correctness or performance of the production code. Static program analysis (SPA) tools are being used to maintain the quality of software projects nowadays. However, these tools are either not used to analyse test code, or any analysis results on the test code are suppressed.This is especially true since SPA tools are not tailored to generate precise warnings on test code. This paper investigates the use of SPA on test code by employing three state-of-the-art general-purpose static analysers on a curated set of projects used in the industry and a random sample of relatively popular and large open-source C/C++ projects. We have found a number of built-in code checking modules that can detect quality issues in the test code. However, these checkers need some tailoring to obtain relevant results. We observed design choices in test frameworks that raise noisy warnings in analysers and propose a set of augmentations to the checkers or the analysis framework to obtain precise warnings from static analysers.
Full Text:
Bibtex:
@inproceedings{malm2022evaluation,
title={An Evaluation of General-Purpose Static Analysis Tools on C/C++ Test Code},
author={Malm, Jean and Enoiu, Eduard and Naser, Masud Abu and Lisper, Bj{\"o}rn and Porkol{\'a}b, Zolt{\'a}n and Eldh, Sigrid},
booktitle={2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)},
pages={133--140},
year={2022},
organization={IEEE}
}