Skip to Main Content
Recent studies have demonstrated that language-based static analysis is capable of finding hundreds of bugs in complex real systems. Such static analysis allows users to specify properties in a specification language on demand. Paths in control flow graphs are explored exhaustively against user-defined properties. To avoid the potential path explosion problem, many techniques have been used in practice such as summaries. In this paper, we investigate how to simplify programs under check utilizing user-specified properties. From our observations, most functions under check are irrelevant to given properties. Checking those functions is time consuming. A program sifting approach is proposed to select functions related to properties. Sifters are derived from user-specified properties automatically. Functions matched or affected by sifters are safely preserved while the others are safely removed. We implemented a tool SIFT and carried out some experiments. Results show that SIFT is capable of simplifying program under check remarkably with small cost. In our experiments, 85% functions in files are sifted out while 89% analysis time is saved on average.