01 前言
大家平時調(diào)試程序的時候會遇到一些異?,F(xiàn)象,花了大量的時間Debug發(fā)現(xiàn)是訪問越界,變量未初始化等寫代碼時大意造成的。如果我們嚴格遵循代碼規(guī)范,能盡可能的避免這類情況發(fā)生,實際情況往往是雖然大家都知道優(yōu)秀的代碼規(guī)范是怎樣的,但在具體寫代碼的過程中,卻執(zhí)行的差強人意,很多情況是認識上不夠重視,造成后續(xù)調(diào)試的麻煩,今天就來介紹專用的代碼檢查工具PC-LINT和PC-LINT在KEIL5中的使用。盡可能的減少此類問題。
02 PC-LINT介紹
C語言的語法擁有其它語言所沒有的靈活性,這種靈活性帶來了代碼效率的提升,但相應也使得代碼編寫具有很大的隨意性,另外C編譯器不進行 強制類型檢查,也不做任何邊界檢查,這就增加了代碼中存在隱患的可能性。如果能夠在代碼提交測試之前發(fā)現(xiàn)這些潛在的錯誤,就能夠極大地減輕測試人員的壓力,減少軟件項目的除錯成本,可是傳統(tǒng)的C編譯器對此已經(jīng)無能為力,這個任務只能由專用的代碼檢查工具完成。PC-Lint偏重 于代碼的邏輯分析一種代碼檢查工具,它能夠發(fā)現(xiàn)代碼中潛在的錯誤,比如數(shù)組訪問越界、內(nèi)存泄漏、使用未初始化變量等。
PC-Lint是GIMPEL SOFTWARE公司開發(fā)的C/C++軟件代碼靜態(tài)分析工具,它的全稱是PC-Lint/FlexeLint for C/C++,PC-Lint能夠在Windows、MS-DOS和OS/2平臺上使用,以二進制可執(zhí)行文件的形式發(fā)布,而FlexeLint 運行于其它平臺,以源代碼的形式發(fā)布。PC-lint在全球擁有廣泛的客戶群,許多大型的軟件開發(fā)組織都把PC-Lint檢查作為代碼走查的第一道工序。PC-Lint不僅能夠?qū)Τ绦蜻M行全局分析,識別沒有被適當檢驗的數(shù)組下標,報告未被初始化的變量,警告使用空指針以及冗余的代碼,還能夠有效地幫你提出 許多程序在空間利用、運行效率上的改進點。
PC-lint的代碼檢查功能
PC-Lint能夠檢查出很多語法錯誤和語法上正確的邏輯錯誤,PC-Lint為大部分錯誤消息都分配了一個錯誤號,編號小于1000的錯誤號是分配給C 語言的,編號大于1000的錯誤號則用來說明C++的錯誤消息。下表列出了PC-Lint告警消息的詳細分類。
以C語言為例,其中的編號1-199指的是一般編譯器也會產(chǎn)生的語法錯誤;編號200-299是PC-Lint程序 內(nèi)部的錯誤,這類錯誤不會出現(xiàn)在代碼中的;編號300-399指的是由于內(nèi)存限制等導致的系統(tǒng)致命錯誤。編號400-999中出現(xiàn)的提示信息,是根據(jù)隱藏 代碼問題的可能性進行分類的:其中編號400-699指的是被檢查代碼中很可能存在問題而產(chǎn)生的告警信息;編號700-899中出現(xiàn)的信息,產(chǎn)生錯誤的可 能性相比告警信息來說級別要低,但仍然可能是因為代碼問題導致的問題。編號900-999是可選信息,他們不會被默認檢查,除非你在選項中指定檢查他們。
03 Keil中如何配置pc-lint
下載安裝pc-lint,網(wǎng)上有很多資源。正常安裝即可。
配置PC-lint
keil MDK中已經(jīng)給出了pc-lint的配置文件,打開keil工程,tools--setupPC-lints。如下圖彈窗,按照如下配置
-
先選擇pc-lint執(zhí)行文件。
-
選擇keil安裝下的配置文件ARM/BIN/CO-RV.LINT。
-
選擇頭文件和庫文件的包含路徑否則編譯找不依賴,可以拷貝工程中的編譯選項配置。點擊OK退出。
配置完成打開tools可以看到如下圖選項,第一個檢查當前打開的源文件,第二個編譯所有的源文件。
編譯后輸出信息在output窗口中,如下圖。
04 END
借用網(wǎng)上一句話總結(jié):能通過pc-lint檢驗的程序不一定沒有問題,但通過了pc-lint檢驗的程序,質(zhì)量的提高也是不言而喻的。