姜 文,劉立康
(西安電子科技大學(xué) 通信工程學(xué)院,陜西 西安 710071)
基于持續(xù)集成的PC-Lint靜態(tài)檢查
姜 文,劉立康
(西安電子科技大學(xué) 通信工程學(xué)院,陜西 西安 710071)
PC-Lint是一款歷史悠久、使用廣泛的靜態(tài)代碼檢查工具。為了保證C/C++軟件產(chǎn)品的質(zhì)量,許多軟件開發(fā)組織都把PC-Lint檢查作為代碼走查的第一道工序。PC-Lint工具提供了大量的檢查選項,需要合理地配置檢查選項,從而減少誤報,提高查錯、排錯的效率。通過四個常用類型的應(yīng)用實例,詳細(xì)敘述了PC-Lint工具在各種應(yīng)用和開發(fā)環(huán)境中l(wèi)nt文件配置方法。詳細(xì)敘述了基于持續(xù)集成PC-Lint的靜態(tài)檢查方法,以ClearCase作為軟件配置管理工具,將PC-Lint靜態(tài)檢查工具集成到持續(xù)集成工具ICP-CI上,對C/C++軟件模塊進(jìn)行靜態(tài)檢查,有助于發(fā)現(xiàn)更多的源代碼缺陷。最后介紹了PC-Lint靜態(tài)檢查的應(yīng)用案例。長期的工作實踐表明,進(jìn)行PC-Lint靜態(tài)檢查有助于及時發(fā)現(xiàn)C/C++軟件代碼的各種缺陷,從而提高軟件代碼的質(zhì)量和降低軟件開發(fā)的成本。
PC-Lint;靜態(tài)檢查;lnt配置文件;持續(xù)集成
PC-Lint[1-7]是一款歷史悠久、功能異常強勁的靜態(tài)代碼檢測工具。它的使用歷史可以追溯到計算機編程的早期(30多年以前)。經(jīng)過多年的發(fā)展,PC-Lint在全球擁有廣泛的客戶群,許多大型的軟件開發(fā)組織都把PC-Lint檢查作為代碼走查的第一道工序。PC-Lint小巧方便,使用廣泛,是一款很有價值、可以隨身攜帶的C/C++語言代碼靜態(tài)檢查工具。
PC-Lint工具提供了大量的檢查選項,合理地配置檢查選項才能提高檢查效率。文中通過四個常用類型的應(yīng)用實例,敘述了PC-Lint工具在各種應(yīng)用和開發(fā)環(huán)境中的lnt文件配置方法。介紹了基于持續(xù)集成PC-Lint靜態(tài)檢查方法以及PC-Lint靜態(tài)檢查的應(yīng)用案例。工作實踐表明,進(jìn)行PC-Lint靜態(tài)檢查有助于及時發(fā)現(xiàn)C/C++代碼的各種缺陷,從而提高軟件代碼的質(zhì)量,降低軟件開發(fā)的成本。
PC-Lint是GIMPEL SOFTWARE公司開發(fā)的C/C++軟件代碼靜態(tài)分析工具,它的全稱是PC-Lint/FlexeLint for C/C++,目前的最新版本是9.0.0L。
1.1 PC-Lint的特點
(1)PC-Lint是一種更加嚴(yán)格的編譯器,不僅可以像普通編譯器那樣檢查出一般的語法錯誤,還可以檢查出那些雖然完全合乎語法要求,但很可能是潛在的、不易發(fā)現(xiàn)的錯誤。
(2)PC-Lint可以檢測單個文件,也可以同時檢查多個文件,檢查當(dāng)前文件的同時還會檢查所有與之相關(guān)的文件。通常也用于檢查比較大的軟件模塊。
(3)支持Scott Meyers[8-9]的名著(《Effective C++》和《More Effective C++》)中描述的各種提高效率和防止錯誤的方法。
(4)PC-Lint支持幾乎所有流行的編譯器,支持大多數(shù)主流嵌入式系統(tǒng)的編譯器,擁有很多支持異類編譯器的選項。
(5)PC-Lint支持幾乎所有流行的編輯環(huán)境,比如Visual Studio、Source insight等。
(6)語言兼容性好,支持K&R C、ANSI、ANSI/ISO C++。
1.2 PC-Lint告警消息分類
PC-Lint能夠檢查出很多語法錯誤和語法上正確的邏輯錯誤,為大部分錯誤消息都分配一個錯誤編號。PC-Lint告警消息的詳細(xì)分類如表1所示。
表1 PC-Lint告警消息分類
其中,0~2級告警都不能使用-e選項進(jìn)行屏蔽,只能使用-esym,-emacro,-sem之類的選項進(jìn)行屏蔽;3級告警要根據(jù)具體情況來確認(rèn)是否使用-e選項進(jìn)行屏蔽。
1.3 PC-Lint工具的文件組成
PC-Lint工具主要由以下文件組成,如表2所示。
其中,std.lnt,options.lnt由用戶自己編寫,其他文件由PC-Lint工具提供。
1.4 PC-Lint的代碼檢查功能
PC-Lint的檢查分很多種類,有強類型檢查、變量值跟蹤、語義信息、賦值順序檢查、弱定義檢查、格式檢查、縮進(jìn)檢查、const變量檢查和volatile變量檢查等等。對于每種檢查類型,PC-Lint都有詳細(xì)的檢查選項,用以控制PC-Lint的檢查效果。
表2 PC-Lint工具的文件組成與功能介紹
PC-Lint可以發(fā)現(xiàn)C/C++源代碼的以下問題:變量聲明了但未使用、變量類型不匹配、變量在使用前未定義、不可達(dá)代碼、死循環(huán)、數(shù)組越界、內(nèi)存泄漏等代碼缺陷;能夠?qū)Τ淌竭M(jìn)行全局分析,識別沒有被適當(dāng)檢驗的數(shù)組下標(biāo),報告未被初始化的變量,警告使用空指針連同冗余的代碼。它不但能夠監(jiān)測出許多語法邏輯上的隱患,而且也能夠有效地提出許多C/C++代碼在空間利用、運行效率上的改進(jìn)點。
PC-Lint是一個命令行工具,提供了大概300多個選項,近2 000個告警,合理配置選項減少誤報之后,可以大幅提高查錯、排錯的效率。開發(fā)人員需要根據(jù)軟件模塊自身的特點和環(huán)境編寫一套lnt配置文件才能正確有效地使用PC-Lint工具。
2.1 lnt配置文件內(nèi)容和使用方法
2.1.1 編寫lnt配置文件
對于軟件模塊的PC-Lint檢查,為了使用和修改方便,通??梢跃帉懰膫€lnt配置文件,配置文件命名為*_模塊名.lnt。
(1)編譯配置文件co_模塊名.lnt。
該文件為PC-Lint檢查提供編譯環(huán)境,通常有兩種方式:
①選擇PC-Lint工具的lnt文件提供編譯環(huán)境,為了方便用戶使用,PC-Lint提供四類lnt文件供用戶選用;
②采用宏定義的方式提供編譯環(huán)境。
(2)檢查路徑配置文件include_模塊名.lnt。
該文件包括系統(tǒng)頭文件路徑、軟件模塊頭文件路徑。
(3)檢查規(guī)則配置文件options_模塊名.lnt。
該類文件內(nèi)容比較繁雜,常用的檢查規(guī)則選項主要包括如下內(nèi)容。
①檢查級別統(tǒng)一控制選項,如-w3。
②庫頭文件檢查選項,如-wlib(0)。
③告警信息條目的選擇,根據(jù)需要增刪其中的選項。
④-esym,-emacro屏蔽特定告警選項,-function,-sem增加某些檢查選項。
⑤執(zhí)行編譯時需要的輸出選項,檢查和診斷時輸出格式。
⑥其他選項:包括變量類型的缺省定義(如-si4,-sp4),定義保留字等。
在實際應(yīng)用中該文件只包含上述部分內(nèi)容,根據(jù)軟件模塊自身特點和靜態(tài)檢查的要求檢查規(guī)則選項可多可少,有時可以為空文件。
(4)頂層配置文件std_模塊名.lnt。
該文件包含前面的三個文件:co_模塊名.lnt、include_模塊名.lnt、options_模塊名.lnt。
2.1.2 PC-Lint工具的使用方法
命令行的使用方式是PC-Lint最基本的使用方式,也是其他各種集成使用方式的基礎(chǔ)。PC-Lint的命令行有下列形式:
LINT-NT option file1 [file1 file3 …]
其中,LINT-NT為PC-Lint在Windows平臺上的可執(zhí)行程序LINT-NT.exe;option為PC-Lint的配置文件;file為待檢查的源文件。
option通常為頂層配置文件std_模塊名.lnt。
2.2 lnt配置文件的應(yīng)用實例
下面介紹幾個lnt配置文件的編寫實例。由于檢查規(guī)則配置文件options_模塊名.lnt沒有固定的模式,在不同的應(yīng)用中差別很大,在實例中不做詳細(xì)介紹。頂層配置文件與2.1.1節(jié)中相同,實例中不再重復(fù)。
2.2.1 基于Visual Studio IDE的軟件模塊lnt文件配置
開發(fā)環(huán)境的操作系統(tǒng)為Windows 7,采用Visual Studio 10[10]作為C/C++語言的集成開發(fā)環(huán)境,以olt工具模塊為例敘述lnt配置文件的內(nèi)容。
(1)co_olt.lnt
au-sm123.lnt
au-ds.lnt
co-msc90.lnt
env-vc10.lnt
lib-atl.lnt lib-mfc.lnt
lib-stl.lnt lib-w32.lnt
(2)include.olt.lnt
//系統(tǒng)頭文件路徑
-IC:Program FilesMicrosoft Visual Studio 10.0VCinclude
-IC:Program FilesMicrosoft Visual Studio 10.0VCatlmfcinclude
-IC:Program FilesMicrosoft SDKsWindowsv7.0AInclude
//軟件模塊頭文件路徑
-ID:Code_ViewOlt_Tool
(3)options_olt.lnt
olt模塊檢查規(guī)則選項,該文件可以為空文件。
可以采用命令行方式進(jìn)行靜態(tài)檢查,也可以把PC-Lint工具集成到Visual Studio 10上檢查代碼。
2.2.2 基于Linux操作系統(tǒng)的軟件模塊lnt文件配置
編程環(huán)境的操作系統(tǒng)的版本是64位Suse Linux 11.3,開發(fā)工具是GNU Tools,使用GCC作為C代碼的編譯器,在Windows操作系統(tǒng)下進(jìn)行軟件模塊PC-Lint靜態(tài)檢查。在Windows下用PC-Lint去分析Linux C/C++代碼是可以的,需要把Linux系統(tǒng)[11]中/usr/下的一系列文件直接COPY到Windows系統(tǒng)中,包括系統(tǒng)定義的頭(.h)文件和軟件模塊自己定義的頭(.h)文件,從而保證可以正常使用GCC作為C/C++代碼的編譯器。以lop模塊為例敘述lnt配置文件的內(nèi)容。在實例中采用宏定義的方式提供編譯環(huán)境,也可以采用PC-Lint工具的lnt文件方式提供編譯環(huán)境。
(1)co_lop.lnt
/*采用宏定義的方式提供編譯環(huán)境,包括硬件、操作系統(tǒng)、編譯器等內(nèi)容*/
-DVOS_DISPATCHING_MODE=3
-DPFM_SYSTIME
-DGCC_VERSION
-D_GNU_SOURCE
-DVOS_HARDWRAE_PLATFORM=0
-DVOS_CPU_TYPE=0
-DVOS_OS_VER=4
-DLITTLE_ENDIAN
-D_CNUP_SUSELINUX
-D_CN_BYTE_ORDER=_CN_LITTLE_ENDIAN
-DVOS_BYTE_ORDER=VOS_LITTLE_ENDIAN
-DDEV_HOST_BYTE_ORDER=VOS_LITTLE_ENDIAN
-DDEV_NET_BYTE_ORDER=VOS_LITTLE_ENDIAN
-DVOD_FILE_SYSTEM_PROC
-DCAP_EFFECTIVE=0XF362F42E
-DCAP_PERMITED=0XF362F42E
(2)include_lop.ln
//系統(tǒng)頭文件路徑
-ID:INCWIN32
-ID:INCLINUX
-ID:INCLINUXlinux
//軟件模塊頭文件路徑
-I%PROJECT_PATH%hostlop
-I%PROJECT_PATH%public
2.2.3 基于VxWorks操作系統(tǒng)的軟件模塊lnt文件配置
VxWorks[12-13]是實時嵌入式操作系統(tǒng)軟件,Tornado是開發(fā)VxWorks應(yīng)用系統(tǒng)的集成開發(fā)環(huán)境。Tornado IDE采用C/C++語言編程,支持GNU C/C++編譯器和Diab C/C++編譯器??梢栽赪indows操作系統(tǒng)下進(jìn)行軟件模塊PC-Lint靜態(tài)檢查。以sk模塊為例敘述lnt配置文件的內(nèi)容。在實例中采用PC-Lint工具的lnt文件方式提供編譯環(huán)境,也可以采用宏定義的方式提供編譯環(huán)境。
(1)co.sk.lnt
au-sm.lnt au-ds.lnt
co.lnt //通用編譯器
//co-gnu3.lnt
lib_at1.lntlib_corb.lnt lib-stl.lnt
lib_w32.lnt lib_wnt.lnt
(2)include.sk.lnt
//系統(tǒng)頭文件路徑
-I CTornado argeth // VxWorks頭文件
-I CTornadohostdiabincludecpp // iostreams 類庫頭文件
-I CTornadohostx86-win32i386-pc-mingw32sys-Include
//軟件模塊頭文件路徑
-I %CODE_ROOT%SK
-I %CODE_ROOT%software
(3)options_sk.lnt
//sk模塊檢查規(guī)則選項,該文件可以為空文件。
可以把PC-Lint工具集成到Source Insight編輯器(在編譯配置文件中加入env_si.lnt)上進(jìn)行靜態(tài)檢查。許多大公司都在VC++環(huán)境中實現(xiàn)了仿真VxWorks接口的代碼(VxWorks任務(wù)用Windows線程來仿真),可以在VC++環(huán)境中編寫和調(diào)試代碼,適當(dāng)調(diào)整編譯配置文件co.sk.lnt,也可以把PC-Lint工具集成到VC編輯器上進(jìn)行靜態(tài)檢查。
2.2.4 軟件產(chǎn)品的lnt文件配置
通常軟件產(chǎn)品中包含的模塊比較多,軟件項目組首先編寫一個各模塊共用的lnt配置文件,該文件不允許軟件模塊開發(fā)人員修改,該文件內(nèi)容包括編譯環(huán)境的定義和檢查規(guī)則選項。其他的lnt配置文件由開發(fā)人員根據(jù)模塊自身的特點和環(huán)境自主編寫。
文中采用的軟件配置管理工具是ClearCase,持續(xù)集成工具是ICP-CI。通過自動化構(gòu)建持續(xù)提供代碼靜態(tài)檢查結(jié)果。
3.1 PC-Lint靜態(tài)檢查系統(tǒng)模型
持續(xù)集成[14]工具可以提供方便的集成平臺,可以設(shè)置定時任務(wù),使PC-Lint檢查任務(wù)能夠充分利用非工作時間完成比較耗時的靜態(tài)檢查過程,保證及時得到分析結(jié)果,方便開發(fā)人員根據(jù)檢查結(jié)果報告修改軟件代碼缺陷。圖1顯示了一個基本的靜態(tài)檢查系統(tǒng)視圖。
圖1 靜態(tài)檢查系統(tǒng)視圖
構(gòu)建流程如下:
(1)研發(fā)人員編寫軟件代碼,對自己編寫的軟件代碼進(jìn)行PC-Lint靜態(tài)檢查。
(2)研發(fā)人員向軟件配置管理(SCM)系統(tǒng)的版本庫提交驗證通過的源代碼。
(3)持續(xù)集成工程師編寫*.lnt配置文件、批處理文件、Makefile文件和ant腳本。
(4)持續(xù)集成工程師在持續(xù)集成工具的任務(wù)管理頁面上配置軟件模塊靜態(tài)檢查任務(wù)。
(5)持續(xù)集成工程師設(shè)定任務(wù)時間(通常是非工作時間),自動執(zhí)行PC-Lint檢查任務(wù)。
(6)持續(xù)集成工具通過電子郵件向軟件產(chǎn)品經(jīng)理和研發(fā)人員及時反饋靜態(tài)檢查結(jié)果。
(7)研發(fā)人員處理存在的各種問題。
基于持續(xù)集成的PC-Lint靜態(tài)檢查是對軟件模塊進(jìn)行靜態(tài)檢查,通常一個軟件模塊包含幾十個甚至上百個C語言源碼文件。對模塊進(jìn)行靜態(tài)檢查有助于發(fā)現(xiàn)更多的源代碼缺陷。
通常PC-Lint工具位于主控服務(wù)器與代理服務(wù)器的plugin目錄下。持續(xù)集成工程師完成軟件產(chǎn)品的*.lnt文件的配置之后,再搭建構(gòu)建工程。構(gòu)建工程命名為:“產(chǎn)品名_版本號_Pclint”。
3.2 ClearCase版本庫的代碼更新
持續(xù)集成工具ICP-CI需要在版本庫鎖庫之后完成源代碼更新,然后進(jìn)行PC-Lint檢查。ICP-CI工具執(zhí)行代碼更新時,需要編寫代碼更新的批處理腳本code_update.bat,把代碼更新的腳本配置在任務(wù)中。更新代碼的批處理腳本內(nèi)容如下:
VIEWPATH=D:ClearCaseLOPCode_View
Cleartool update-force-overwrtite-log “ccview.log” %VIEWPATH%
3.3 ICP-CI的任務(wù)管理頁面上配置PC-Lint檢查任務(wù)
在ICP-CI的任務(wù)管理頁面上配置PC-Lint檢查任務(wù),通常由持續(xù)集成工程師來完成。配置時以模塊為單位完成,以軟件產(chǎn)品模塊lop為例來描述集成過程。配置lop模塊的PC-Lint任務(wù)時,在任務(wù)欄上選擇“PC-Lint”任務(wù)。具體配置如表3所示。
表3 lop模塊在ICP-CI頁面上配置PC-Lint檢查
配置各模塊PC-Lint檢查任務(wù)的workingdir的參數(shù)值時,可以在ICP-CI構(gòu)建工程的“參數(shù)管理”頁面添加“CODE_PATH”參數(shù),并賦值為:D:CODE_PATH。
配置各模塊PC-Lint檢查任務(wù)的lnt參數(shù)值時,${dir.plugins}是ICP-CI工具默認(rèn)的各種檢查工具放置路徑。對于單機式系統(tǒng),該路徑為ICP_CI_Windows_Masterplugins;對于主控式系統(tǒng),該路徑為ICP_CI_Windows_Agentplugins。
配置各模塊PC-Lint檢查的代碼路徑ID的參數(shù)值時,需要在ICP_CI_Windows_MastermasterusrDatagourp工程名aseconfig.xml文件中完成如下配置:
完成以上配置后,在ICP-CI的PC-Lint任務(wù)配置頁面上,對“sourcesPathRefID”進(jìn)行配置時就可以選擇新增的ID值“pclint.path.id.lop”。
配置各模塊PC-Lint檢查使用分布式部署時,需要將runDistribute的取值設(shè)置為true之后,再安裝IncrediBuild工具來提升PC-Lint檢查的速度。
3.4 PC-Lint靜態(tài)檢查任務(wù)執(zhí)行過程
ICP-CI頁面上配置PC-Lint任務(wù)后,會在ICP_CI_Windows_MastermasterusrDatagourp工程名下生成pclint任務(wù)的相關(guān)文件。ICP-CI工具運行pclint任務(wù)時,運行過程如下:
(1)根據(jù)在ICP-CI頁面上選擇的“配置任務(wù)類型”自動引入以下2個文件:
(2)根據(jù)在basecomfig.xml文件中配置的sourcesPathRefID參數(shù),對執(zhí)行PC-Lint檢查的模塊代碼路徑進(jìn)行檢查。
(3)確定進(jìn)行檢查的代碼路徑之后,執(zhí)行pclintmacropclint.xml,調(diào)用pclint oolLINT-NT.exe對模塊進(jìn)行PC-Lint檢查。
執(zhí)行腳本代碼如下所示:
3.5 檢查結(jié)果的處理
將所有模塊的PC-Lint任務(wù)都配置完畢之后,啟動執(zhí)行ICP-CI頁面執(zhí)行構(gòu)建工程,工程執(zhí)行完畢之后,ICP-CI工具的頁面上可以看到所有模塊執(zhí)行PC-Lint工具的檢查結(jié)果。同時PC-Lint對所有模塊的檢查結(jié)果通過在ICP-CI構(gòu)建工程上配置的郵件主送人和抄送人,以郵件形式發(fā)送。主送人通常是模塊的開發(fā)工程師和持續(xù)集成工程師,抄送人是產(chǎn)品經(jīng)理與各開發(fā)組組長,郵件的發(fā)送人是ICP-CI工具。
某公司有一個軟、硬件結(jié)合的中型開發(fā)項目,總的代碼量為二百萬行。Linux環(huán)境下采用C/C++進(jìn)行軟件開發(fā);采用的軟件配置管理工具為ClearCase,版本為7.0.1;持續(xù)集成工具為ICP-CI;PC-Lint工具版本為8.0.0w。集成到ICP-CI工具后,完成對軟件所有模塊的PC-Lint檢查。其中,lop模塊和ls模塊靜態(tài)檢查的掃描結(jié)果如表4所示。
表4 lop模塊和ls模塊進(jìn)行PC-Lint檢查的掃描結(jié)果
File表示檢查出Error、Warning以及Information所有錯誤和告警的文件數(shù),如果被檢查的代碼中沒有任何Error、Warning以及Information錯誤和告警,則File對應(yīng)的數(shù)值應(yīng)該是零。
Error表示模塊檢查出來的Error級別告警數(shù)量;Warning表示模塊檢查出來的Warning級別告警數(shù)量;Information表示模塊檢查出來的Information級別告警數(shù)量。
PC-Lint檢查報告中詳細(xì)列舉了告警類型、種類與編號,模塊的開發(fā)工程師查看檢查報告后,對檢查出告警的模塊源代碼進(jìn)行修改與優(yōu)化。經(jīng)過對模塊的代碼修改以及優(yōu)化之后,再進(jìn)行PC-Lint檢查,錯誤和告警數(shù)目清零,從而改進(jìn)模塊的源代碼質(zhì)量。
工作實踐表明,PC-Lint檢查有助于及時發(fā)現(xiàn)并解決C/C++源代碼的各種缺陷,也便于產(chǎn)品主管了解工作進(jìn)度和解決存在的問題,進(jìn)一步提高軟件代碼質(zhì)量。
PC-Lint在代碼走讀和單元測試之前進(jìn)行檢查,可以提前發(fā)現(xiàn)程序隱藏錯誤,提高代碼質(zhì)量,節(jié)省測試時間。使用PC-Lint的編碼規(guī)則檢查,可以有效地規(guī)范軟件人員的編碼行為。長期的工作實踐表明,PC-Lint檢查在C/C++程序開發(fā)過程中發(fā)揮了重要作用。PC-Lint工具集成到持續(xù)集成工具ICP-CI,可以自動完成PC-Lint檢查,快速地向軟件開發(fā)人員反饋檢查結(jié)果,使軟件開發(fā)人員能夠及時修復(fù)源代碼的缺陷。軟件開發(fā)過程中PC-Lint檢查工作做好了,有助于提高產(chǎn)品質(zhì)量,降低軟件開發(fā)成本。
[1] Reference manual for PC-Lint/FlexeLint(Software Version 8.00 and Later Document Version 8.00)[R].[s.l.]:Gimpel Software,2001.
[2] Reference manual for PC-Lint/FlexeLint(Software Version 9.00 and Later Document Version 9.00)[R].[s.l.]:Gimpel Software,2008.
[3] Gimpel J.Software that checks software:the impact of PC-Lint[J].IEEE Software,2014,31(1):15-19.
[4] Version 9.00 patches and support files[EB/OL].2015.http://www.gimpel.com/html/ptch90.htm.
[5] 黃賢君.基于INFINEON ULC2/ULC3平臺的PC-LINT新方案的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2012.
[6] 周偉明.軟件測試實踐[M].北京:電子工業(yè)出版社,2008.
[7] 蔡建平.軟件測試實驗指導(dǎo)教程[M].北京:清華大學(xué)出版社,2009.
[8] Meyers S.More effective C++[M].Reading MA:Addison-Wesley,1996.
[9] Meyers S.Effective C++[M].3rd ed.Reading MA:Addison-Wesley,2005.
[10] 白 喬,左 飛.把脈VC++[M].北京:電子工業(yè)出版社,2009.
[11] 楊樹青,王 歡.Linux環(huán)境下C編程指南[M].北京:清華大學(xué)出版社,2007.
[12] River W.VxWorks程序員指南[M].北京:清華大學(xué)出版社,2003.
[13] 陳智育,溫彥軍,陳 琪.VxWorks程序開發(fā)實踐[M].北京:人民郵電出版社,2004.
[14] 羅時飛.敏捷持續(xù)集成(CruiseControl版):高效硏發(fā)之道[M].北京:電子工業(yè)出版社,2008.
PC-Lint Static Checking Based on Continuous Integration
JIANG Wen,LIU Li-kang
(School of Telecommunication Engineering,Xidian University,Xi’an 710071,China)
PC-Lint is a static checking tool which has long history and wide application.In order to guarantee the quality of the code of C/C++,many software development organizations choose the inspection of PC-Lint as the first process during the code review.Plenty of inspectional options are provided by PC-Lint tool,and the inspectional options need to be deployed reasonablely,thus reducing the misinformation,increasing the efficiency of debugging and misarrangement.Through four common types of application examples,it describes method of configuration of lnt files in all kinds of application and development of environment in detail,and discusses the approach to static checking of PC-Lint based on continuous integration.Using ClearCase as the software configuration management tool,the static checking tool PC-Lint is integrated into the continuous integration tool ICP-CI,which contributes to find more source code defects by doing static checking for the C/C++ modules.At last,application case for PC-Lint static checking is introduced.Practice of long time shows that the PC-Lint static checking has conducted to discover all kinds of defects of the code in C/C++ timely,to improve software quality and reduce the cost of software development.
PC-Lint;static checking;lnt configuration file;continuous integration
2016-01-29
2016-05-18
時間:2016-10-24
國家部委基礎(chǔ)科研計劃:國防預(yù)研基金項目(A1120110007)
姜 文(1986-),女,工程師,碩士研究生,CCF會員,研究方向為圖像處理與分析、數(shù)據(jù)庫應(yīng)用和軟件工程;劉立康,副教授,研究方向為數(shù)字通信、圖像傳輸與處理、圖像分析與識別等。
http://www.cnki.net/kcms/detail/61.1450.TP.20161024.1117.078.html
TP311.56
A
1673-629X(2016)11-0031-06
10.3969/j.issn.1673-629X.2016.11.007