静态分析的主要特点是:不实际执行程序;分析速度快、效率高;但误报率较高。常用的静态分析技术包括:①词法分析。从左至右一个字符一个字符的读入程序代码,对构成程序代码的字符流进行扫描,通过使用正则表达式匹配方法将程序代码转换为等价的符号流,生成相关符号列表。②语法分析。判断程序代码结构上是否正确,通过使用上下文无关语法将相关符号整理为语法树。③抽象语法树分析。将程序代码组织成树形结构,树中相关节点代表了程序中的相关代码。④语义分析。对结构上正确的程序代码进行上下文有关性质的审查。⑤控制流分析。生成有向控制流图,用节点表示基本代码块,节点间的有向边代表控制流路径,反向边表示可能存在的循环,还可生成函数调用关系图,表示函数间的嵌套关系。⑥数据流分析。对控制流图进行遍历,记录变量的初始化点和引用点,保存切片相关数据信息。⑦污点分析。基于数据流图判断程序代码中哪些变量可能受到攻击,是验证程序输入、识别代码表达缺陷的关键。⑧无效代码分析。根据控制流图可分析孤立的节点部分为无效代码。
静态分析是一个多义词,请在下列义项上选择浏览(共2个义项)