您的位置:網(wǎng)站首頁 > 優(yōu)秀論文 > 正文
嵌入式Linux智能抄表終端軟件代碼審查技巧
作者:周云波、楊京燕來源:原創(chuàng)日期:2013-07-05人氣:632
隨著嵌入式硬件的飛速發(fā)展,嵌入式系統(tǒng)軟件的規(guī)模日益增大,其結構也越來越復雜。嵌入式系統(tǒng)越來越多的被應用在工業(yè)控制、信息家電、移動通信、國防等對質(zhì)量要求非常嚴格的領域[1],用于一些關鍵性的控制管理。因此,嵌入式系統(tǒng)中出現(xiàn)的問題往往會導致無可挽回、致命的錯誤,這使得對嵌入式系統(tǒng)軟件代碼的安全性,可靠性和穩(wěn)定性的要求極高,在軟件開發(fā)階段,對軟件代碼進行審查,在早期發(fā)現(xiàn)并解決問題顯得尤為重要。
嵌入式Linux系統(tǒng)的內(nèi)核是用C語言編寫,在Linux編程環(huán)境下,終端軟件應用程序的開發(fā)使用的也是C/C++語言。現(xiàn)代的C/C++編譯器都能在一定程度上發(fā)現(xiàn)代碼存在的問題和缺陷[2],并對代碼進行一定的優(yōu)化。但是,大部分的編譯器只能發(fā)現(xiàn)代碼的一些基本語法問題,平衡代碼的執(zhí)行速度和大小[3,4]。如果想要提高代碼的安全性,可靠性和穩(wěn)定性,并得到執(zhí)行快速而又小的代碼,僅僅依靠編譯器是不可能的[5]。目前,常用的代碼審查方法和問題總結有很多,但是針對嵌入式代碼的卻很少,也幾乎沒有人做過系統(tǒng)全面的研究。
長沙威勝信息技術有限公司研發(fā)的系列智能抄表終端產(chǎn)品,均采用Linux+ARM架構,并使用C/C++語言進行應用程序開發(fā)。軟件部分包括抄表模塊,規(guī)約解析模塊,數(shù)據(jù)管理模塊,菜單顯示模塊,設備監(jiān)控模塊等多個模塊,系統(tǒng)結構復雜,程序代碼量大,如果在軟件開發(fā)階段,沒有對代碼質(zhì)量嚴格把關,進行層層測試,產(chǎn)品進入現(xiàn)場后,將會暴露大量問題。實踐也已經(jīng)證明,從現(xiàn)場反饋回來的許多問題,都是由于在軟件開發(fā)階段,對代碼缺乏嚴格高效的審查所造成的。如果在軟件開發(fā)的早期,能夠對代碼進行的嚴格的審查和優(yōu)化,這些問題都可以得到避免。為此,在產(chǎn)品的前期研發(fā)階段和后期的維護階段,開發(fā)人員編寫或修改的每一條代碼都必須經(jīng)過代碼測試人員的嚴格測試,包括動態(tài)測試和靜態(tài)測試。本文根據(jù)大量工作實踐經(jīng)驗,總結了基于嵌入式Linux的終端軟件代碼的審查技巧和方法。
2、嵌入式Linux終端軟件代碼的常見問題
2.1運算符優(yōu)先級問題
運算優(yōu)先級問題是代碼中常見的問題,它不涉及到語法,編譯器無法識別程序員的真正意圖,在軟件后期維護中容易造成理解錯誤,例如:
2.2內(nèi)存泄露問題
代碼審查過程中,發(fā)現(xiàn)仍然存在很多資源回收處理的問題,主要體現(xiàn)在以下幾個方面:
2.2.1函數(shù)返回時的return問題
函數(shù)return時,需要進行資源回收處理,這里的return既包括錯誤處理分支returnfalse,也包括函數(shù)執(zhí)行完后的正常退出,資源釋放包括關閉文件指針,釋放內(nèi)存空間,關閉數(shù)據(jù)庫等等。在終端軟件程序中存在這樣的問題較多,示例參考2.2.2中的代碼:
2.2.2strdup使用問題
在使用strdup后,沒有調(diào)用free()函數(shù)釋放資源。strdup函數(shù)本身具有特殊性,在調(diào)用函數(shù)的時候,隱式的調(diào)用了malloc函數(shù)進行內(nèi)存申請。所以,strdup函數(shù)的使用也應該和free函數(shù)配對使用。這樣的函數(shù)實際中還會大量存在,我們在調(diào)用時,應該先明確函數(shù)功能描述。
嵌入式Linux系統(tǒng)的內(nèi)核是用C語言編寫,在Linux編程環(huán)境下,終端軟件應用程序的開發(fā)使用的也是C/C++語言。現(xiàn)代的C/C++編譯器都能在一定程度上發(fā)現(xiàn)代碼存在的問題和缺陷[2],并對代碼進行一定的優(yōu)化。但是,大部分的編譯器只能發(fā)現(xiàn)代碼的一些基本語法問題,平衡代碼的執(zhí)行速度和大小[3,4]。如果想要提高代碼的安全性,可靠性和穩(wěn)定性,并得到執(zhí)行快速而又小的代碼,僅僅依靠編譯器是不可能的[5]。目前,常用的代碼審查方法和問題總結有很多,但是針對嵌入式代碼的卻很少,也幾乎沒有人做過系統(tǒng)全面的研究。
長沙威勝信息技術有限公司研發(fā)的系列智能抄表終端產(chǎn)品,均采用Linux+ARM架構,并使用C/C++語言進行應用程序開發(fā)。軟件部分包括抄表模塊,規(guī)約解析模塊,數(shù)據(jù)管理模塊,菜單顯示模塊,設備監(jiān)控模塊等多個模塊,系統(tǒng)結構復雜,程序代碼量大,如果在軟件開發(fā)階段,沒有對代碼質(zhì)量嚴格把關,進行層層測試,產(chǎn)品進入現(xiàn)場后,將會暴露大量問題。實踐也已經(jīng)證明,從現(xiàn)場反饋回來的許多問題,都是由于在軟件開發(fā)階段,對代碼缺乏嚴格高效的審查所造成的。如果在軟件開發(fā)的早期,能夠對代碼進行的嚴格的審查和優(yōu)化,這些問題都可以得到避免。為此,在產(chǎn)品的前期研發(fā)階段和后期的維護階段,開發(fā)人員編寫或修改的每一條代碼都必須經(jīng)過代碼測試人員的嚴格測試,包括動態(tài)測試和靜態(tài)測試。本文根據(jù)大量工作實踐經(jīng)驗,總結了基于嵌入式Linux的終端軟件代碼的審查技巧和方法。
2、嵌入式Linux終端軟件代碼的常見問題
2.1運算符優(yōu)先級問題
運算優(yōu)先級問題是代碼中常見的問題,它不涉及到語法,編譯器無法識別程序員的真正意圖,在軟件后期維護中容易造成理解錯誤,例如:
2.2內(nèi)存泄露問題
代碼審查過程中,發(fā)現(xiàn)仍然存在很多資源回收處理的問題,主要體現(xiàn)在以下幾個方面:
2.2.1函數(shù)返回時的return問題
函數(shù)return時,需要進行資源回收處理,這里的return既包括錯誤處理分支returnfalse,也包括函數(shù)執(zhí)行完后的正常退出,資源釋放包括關閉文件指針,釋放內(nèi)存空間,關閉數(shù)據(jù)庫等等。在終端軟件程序中存在這樣的問題較多,示例參考2.2.2中的代碼:
2.2.2strdup使用問題
在使用strdup后,沒有調(diào)用free()函數(shù)釋放資源。strdup函數(shù)本身具有特殊性,在調(diào)用函數(shù)的時候,隱式的調(diào)用了malloc函數(shù)進行內(nèi)存申請。所以,strdup函數(shù)的使用也應該和free函數(shù)配對使用。這樣的函數(shù)實際中還會大量存在,我們在調(diào)用時,應該先明確函數(shù)功能描述。
欄目分類
熱門排行
推薦信息
期刊知識
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 官方認定!CSSCI南大核心首批191家“青年學者友好期刊名單”
- 2023JCR影響因子正式公布!
- 國內(nèi)核心期刊分級情況概覽及說明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學者
- 我用了一個很復雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問題”。
- 重磅!CSSCI來源期刊(2023-2024版)最新期刊目錄看點分析!全網(wǎng)首發(fā)!
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應該熟知的10個知識點。
- 注意,最新期刊論文格式標準已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學術論文編寫規(guī)則
- 盤點那些評職稱超管用的資源,1,3和5已經(jīng)“絕種”了