靜態程序分析

靜態程序分析  是指在不執行程序的條件下 ， 進行程序分析的方法 。 有些程序分析需要在程序執行時才能進行 ， 這種程序分析稱爲 。 大部份的靜態程序分析的對象是針對特定版本的源代碼 ， 也有些靜態程序分析的對象是目標代碼 。 靜態程序分析一詞多半是指配合靜態程序分析工具進行的分析 ， 人工進行的分析一般稱爲程式理解或代碼審查 。 靜態程序分析的複雜程度依所使用的工具而異 ， 簡單的只考慮個別語句及聲明的行爲 ， 複雜的可以分析程序的完整源代碼 。 不同靜態程序分析技術對分析得到的資訊的用途也有所不同 ， 簡單的可以是高亮標識可能存在的代碼錯誤 （ 如lint ） ， 複雜的可以是形式化方法 ， 也就是用數學的方式證明程式的某些行爲符合其設計規約 。 軟體度量和反向工程可以視爲一種靜態程序分析的方式 。 在實務上 ， 在定義所謂的軟體品質指標 （ software quality objectives ） 後 ， 軟體度量的推導及程序分析常一起進行 ， 在開發嵌入式系統時常會用這種方式進行 。 靜態程序分析的商業用途可以用來驗證安全關鍵電腦系統中的軟體 ， 並指出可能有計算機安全隱患的程式碼 ， 這類的應用越來越多 。 例如以下的產業已確定用靜態程序分析作爲提升複雜軟體品質的方法 ： 醫療軟體 ： 美國的美國食品藥品監督管理局確定在醫療設備上使用靜態程序分析 。 核能軟體 ： 英國的建議針對的軟體進行靜態程序分析中 。 在資訊安全的領域中 ， 靜態程序分析會稱爲靜態應用程式安全檢測 （ Static Application Security Testing ， 簡稱SAST ） 。