① 生成各种引用表
直接从表中查出说明/使用错误等。如,循环层次表、变量交叉引用表、标号交叉引用表等。
为用户提供辅助信息。如,子程序(宏、函数)引用表、等价(变量、标号)表、常数表等。
用来做错误预测和程序复杂度计算。如,操作符和操作数的统计表等。
② 静态错误分析
静态错误分析主要用于确定在源程序中是否有某类错误或“危险”结构。
类型和单位分析:为了强化对源程序中数据类型的检查,发现在数据类型上的错误和单位上的不一致性,在程序设计语言中扩充了一些结构。如单位分析要求使用一种预处理器,它能够通过使用一般的组合/消去规则,确定表达式的单位。
引用分析:最广泛使用的静态错误分析方法就是发现引用异常。如果沿着程序的控制路径,变量在赋值以前被引用,或变量在赋值以后未被引用,这时就发生了引用异常。为了检测引用异常,需要检查通过程序的每一条路径。也可以建立引用异常的探测工具。
表达式分析:对表达式进行分析,以发现和纠正在表达式中出现的错误。包括:在表达式中不正确地使用了括号造成错误。数组下标越界造成错误。除式为零造成错误。对负数开平方,或对π求正切值造成错误。以及对浮点数计算的误差进行检查。
接口分析:关于接口的静态错误分析主要检查过程、函数过程之间接口的一致性。因此要检查形参与实参在类型、数量、维数、顺序、使用上的一致性;检查全局变量和公共数据区在使用上的一致性。