Multilevel static analysis for improving program quality
- Authors: Belevantsev A.A.1,2
-
Affiliations:
- Institute for System Programming
- Moscow State University
- Issue: Vol 43, No 6 (2017)
- Pages: 321-336
- Section: Article
- URL: https://journal-vniispk.ru/0361-7688/article/view/176554
- DOI: https://doi.org/10.1134/S0361768817060044
- ID: 176554
Cite item
Abstract
In this paper, we discuss some program analysis methods for finding defects in source code that are combined to form a multilevel analysis system. The first level consists of the checks using abstract syntax tree (AST) walks and intraprocedural dataflow; this level also builds a memory model for the subsequent levels. The memory model requires evaluating integer expressions and points-to sets. The second level is an interprocedural summary-based approach whereby the program features of interest are calculated as attributes of value classes that are formed in the program. Finally, the third level is a path-sensitive analysis that builds reachability formulas for program points and tracks the predicates that should hold for the desired features to be observable. The errors are found by testing the formulas for satisfiability with an SMT solver. All these levels of analysis are implemented in the Svace analyzer toolset, which demonstrates scalability up to millions of lines of code and precision of 60–90% true positives.
About the authors
A. A. Belevantsev
Institute for System Programming; Moscow State University
Author for correspondence.
Email: abel@ispras.ru
Russian Federation, ul. Solzhenitsyna 25, Moscow, 109004; Moscow, 119991
Supplementary files
