ASI (Automated software inspection) can uncover a range of structural defects that may cause abnormal behavior or crashes and data corruption in production applications. Because of the problems such as determining array indexes, handling pointers and indeterminate loop, ASI often generates a large volume of defect-warning messages that are false positives. This false positive problem is quite severe in ASI and typically exceeds 50 false positives for each true positive. The cost and effort required to find true defects is high, because a large number of false positives must be manually evaluated and eliminated. This paper proposes how to refine the defect-warning set using the information of infeasible paths. If defect-warning message is reported on an infeasible path, then it can be excluded from consideration as true defect. Although it is impossible to solve the general problem of identifying all infeasible paths, some can be determined by detecting static branch correlation. A conditional branch has static correlation along a path if its outcome can be determined along the path from prior statements or branch outcomes at compile time. This paper uses the infeasible detection algorithm in the data flow testing to find infeasible paths and uses it to refine Defect-Warning Set. Experiments show that about 5-10% defect-warning message can be removed by the knowledge of infeasible paths.
展开▼