Implementation Details of Integrating Dynamic Data-Flow Coverage Analysis with Symbolic Execution
摘要
Data-flow coverage has been demonstrated to be efficient in exposing bugs in software. However, due to the complexity of the task at hand, the tooling for providing a thorough data-flow coverage analysis for the Java programming language is lacking support for a precise analysis. In this paper, we describe the integration of a dynamic data-flow coverage analysis with symbolic execution in detail. The proposed tool uses a dynamic analysis opposed to a static over-approximation to solely include reachable definition-usage chains (DUCs). The downside of this approach of not having a definite measure of the relative achieved coverage is mitigated by also employing symbolic execution. The overall tool integrates with IDEs using the Language Server Protocol to visualize and provide clear feedback on the quality and coverage of executed JUnit test cases.