Detecting Interprocedural Infeasible Paths Based on Unsatisfiable Path Constraint Patterns

The static analysis plays an important role in many software engineering activities. However, the existence of infeasible paths, which causes lower program test coverage and several false positives in the results of the static analysis, has become one of the biggest challenges for the static analysis. In this paper, based on unsatisfiable path constraint patterns, we present a new approach to detect interprocedural infeasible paths. In our approach, we first discover nine unsatisfiable path constraint patterns by mining the common path constraint features of a large number of infeasible paths. Then, we detect the interprocedural infeasible paths; a detected path is deemed to be an interprocedural infeasible path if its simplified constraint conditions match one of the nine unsatisfiable path constraint patterns. To illustrate and verify the approach, an experimental study is performed on five open source C projects. The results show that compared with the existing approach, our approach requires less time on average and detects more interprocedural infeasible paths among the given paths.

[1]  Burkhart Wolff,et al.  A Method for Pruning Infeasible Paths via Graph Transformations and Symbolic Execution , 2016, 2016 IEEE International Conference on Software Quality, Reliability and Security (QRS).

[2]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[3]  Mario Jino,et al.  Identification of potentially infeasible program paths by monitoring the search for test data , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[4]  Hong Zhu,et al.  Software unit test coverage and adequacy , 1997, ACM Comput. Surv..

[5]  William R. Bush,et al.  A static analyzer for finding dynamic programming errors , 2000, Softw. Pract. Exp..

[6]  Allen Goldberg,et al.  Applications of feasible path analysis to program testing , 1994, ISSTA '94.

[7]  Patrick Cousot,et al.  The ASTREÉ Analyzer , 2005, ESOP.

[8]  Sun Ding,et al.  Detection of Infeasible Paths: Approaches and Challenges , 2012, ENASE.

[9]  Minh Ngoc Ngo,et al.  Detecting large number of infeasible paths through recognizing their patterns , 2007, ESEC-FSE '07.

[10]  P. D. Coward,et al.  Symbolic execution and testing , 1990 .

[11]  Rajiv Gupta,et al.  Refining data flow information using infeasible paths , 1997, ESEC '97/FSE-5.

[12]  Arnaud Gotlieb,et al.  Explanation-Based Generalization of Infeasible Path , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[13]  Gufran Ahmad Ansari Detection of Infeasible Paths in Software Testing using UML Application to Gold Vending Machine , 2017 .

[14]  D. Gong,et al.  Automatic detection of infeasible paths in software testing , 2010, IET Softw..

[15]  Hee Beng Kuan Tan,et al.  Heuristics-based infeasible path detection for dynamic test data generation , 2008, Inf. Softw. Technol..

[16]  Jiang Shujuan,et al.  Detecting Infeasible Paths Based on Branch Correlations Analysis , 2016 .

[17]  Gernot Heiser,et al.  Trickle: Automated infeasible path detection using all minimal unsatisfiable subsets , 2014, 2014 IEEE 19th Real-Time and Embedded Technology and Applications Symposium (RTAS).

[18]  Shujuan Jiang,et al.  Research Progress on Infeasible Path Detecting Problem , 2015 .

[19]  Hongyu Zhang,et al.  Detecting infeasible branches based on code patterns , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[20]  Debasish Kundu,et al.  A UML model-based approach to detect infeasible paths , 2015, J. Syst. Softw..

[21]  Bogdan Korel,et al.  Automated Software Test Data Generation , 1990, IEEE Trans. Software Eng..

[22]  Ting Chen,et al.  Efficient detection and exploitation of infeasible paths for software timing analysis , 2006, 2006 43rd ACM/IEEE Design Automation Conference.

[23]  Cheng Zhang,et al.  Detecting Infeasible Paths via Mining Branch Correlations , 2012 .

[24]  Qing Xiao,et al.  Path Sensitive Static Defect Detecting Method: Path Sensitive Static Defect Detecting Method , 2010 .

[25]  Burhan Barhoush Infeasible Paths Detection Using Static Analysis , 2013 .

[26]  Burkhart Wolff,et al.  Infeasible Paths Elimination by Symbolic Execution Techniques - Proof of Correctness and Preservation of Paths , 2016, ITP.

[27]  Hugues Cassé,et al.  Using SMT Solving for the Lookup of Infeasible Paths in Binary Programs , 2015, WCET.

[28]  Honghao Gao,et al.  Applying Probabilistic Model Checking to Financial Production Risk Evaluation and Control: A Case Study of Alibaba’s Yu’e Bao , 2018, IEEE Transactions on Computational Social Systems.

[29]  Jian Zhang,et al.  A Constraint Solver and Its Application to Path Feasibility Analysis , 2001, Int. J. Softw. Eng. Knowl. Eng..

[30]  Arnaud Gotlieb,et al.  Infeasible path generalization in dynamic symbolic execution , 2015, Inf. Softw. Technol..