静态程序分析
在沒有實際執行程式的情況下進行程式分析 / 维基百科,自由的 encyclopedia
静态程序分析(英语:Static program analysis)是指在不运行程序的条件下,进行程序分析的方法。和要在程序运行时才能进行的动态程序分析(英语:dynamic program analysis)是不同的[1]。大部分的静态程序分析的对象是针对特定版本的原始码,也有些静态程序分析的对象是目标代码。静态程序分析一词多半是指配合静态程序分析工具进行的分析,人工进行的分析一般称为程序理解或代码审查。
静态程序分析的复杂程度依所使用的工具而异,简单的只考虑个别语句及声明的行为,复杂的可以分析程序的完整原始码。不同静态程序分析技术对分析得到的资讯的用途也有所不同,简单的可以是高亮标识可能存在的代码错误(如lint),复杂的可以是形式化方法,也就是用数学的方式证明程序的某些行为符合其设计规约。
软件度量和反向工程可以视为一种静态程序分析的方式。在实务上,在定义所谓的软件质量指针(software quality objectives)后,软件度量的推导及程序分析常一起进行,在开发嵌入式系统时常会用这种方式进行。
静态程序分析的商业用途可以用来验证安全关键计算机系统中的软件,并指出可能有计算机安全隐患的代码,这类的应用越来越多。[2]例如以下的产业已确定用静态程序分析作为提升复杂软件质量的方法:
- 医疗软件:美国的美国食品药品监督管理局确定在医疗装置上使用静态程序分析[3]。
- 核能软件:英国的健康与安全委员会(英语:Health and Safety Executive)建议针对堆保护系统(英语:Reactor Protective System)的软件进行静态程序分析中[4]。
在资讯安全的领域中,静态程序分析会称为静态应用程式安全检测,简称SAST。