Precise Detection of Un-Initialized Variables in Large, Real-Life COBOL Programs in Presence of Un-Realizable Paths
Using variables before assigning any values to them are known to result in critical failures in an application. Few compilers warn about the use of some, but not all uses of un-initialized variables. The problem persists, especially in COBOL systems, due to lack of reliable program analysis tools. A critical reason is the presence of large number of control flow paths due to the use of un-structured constructs of the language. The authors present the problems faced by one of their big client in his large, COBOL based software system due to the use of un-initialized variables. Using static data and control-flow analysis to detect them, they observed large number of false positives (imprecision) introduced due to the un-realizable paths in the un-structured COBOL code.