轉(zhuǎn)帖|使用教程|編輯:況魚杰|2020-11-16 14:53:55.890|閱讀 755 次
概述:本文介紹了PC-lint Plus的使用方法:平臺(tái)推廣方案?。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
PC-lint Plus是一種靜態(tài)分析工具,通過分析C和C ++源代碼來發(fā)現(xiàn)軟件中的缺陷。與編譯器一樣,PC-lint Plus會(huì)解析源代碼文件,執(zhí)行語義分析,并構(gòu)建一個(gè)抽象語法樹來表示程序。PC-lint Plus采用各種機(jī)制,包括數(shù)據(jù)流分析,數(shù)值跟蹤,讀寫分析,強(qiáng)類型檢查,功能語義驗(yàn)證和許多其他技術(shù),來提供對(duì)單個(gè)文件和整個(gè)項(xiàng)目強(qiáng)大而全面的分析。
本文介紹了PC-lint Plus的使用方法:平臺(tái)推廣方案。
推廣使用的前提
注:PC-lint告警級(jí)別可以通過-w選項(xiàng)進(jìn)行設(shè)置。
-wLevel:設(shè)置錯(cuò)誤信息告警級(jí)別。
-w0?No?messages?(except?for?fatal?errors)
-w1?Error?messages?only?--?no?Warnings?or?Informationals.
-w2?Error?and?Warning?messages?only
-w3?Error,?Warning?and?Informational?messages?(this?is?the?default)
-w4?All?messages.
個(gè)人的使用方案
如果每一個(gè)開發(fā)人員都使用PC-lint對(duì)各自開發(fā)、修改的代碼進(jìn)行檢查,可以按照各自目前使用的開發(fā)工具集成PC-lint的做法,這樣不僅運(yùn)行方便,而且對(duì)告警的定位和程序修改都很方便,但是要求必須使用平臺(tái)統(tǒng)一的PC-lint選項(xiàng)模板,并且只能自行增加變量和頭文件路徑信息的定義,不能隨意關(guān)閉告警信息。
子系統(tǒng)的檢查人的使用方案
采用PC-lint結(jié)合makefile的方式,在流程的檢查點(diǎn)由指定人員對(duì)平臺(tái)各個(gè)子系統(tǒng)的代碼進(jìn)行檢查,并把PC-lint的告警信息發(fā)送給相關(guān)人員進(jìn)行處理,通過檢查后才能進(jìn)入下一個(gè)流程。
特殊情況處理方法
由于各子系統(tǒng)代碼風(fēng)格或個(gè)人編程風(fēng)格的差異,可能存在統(tǒng)一選項(xiàng)文件中的某個(gè)選項(xiàng)在大部分代碼中是非常嚴(yán)重,必須排查的,而在某類代碼中是輕微的,或者雖然也嚴(yán)重但對(duì)它的修改將會(huì)涉及眾多文件的修改,這種眾多文件的修改在短期內(nèi)無法完成,對(duì)于這類特殊情況將可以通過在代碼中加pclint編譯信息,屏蔽相關(guān)選項(xiàng)的檢查。但對(duì)于這類特殊情況,需要制定流程,要求提交相關(guān)的說明。
在代碼中加入編譯信息屏蔽pclint檢查的形式根據(jù)代碼情況的不同有許多種,但對(duì)它的整理需要多人投入較長(zhǎng)時(shí)間對(duì)pclint進(jìn)行詳細(xì)了解才能獲得,此處只提供一種最簡(jiǎn)單的方法,下面以實(shí)例說明:
某段代碼中有一句語句?memset((void?*)(&(pVar->Data)),?0,?sizeof(A_Data));
被pclint檢查出warning?545,可疑的&使用,但在程序中經(jīng)過確認(rèn)這句話沒有問題,而且由于其他原因的限制不能替換為符合pclint的格式,則在此語句的前后中加入如下pclint可理解的注釋
/*lint?–e545?*/?memset((void?*)(&(pVar->Data)),?0,?sizeof(A_Data));?/*lint?+545?*/
/*lint?–e545?*/表示在以后的語句中屏蔽e545的檢查,/*lint?+545?*/表示在以后的語句中回復(fù)e545的檢查。
通過這種方式即可在局部屏蔽pclint的檢查。但程序中可能此語句非常多,對(duì)每個(gè)語句加注釋會(huì)非常麻煩,目前還沒有找到此情況下合適的方法。但對(duì)于宏,可以在宏定義中添加注釋信息,如對(duì)于下面的宏定義
#define?DIVZERO(x)??((x)?/0)
希望屏蔽e545的檢查,則在宏定義中添加注釋
#define?DIVZERO(x)?/*lint?-save?-e54?*/?((x)?/0)??/*lint?-restore?*/
本文內(nèi)容就是這樣了,希望對(duì)您有所幫助!您可以繼續(xù)關(guān)注我們慧都網(wǎng),了解更多產(chǎn)品資訊~也可以下載PC-lint Plus試用版免費(fèi)評(píng)估~
相關(guān)內(nèi)容推薦:
PC-lint Plus v1.3.5更新內(nèi)容>>>
想要購(gòu)買PC-lint Plus正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn