第一篇:代碼工作年終總結(jié)
2012年組織機(jī)構(gòu)代碼工作總結(jié)
及2013年工作打算
一、2012年工作總結(jié)
(一)積極做好代碼工作
為促進(jìn)代碼技術(shù)的應(yīng)用,我們努力做好代碼證書的辦理和發(fā)放工作,并采取了如下三項措施促進(jìn)代碼的普用。一是對辦理代碼證書的單位和人員做到熱情周到的服務(wù)。二是簡化辦事程序,提供方便快捷的辦證服務(wù)。三是積極做好代碼證書的新辦、換證和年檢工作,全年新辦證794家,換證333家,年檢332家,免費(fèi)辦理微型企業(yè)324家,在規(guī)定的時間內(nèi)按時上報電子檔案數(shù)據(jù),保證電子檔案掃描工作100%完成且資料齊全,嚴(yán)格按照《貴州省組織機(jī)構(gòu)代碼檔案管理辦法》,做好原始檔案的收集、存儲、管理、切實(shí)做到紙質(zhì)檔案不缺失,保證紙質(zhì)檔案的完整性。
(二)加強(qiáng)內(nèi)部管理,提高辦證的服務(wù)質(zhì)量
對一些填表有困難的人,我們總是熱忱服務(wù),耐心指導(dǎo),或者主動幫助填表,既方便了企業(yè),也在辦證第一步把住數(shù)據(jù)質(zhì)量關(guān)。在代碼辦理中,保證重點(diǎn)項目特事特辦,隨到隨辦,立等可取。
(三)加強(qiáng)與相關(guān)部門的協(xié)調(diào)溝通,提高代碼的應(yīng)用性
與當(dāng)?shù)囟悇?wù)部門聯(lián)系和溝通,采取有效措施協(xié)助當(dāng)?shù)囟悇?wù)部門檢驗(yàn)、核實(shí)組織機(jī)構(gòu)代碼證書的真實(shí)性、有效性。
二、2013年工作打算
2013年又將是一個任務(wù)繁重年,我們會在省代碼中心及各級領(lǐng)導(dǎo)的關(guān)懷領(lǐng)導(dǎo)下,為代碼事業(yè)的持續(xù)發(fā)展更加努力的工作。
(一)拓展思路,想方設(shè)法過一步開展新辦證、換證、驗(yàn)證的各項工作,以求能完成省中心下達(dá)的指標(biāo)任務(wù)。
(二)繼續(xù)做好電子檔案的掃描錄入工作。
(三)對沉淀數(shù)據(jù)分類、分塊進(jìn)行摸底,并對這些數(shù)據(jù)進(jìn)行處理。
第二篇:銀行機(jī)構(gòu)信用代碼工作總結(jié)[推薦]
XXXX銀行關(guān)于
機(jī)構(gòu)信用代碼證推廣應(yīng)用工作情況報告
人民銀行XX支行:
根據(jù)人民銀行XX支行關(guān)于開展機(jī)構(gòu)信用代碼證推廣應(yīng)用工作的要求及相關(guān)工作安排,自2012年6月1日啟動機(jī)構(gòu)信用代碼證發(fā)放工作以來,我行積極組織,采取先易后難的方式,對比較容易接受的客戶先進(jìn)行推廣,對一時難以配合的客戶,作為重點(diǎn)開展工作對象,通過本行與其他銀行之間的交流溝通,及時吸取機(jī)構(gòu)信用代碼推廣應(yīng)用工作中好的經(jīng)驗(yàn),在人行的大力支持與幫助下,按照規(guī)定的工作目標(biāo)順利完成了機(jī)構(gòu)信用代碼證的推廣應(yīng)用工作?,F(xiàn)將我行工作匯報如下:
一、前期工作完成情況
(一)動員部署階段工作開展情況
1.加強(qiáng)組織領(lǐng)導(dǎo),提高思想認(rèn)識。本次機(jī)構(gòu)信用代碼工作由總行統(tǒng)一部署實(shí)施,成立了XX銀行行長為組長,主管行長為副組長及各相關(guān)部門負(fù)責(zé)人為成員的機(jī)構(gòu)信用代碼工作領(lǐng)導(dǎo)小組。同時各分支行也按照總行要求成立了相應(yīng)的工作領(lǐng)導(dǎo)小組。全行上下聯(lián)動,扎實(shí)工作,確保“組織保障到位、溝通反饋到位、宣傳解釋到位、信息采集到位、代碼發(fā)放到位、反洗錢應(yīng)用到位”等六個到位,做到高效推進(jìn),順利完成機(jī)構(gòu)信用代碼推廣應(yīng)用工作。
2.明確思路,落實(shí)措施。收到《中國人民銀行辦公廳關(guān)于
開展機(jī)構(gòu)信用代碼推廣應(yīng)用工作的通知》(銀發(fā)辦【2012】47號)和《中國人民銀行辦公廳關(guān)于應(yīng)用機(jī)構(gòu)信用代碼輔助開展客戶身份識別的通知》(銀辦發(fā)【2012】66號)文件后,我行與2012年4月25日召開動員會,主管行長在機(jī)構(gòu)信用代碼推廣應(yīng)用會議上特別強(qiáng)調(diào),要求貫徹落實(shí)人民銀行《關(guān)于開展機(jī)構(gòu)信用代碼推廣應(yīng)用工作的通知》精神,安排部署全行機(jī)構(gòu)信用代碼系統(tǒng)信息采集補(bǔ)充與代碼證發(fā)放工作,積極推動機(jī)構(gòu)信用代碼在反洗錢、社會信用體系等領(lǐng)域中的應(yīng)用。
3.加強(qiáng)培訓(xùn),規(guī)范操作為。嚴(yán)格執(zhí)行人行規(guī)定,準(zhǔn)確規(guī)范操作,組織業(yè)務(wù)人員進(jìn)行信用代碼系統(tǒng)應(yīng)用知識培訓(xùn),重點(diǎn)針對“機(jī)構(gòu)信用代碼系統(tǒng)信息、代碼證發(fā)放工作業(yè)務(wù)流程及機(jī)構(gòu)信用代碼反洗錢業(yè)務(wù)應(yīng)用等內(nèi)容分級分段開展業(yè)務(wù)培訓(xùn)。確保在規(guī)定時間內(nèi)完成對基本存款賬戶信息的核實(shí)、修改、補(bǔ)錄、生成代碼并進(jìn)行代碼發(fā)放工作。
4.加強(qiáng)機(jī)構(gòu)信用代碼的推廣和運(yùn)用。我行積極提升機(jī)構(gòu)信用代碼的應(yīng)用水平,各分支機(jī)構(gòu)發(fā)揮銀行柜面優(yōu)勢,扎實(shí)做好機(jī)構(gòu)信用代碼的推廣應(yīng)用和宣傳引導(dǎo)工作。并在開展反洗錢等業(yè)務(wù)中,查詢、使用機(jī)構(gòu)信用代碼系統(tǒng)信息,推動機(jī)構(gòu)信用代碼在反洗錢、征信等社會信用體系及其他領(lǐng)域的廣泛應(yīng)用。
(二)培訓(xùn)準(zhǔn)備階段工作開展情況
1.各分支機(jī)構(gòu)信用代碼推廣應(yīng)用工作的培訓(xùn)情況。我行認(rèn)真參加人民銀行關(guān)于機(jī)構(gòu)信用代碼推廣應(yīng)用培訓(xùn)后,按照要求對
我行各分支機(jī)構(gòu)相關(guān)人員2012年4月25日開展了機(jī)構(gòu)信用代碼系統(tǒng)知識及操作流程的培訓(xùn)。并要求各分支機(jī)構(gòu)對本行所有參與機(jī)構(gòu)信用代碼配發(fā)工作的業(yè)務(wù)人員、柜臺再培訓(xùn)。
2.存量賬戶的確定以及機(jī)構(gòu)信用代碼證發(fā)放情況。截止到2012年5月31日,我行將所有的有證基本戶進(jìn)行了梳理,將長期聯(lián)系不到的賬戶加注了久懸標(biāo)識工作。同時認(rèn)真梳理、確定、篩選,最終確定我行實(shí)際辦理機(jī)構(gòu)信用代碼證的基本存量賬戶共6434戶,2012年6月加注久懸標(biāo)識賬戶共737戶。2012年6月6日成功導(dǎo)入人行機(jī)構(gòu)信用代碼系統(tǒng)6431戶,手工完成了3戶代碼證的發(fā)放工作。
3.機(jī)構(gòu)信用代碼系統(tǒng)用戶開通工作情況。根據(jù)人民銀行要求,我行及時完成網(wǎng)絡(luò)配置到各營業(yè)網(wǎng)點(diǎn),對機(jī)構(gòu)信用代碼系統(tǒng)聯(lián)通情況進(jìn)行測試,確保6月1日前機(jī)構(gòu)信用代碼系統(tǒng)的正常運(yùn)行。我行共設(shè)人民銀行系統(tǒng)操作員用戶11個,各分支機(jī)構(gòu)增設(shè)普通用戶46個,并將人員名單已上報人民銀行備案。
4.完善了信用代碼推廣應(yīng)用工作方案及內(nèi)控制度建設(shè)。
二、后期工作展開情況
為貫徹落實(shí)人民銀行西寧中心支行下發(fā)的關(guān)于機(jī)構(gòu)信用代碼證推廣應(yīng)用工作,我行高度重視此項工作,積極落實(shí)文件精神,由工作領(lǐng)導(dǎo)小組專門負(fù)責(zé)此項工作。在此基礎(chǔ)上,為了有條不紊的開展機(jī)構(gòu)信用代碼系統(tǒng)信息補(bǔ)充與代碼證發(fā)放工作,我行積極開展再培訓(xùn)工作,要求全體員工配合開展此項工作。一是認(rèn)真組
織學(xué)習(xí)。通過組織基層員工學(xué)習(xí)有關(guān)文件內(nèi)容,明確操作步驟,達(dá)到領(lǐng)會精神、抓住實(shí)質(zhì)、全面籌劃的目的;二是制定合理方案。在認(rèn)真學(xué)習(xí)文件內(nèi)容的基礎(chǔ)上,結(jié)合本行實(shí)際情況,制定工作進(jìn)度計劃,明確操作步驟。為穩(wěn)步推進(jìn)工作打下堅實(shí)基礎(chǔ)。三是積極溝通借鑒。在工作的開展過程中,我行積極與人行溝通,向其他行學(xué)習(xí)好的做法,想盡辦法克服工作中的困難,確保此次工作順利開展。
從2012年6月1日起,存量賬戶和增量賬戶的發(fā)放工作進(jìn)入實(shí)施階段,為了進(jìn)一步做好實(shí)施階段的各項工作,我行工作如下:
1.認(rèn)真完成存量賬戶的發(fā)放工作,做到報多少戶完成多少戶。我行已將3000份空白《機(jī)構(gòu)信用代碼證》發(fā)放至各分支機(jī)構(gòu),要求各分支機(jī)構(gòu)爭取7月底超量完成存量賬戶6434戶的40%。要求各分支機(jī)構(gòu)務(wù)必在2012年10月底前完成存量賬戶的100%發(fā)證率。我行已將辦證任務(wù)層層分解落實(shí),擬定今后在全行范圍內(nèi)開展辦證任務(wù)完成率排行榜活動,全行將掀起“比、學(xué)、趕、幫、超”的工作氛圍。
2.自2012年6月1日起,凡到我行辦理貸款卡申領(lǐng)、企業(yè)征信信息查詢、變更等征信業(yè)務(wù)的機(jī)構(gòu),均須向我行提供信用代碼證,以輔助核實(shí)機(jī)構(gòu)身份。
3.加強(qiáng)宣傳推廣。機(jī)構(gòu)信用代碼推廣工作涉及面廣、工作量大、時間緊,我行結(jié)合自身特點(diǎn)開展多方宣傳,主要做好以下兩 4
個方面的工作:一是積極聯(lián)系客戶,對存量基本存款賬戶用電話逐一通知客戶及時來我行辦理機(jī)構(gòu)信用代碼手續(xù);二是加強(qiáng)柜面宣傳,充分發(fā)揮大堂經(jīng)理和前臺柜員的作用,在辦理業(yè)務(wù)時向客戶做好機(jī)構(gòu)信用代碼推廣宣傳工作。通過機(jī)構(gòu)信用代碼應(yīng)用服務(wù)系統(tǒng)與其他代碼建立對應(yīng)關(guān)系,實(shí)現(xiàn)機(jī)構(gòu)信用代碼的身份識別和信息共享的橋梁作用,對于健全和完善身份識別機(jī)制、推動落實(shí)金融賬戶實(shí)名制、提高金融服務(wù)水平、促進(jìn)信用信息共享和推動社會信用體系建設(shè)等具有重要意義。
4.在機(jī)構(gòu)信用代碼實(shí)施期間,我行指定專人于每周五上午下班前將《機(jī)構(gòu)信用代碼推廣應(yīng)用情況統(tǒng)計表》,每月第二個工作日前將《機(jī)構(gòu)信用代碼在反洗錢等領(lǐng)域運(yùn)用情況統(tǒng)計表》定時報送人民銀行。
5.繼續(xù)加強(qiáng)業(yè)務(wù)培訓(xùn),提高操作技能。在機(jī)構(gòu)信用代碼發(fā)放過程中,要求操作員認(rèn)真核實(shí)、錄入信用代碼信息,確保錄入信息真實(shí)、準(zhǔn)確、完整。為真正將該項工作落到實(shí)處,以機(jī)構(gòu)信用代碼證推廣應(yīng)用為主題,我行就開展機(jī)構(gòu)信用代碼工作中遇到的問題,開展了3次培訓(xùn)并及時下發(fā)通知及相關(guān)制度,并讓支行負(fù)責(zé)人一起參與學(xué)習(xí),將機(jī)構(gòu)信用代碼證工作流程層層落實(shí)到位,保證機(jī)構(gòu)信用代碼推廣應(yīng)用工作人員熟練業(yè)務(wù)流程和操作規(guī)程。并邀請人行相關(guān)人員下到一線進(jìn)行指導(dǎo),并及時解決存在的問題,提高我行相關(guān)人員的業(yè)務(wù)素質(zhì)和操作技能??傂信c人行同步多次下發(fā)細(xì)化的操作規(guī)程和定期通報及通知,加強(qiáng)此項工作的力
度,既提高了管理層面的思想認(rèn)識和重視程度,又提高了員工的操作技能,為機(jī)構(gòu)信用代碼發(fā)放工作的有序開展奠定了基礎(chǔ)。
三、我行發(fā)放機(jī)構(gòu)信用代碼證工作完成情況
截止2012年5月31日,我行共有正常的機(jī)構(gòu)存量客戶6434戶,截止2012年9月底,共配發(fā)信用代碼證6434戶。截止10月底人行系統(tǒng)中有久懸戶為1666戶,按貴部要求對其中符合要求逐一發(fā)證。
截止到10月底,全行行基本賬戶共開立8981戶,完成存量8330戶,增量完成642戶。較6月初上報人行久懸數(shù)1838差127戶,情況為:25戶激活均已發(fā)證;101戶為我行基本戶已銷及轉(zhuǎn)戶原因機(jī)構(gòu)信用代碼證未銷。
四、機(jī)構(gòu)信用代碼證應(yīng)用情況
我行主要將機(jī)構(gòu)信用代碼證用于輔助做好客戶身份識別,從而提高反洗錢工作效率,通過機(jī)構(gòu)信用代碼證及時了解客戶信息,加強(qiáng)對高風(fēng)險客戶及可以交易的甄別能力。具體措施及要求如下:
1.開立賬戶時,為不在本機(jī)構(gòu)開立賬戶的機(jī)構(gòu)客戶現(xiàn)金匯款、現(xiàn)鈔兌換等一次性金融服務(wù)切交易金額單筆人民幣1萬元以上或外幣等值1000美元以上的,要求①.核對機(jī)構(gòu)信用代碼證;②等級機(jī)構(gòu)信用代碼證;③.留存機(jī)構(gòu)信用代碼證復(fù)印件或影印件。在于客戶的業(yè)務(wù)關(guān)系存續(xù)期間,我行采取持續(xù)的客戶身份識別措施,關(guān)注客戶及其日常經(jīng)營活動,金融交易情況。及時提示客戶更新資料信息,要求①.確認(rèn)留存的機(jī)構(gòu)信用代碼信息有效;
②.及時提示客戶更新機(jī)構(gòu)信用代碼證及信用代碼系統(tǒng)中的相應(yīng)信息;③.在有效期內(nèi),未提交人民銀行分支確認(rèn)效力的,要求客戶辦理相關(guān)效力確認(rèn)手續(xù)。對機(jī)構(gòu)信用代碼證的真實(shí)性,有效性,完整性存在疑點(diǎn)的,要求重新識別客戶身份,經(jīng)采取措施仍無法排除疑點(diǎn)的,提交可疑交易報告。
2.推動在反洗錢工作中運(yùn)用機(jī)構(gòu)信用代碼。我行以客戶身份識別、客戶風(fēng)險等級劃分、異常交易分析排查三個環(huán)節(jié)為重點(diǎn),在反洗錢工作中全面運(yùn)用機(jī)構(gòu)信用代碼。具體方法包括查驗(yàn)客戶機(jī)構(gòu)信用代碼證、登錄機(jī)構(gòu)信用代碼管理系統(tǒng)比對客戶身份信息、核實(shí)實(shí)際控制人信息等,必要時留存代碼證復(fù)印件及相關(guān)查詢記錄。
3.探索在銀行機(jī)構(gòu)系統(tǒng)建設(shè)及有關(guān)業(yè)務(wù)中使用機(jī)構(gòu)信用代碼。將機(jī)構(gòu)信用代碼作為本行業(yè)務(wù)系統(tǒng)的索引碼,實(shí)現(xiàn)行內(nèi)機(jī)構(gòu)客戶信息的匹配、整合。并組織我行員工在有關(guān)日常業(yè)務(wù)中試用機(jī)構(gòu)信用代碼,如支付結(jié)算業(yè)務(wù)、大額現(xiàn)金管理業(yè)務(wù)、電子銀行業(yè)務(wù)、貸款授信業(yè)務(wù)及征信等業(yè)務(wù)。
五、今后工作打算
我行將機(jī)構(gòu)信用代碼的推廣應(yīng)用作為一項重點(diǎn)工作,加大正確解釋和引導(dǎo)力度,嚴(yán)格按照人行文件的表述口徑,通過策略的方法和靈活的方式爭取客戶的理解、支持和配合,在我行實(shí)際業(yè)務(wù)中推廣應(yīng)用。
1、繼續(xù)將機(jī)構(gòu)信用代碼證推廣應(yīng)用工作當(dāng)作我行的一項重要工作來開展。結(jié)合實(shí)際工作,認(rèn)真總結(jié)經(jīng)驗(yàn),針對存在的問題,加強(qiáng)與總行、人行及客戶的溝通。
2、機(jī)構(gòu)信用代碼證推廣應(yīng)用工作將更加注重與實(shí)際相結(jié)合。繼續(xù)引導(dǎo)柜員在辦理過程中,重視該項工作,增強(qiáng)辦理過程中出現(xiàn)問題的解決能力。碰到特殊問題及時上報,聯(lián)系解決。
3、將機(jī)構(gòu)信用代碼證廣泛應(yīng)用,由其加強(qiáng)在反洗錢中運(yùn)用機(jī)構(gòu)信用代碼,強(qiáng)化反洗錢工作力度,提高反洗錢工作效率。簡化辦理存款、匯款、貸款等業(yè)務(wù)時機(jī)構(gòu)身份的識別手續(xù),提升服務(wù)效率,降低服務(wù)成本等方面多做工作。機(jī)構(gòu)信用代碼證推廣應(yīng)用工作必須結(jié)合實(shí)際,勇于創(chuàng)新。與時俱進(jìn),開拓創(chuàng)新,是保持機(jī)構(gòu)信用代碼證推廣應(yīng)用工作持續(xù)發(fā)展的不竭動力。
第三篇:部門代碼
部門代碼
總經(jīng)理:GMD 行政人事部:AD 技術(shù)部:TD 發(fā)展部:RDD 宣傳部:PD 策劃部:SD 工程部:ED 造價部:EC 財務(wù)部:ACD 投融資部:FD 戰(zhàn)略計劃部:SPD 招標(biāo)合約部:BCD 審計部:ADD 招商部:MD 研究院:RI 物業(yè)部:PD 后勤部:LD 資源管理部:RD
第四篇:代碼檢查
代碼檢查
摘要:代碼檢查是白盒測試的一種靜態(tài)測試方法,是眾多軟件測試方法中發(fā)現(xiàn)軟件缺陷最有效的方法之一。本文結(jié)合國內(nèi)外學(xué)者在相關(guān)領(lǐng)域的研究情況,介紹代碼檢查相關(guān)的基本概念、過程和分析方法。
關(guān)鍵字:白盒測試,代碼檢查,靜態(tài)分析,檢查規(guī)則
一、引言
按照測試時源代碼是否可見,軟件測試可以分為白盒測試和黑盒測試兩類。
白盒測試(結(jié)構(gòu)測試),即邏輯驅(qū)動的測試,是在了解程序內(nèi)部結(jié)構(gòu)的基礎(chǔ)上,對程序的邏輯結(jié)構(gòu)進(jìn)行檢查,從中獲取測試數(shù)據(jù)。白盒測試關(guān)注的是測試用例執(zhí)行的程度或覆蓋程序邏輯結(jié)構(gòu)的程度。白盒測試一般只應(yīng)用于軟件開發(fā)階段。
白盒測試,又可按照是否需要運(yùn)行程序,進(jìn)一步細(xì)分為了靜態(tài)測試和動態(tài)測試兩種。通常情況下是按照先靜態(tài)后動態(tài)測試順序來實(shí)施。其中,靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等測試內(nèi)容。靜態(tài)測試既可以由人工進(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢,也可以借助軟件工具自動進(jìn)行。
代碼檢查是一種對程序代碼進(jìn)行靜態(tài)檢查。傳統(tǒng)的代碼檢查是通過人工閱讀代碼的方式,檢查軟件設(shè)計的正確性;用人腦模擬程序在計算機(jī)中的運(yùn)行,仔細(xì)推敲、校驗(yàn)和核實(shí)程序每一步的執(zhí)行結(jié)果,進(jìn)而判斷其執(zhí)行邏輯、控制模型、算法和使用參數(shù)與數(shù)據(jù)的正確性。
在實(shí)踐中,代碼檢查比動態(tài)測試更有效率,能找到更多的缺陷,通常能發(fā)現(xiàn)30%~70%的邏輯設(shè)計和編碼缺陷。代碼檢查非常耗費(fèi)時間,而且需要專業(yè)知識和經(jīng)驗(yàn)的積累。代碼檢查定位在編譯之后和動態(tài)測試之前進(jìn)行,在檢查前,應(yīng)準(zhǔn)備好需求描述文檔、程序設(shè)計文檔、程序的源代碼清單、代碼編碼標(biāo)準(zhǔn)和代碼缺陷檢查表等。
代碼檢查可以發(fā)現(xiàn)的軟件問題包括:聲明或引用錯誤、函數(shù)/方法參數(shù)錯誤、語句不可達(dá)錯誤、數(shù)組越界錯誤、控制流錯誤、界面錯誤和輸入/輸出錯誤等。
1、代碼檢查
代碼檢查包括桌面檢查、代碼走查和代碼審查等方式,主要檢查代碼和設(shè)計的一致性,代碼對標(biāo)準(zhǔn)地遵循、可讀性,代碼邏輯表達(dá)的正確性,代碼結(jié)構(gòu)的合理性等方面;發(fā)現(xiàn)違背程序編寫標(biāo)準(zhǔn)的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風(fēng)格的問題,包括變量檢查、命名和類型檢查、程序邏輯檢查、程序語法檢查和程序結(jié)構(gòu)檢查等內(nèi)容。下面對代碼檢查的三種具體方式進(jìn)行介紹。
桌面檢查
是一種傳統(tǒng)的檢查方法,由程序員檢查自己編寫的程序。程序員在程序通過編譯之后對源代碼代碼進(jìn)行分析、檢驗(yàn),并補(bǔ)充相關(guān)的文檔,目的是發(fā)現(xiàn)程序中的錯誤。
代碼走查
代碼走查就是針對代碼,在假想的輸入情況下,逐行的瀏覽代碼,走查代碼中潛在的缺陷并記錄結(jié)果的過程。
代碼走查以小組會議方式進(jìn)行,每小組3-5人。與代碼審查不同的是,走查要求與會者扮演計算機(jī)的角色讓測試用例沿被測程序的邏輯運(yùn)行,是在模擬動態(tài)測試;而代碼審查更多的是靜態(tài)測試。
代碼審查
代碼審查是由一組人通過閱讀、討論和爭議對程序進(jìn)行靜態(tài)分析的過程,以小組會的方式進(jìn)行。
審查小組一般由若干程序員(包括程序代碼的設(shè)計者)和代碼檢查人員組成。會前把設(shè)計規(guī)格說明書、控制流程圖、程序文本以及要求、規(guī)范、錯誤檢查清單交給與會者,開會時程序作者朗讀解釋程序,其他人則集中精力,捕捉程序在結(jié)構(gòu)、功能、編碼風(fēng)格等方面的問題。
2、代碼檢查項
代碼檢查項即檢查代碼時,指定需要進(jìn)行檢查的內(nèi)容。具體如:檢查變量的交叉引用表;檢查標(biāo)號的交叉引用表;檢查子程序、宏、函數(shù);等價性檢查;標(biāo)準(zhǔn)檢查;風(fēng)格檢查;選擇、激活路徑;對照程序的規(guī)格說明,詳細(xì)閱讀代碼,逐字逐句分析;補(bǔ)充文檔。
檢查項可以作為依據(jù),用來編制代碼規(guī)則、規(guī)范和缺陷檢查表等。
3、編碼規(guī)范
編碼規(guī)范是程序編寫過程中必須遵循的一套事先約定或者已經(jīng)制度化、標(biāo)準(zhǔn)化的規(guī)則集,一般會詳細(xì)的規(guī)定代碼的語法規(guī)則和語法格式。
一個良好的編碼規(guī)范能夠帶來許多好處:改善代碼質(zhì)量;提高開發(fā)進(jìn)度;增進(jìn)團(tuán)隊精神。對于軟件開發(fā)而言,采用好的編程規(guī)范,雖然不能徹底杜絕糟糕的代碼產(chǎn)生。但對于代碼檢查和將來的代碼維護(hù),仍然是意義重大的。
4、缺陷檢查表
在進(jìn)行人工代碼檢查時,使用代碼缺陷檢查表作為代碼檢查的參考依據(jù)。在軟件測試項目實(shí)踐中代碼缺陷檢查表又常被稱作代碼檢查清單。
代碼缺陷檢查表中一般包括開發(fā)人員容易出錯的地方和在以往的工作中遇到的典型錯誤。對應(yīng)于不同的編程語言,代碼缺陷檢查表的具體內(nèi)容將會有所不同。例如:對于C/C++語言代碼缺陷檢查表內(nèi)容有以下幾部分:文件結(jié)構(gòu);文件的版式;命名規(guī)則;表達(dá)式與基本語句;常量;函數(shù)設(shè)計;內(nèi)存管理;C++函數(shù)的高級特性;類的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù);類的高級特性;其他的常見問題等。
5、代碼檢查規(guī)則
在代碼檢查中,需要依據(jù)被測軟件的特點(diǎn),選用適當(dāng)?shù)臉?biāo)準(zhǔn)與規(guī)范。在使用測試軟件進(jìn)行自動化代碼檢查或輔助代碼檢查時,測試工具需要內(nèi)置許多編碼規(guī)范。不同編程語言,對應(yīng)的檢查規(guī)范有所不同。針對與C/C++語言的規(guī)則有以下幾類規(guī)則:通用規(guī)則、C++編碼規(guī)則、C編碼規(guī)則、Meyers-Klaus規(guī)則以及自定義規(guī)則。使用時,需要根據(jù)編程語言和被測程序的特點(diǎn),選擇適當(dāng)?shù)囊?guī)則進(jìn)行檢查。
6、靜態(tài)分析
靜態(tài)分析是不執(zhí)行程序,而分析程序代碼的過程。源代碼被靜態(tài)分析器分析之后,得到的靜態(tài)分析結(jié)果,通常可以表示成一棵靜態(tài)語法樹。其中包含了被測項目源代碼的靜態(tài)結(jié)構(gòu)信息:基本代碼成分、程序結(jié)構(gòu)、語句結(jié)構(gòu)、類型和模板等信息。
程序代碼靜態(tài)分析的結(jié)果能夠給代碼檢查提供幫助。
三、代碼檢查過程
傳統(tǒng)的代碼檢查是一種靜態(tài)檢查程序的測試方法,通常以團(tuán)隊的形式來進(jìn)行。檢查團(tuán)隊由程序作者,一個負(fù)責(zé)人,一個記錄員以及一些檢查員組成。首先需要一系列的準(zhǔn)備工作,包括參與者的挑選和材料的準(zhǔn)備。然后是個人準(zhǔn)備階段,每個小組成員各自熟悉材料。個人準(zhǔn)備階段后,就是實(shí)際的檢查會議。在會議上,檢查小組在假想的輸入下,由程序作者帶領(lǐng),逐行的瀏覽代碼,評審代碼中潛在的缺陷。檢查小組根據(jù)發(fā)現(xiàn)缺陷的嚴(yán)重程度和類型對其進(jìn)行分類,并將問題記錄下來供作者修正。會議后是作者的返工,作者匯報每個缺陷,最后確認(rèn)每個缺陷已經(jīng)被陳述過了。圖 11為傳統(tǒng)的代碼檢查過程。
圖 1 代碼檢查過程示意圖
代碼檢查過程中的兩個重要階段“個人準(zhǔn)備”和“召開會議”階段有以下注意事項:
1、“個人準(zhǔn)備”階段:
會前準(zhǔn)備階段是檢查過程的一個關(guān)鍵階段,因?yàn)槿绻麢z查者沒有為檢查做好充分的準(zhǔn)備,檢查效果會大打折扣。如果有檢查人員沒有做好準(zhǔn)備,主審員可取消其代碼檢查資格,甚至取消這次檢查會議。
檢查人員要熟悉檢查內(nèi)容的相關(guān)文檔,了解程序背景、設(shè)計思想和編程方法,在讀懂、“吃”透代碼的基礎(chǔ)上,查出盡可能多的錯誤。
2、“召開會議”階段:
參與會議的檢查者應(yīng)具有一定的專業(yè)技能和經(jīng)驗(yàn),缺乏經(jīng)驗(yàn)的檢查人員必然缺乏合適的領(lǐng)域知識來深入理解材料;
參與會議的檢查者應(yīng)做充分的個人準(zhǔn)備,沒有做充分準(zhǔn)備的檢查人員不能在檢查會中做出實(shí)質(zhì)性的貢獻(xiàn);
檢查會議的速度應(yīng)進(jìn)行控制,如果試圖在短時間內(nèi)處理太多的材料,檢查效果也會大打折扣?,F(xiàn)在較為常見的代碼檢查速度上的建議為:匯編代碼150行/小時,C語言150行/小時,而對于C++、Java這種面向?qū)ο笳Z言,代碼檢查速度可以提高到200-300行/小時。
由此可見,代碼檢查適合于采用工具輔助的特性有:文檔處理,個人準(zhǔn)備,會議支持,數(shù)據(jù)收集。
文檔處理
這是工具可支持的最明顯的領(lǐng)域。傳統(tǒng)的檢查要求分發(fā)每份文檔的復(fù)印件等,而將紙質(zhì)的文檔替換成計算機(jī)式的文檔,不只是簡單的介質(zhì)變更,更是提供了一種契機(jī)——提高文檔的可用性和表示性的機(jī)遇。
個人準(zhǔn)備
首先,自動的缺陷檢測可以用來發(fā)現(xiàn)簡單的缺陷。如果簡單問題能被自動發(fā)現(xiàn),檢查員就能專注于更加復(fù)雜/困難的缺陷,以及那些不能被自動發(fā)現(xiàn)的、潛在的、可能帶來更大影響的問題。另外,自動化工具應(yīng)該對個人準(zhǔn)備階段提供更多的幫助。例如,檢查員可以利用檢查表以及其它支持文檔,并能很容易地交叉引用它們;還有些代碼輔助理解工具,可為檢查員理解程序、了解程序結(jié)構(gòu)提供幫助。? 會議支持
一些成員由于某些原因,可能沒有花費(fèi)足夠的時間來進(jìn)行準(zhǔn)備,但他們?nèi)匀粎⒓訒h并試圖掩蓋他們的過失。項目管理人員可以使用計算機(jī)監(jiān)控的個人準(zhǔn)備時間信息,來剔除那些沒有做好個人準(zhǔn)備的成員,或者督促他們投入更多的努力。
召開會議時,檢查員通常面對的是一堆枯燥的程序代碼,如果在代碼之外再結(jié)合一些圖、表等便于分析、理解代碼的信息,相信檢查會議可以進(jìn)行得更加有序和高效。
數(shù)據(jù)收集
代碼檢查一個重要的部分就是度量信息的收集,用來提供反饋以改進(jìn)檢查過程。度量信息包括會議時間、發(fā)現(xiàn)的缺陷、檢查花費(fèi)的總時間等。根據(jù)這些數(shù)據(jù),可以來評價每一次代碼審查的質(zhì)量,進(jìn)而給出關(guān)于代碼審查的改進(jìn)建議。
通過對檢查過程的部分階段提供計算機(jī)支持,代碼檢查可以進(jìn)行得更加有效。使用計算機(jī)來支持檢查過程,可以提高效率,并增加檢查過程的嚴(yán)格性。
四、代碼檢查歷史數(shù)據(jù)
代碼檢查中的歷史數(shù)據(jù)本質(zhì)是軟件問題(缺陷)。按照不同的代碼檢查角度,存在多種對缺陷分類的方法。對過往發(fā)現(xiàn)的軟件問題進(jìn)行分析,總結(jié)出今后對于類似的代碼需要按照某種規(guī)則來加以檢查,這種的規(guī)則就是檢查清單上的一條清單項,代碼檢查清單就是大量規(guī)則的集合。此外,由于軟件問題總是以軟件問題報告為載體形式出現(xiàn),因此軟件問題報告也被通俗的理解為代碼檢查歷史數(shù)據(jù)。
下面對缺陷分類、代碼檢查清單和軟件問題報告加以研究。
1、缺陷分類
關(guān)于缺陷分類存在以下幾種常見的劃分方式:
1)按缺陷出現(xiàn)的區(qū)域分類
這種分類方式是最常見的缺陷分類方式。按照出現(xiàn)區(qū)域?qū)⒋a缺陷劃分為變量級、屬性級、函數(shù)/方法級和類級缺陷。其中,變量級、屬性級和部分函數(shù)/方法級的缺陷,與傳統(tǒng)的面向過程編程中的缺陷分類基本一致;而多數(shù)方法級缺陷和類級缺陷,則是針對面向?qū)ο蠹夹g(shù)編程特點(diǎn)提出的。
2)按檢測內(nèi)容分類
分為沖突、一致性問題兩種。
沖突對應(yīng)于文獻(xiàn)[1]中的基于確定性“信念”的判定,而一致性問題則對應(yīng)于基于可能性“信念”的判定。
3)按對代碼的危害分類
按照對代碼的危害,一般分為浪費(fèi)時間和空間;語義混淆;暴露封裝性,擴(kuò)大使用權(quán)限;程序一致性問題;程序約束條件問題和空指針問題等。
2、代碼檢查清單(Checklist)
代碼檢查過程中,代碼檢查人員都會有一份代碼檢查清單。代碼檢查清單是一份為代碼檢查人員準(zhǔn)備的缺陷檢查表,檢查表中開列所有可能與代碼有關(guān)的缺陷,并注明了檢查的內(nèi)容、缺陷類型以及嚴(yán)重性。檢查清單是檢查代碼的依據(jù),代碼檢查人員根據(jù)它來發(fā)現(xiàn)并判斷問題。代碼檢查清單中會逐條列出所有應(yīng)該檢查的缺陷種類,以及每條缺陷的各種特征,并且根據(jù)缺陷的嚴(yán)重程度和類型對其進(jìn)行分類。通常每一條缺陷的特征描述如下:
1)缺陷描述:該缺陷的問題描述、舉例說明,以及相應(yīng)的正確形式;
2)缺陷出現(xiàn)的區(qū)域:分別為表達(dá)式級、語句級、聲明級、模板缺陷、預(yù)處理缺陷、類級缺陷以及性能缺陷。表達(dá)式級、語句級、聲明級以及預(yù)處理的缺陷,主要面向過程程序中的缺陷;模板缺陷、類級缺陷,則是針對面向?qū)ο筌浖奶攸c(diǎn)提出的;代碼冗余等歸為性能缺陷;
3)缺陷對代碼的危害:代碼中出現(xiàn)某種缺陷將會造成什么樣的影響。
例如,檢查表中一條缺陷的特征描述如下:
問題描述:指針?biāo)竷?nèi)存釋放后沒有將指針賦為NULL。
舉例說明:
char *p=(char *)malloc(100);strcpy(p, “hello”);free(p);//p所指的內(nèi)存被釋放,但是p所指的地址還是不變 …
if(p!=NULL)//沒有起到防錯的作用 { strcpy(p, “world”);//出錯 }
正確形式:在釋放內(nèi)存的同時將指針置空。
char *p=(char *)malloc(100);strcpy(p, “hello”);free(p);p=NULL;//增加指針置空語句
…
if(p!=NULL){ strcpy(p, “world”);}
出現(xiàn)區(qū)域:語句級。
危害:指針被free釋放后其地址并不會自動發(fā)生改變(非NULL),p成為了“野”指針,這種情況下再對p進(jìn)行操作,很容易造成程序崩潰,后果非常嚴(yán)重。而代碼檢查清單正是由若干條這樣的缺陷特征描述構(gòu)成的。
3、軟件問題報告(Software Problem Report)
在軟件測試過程中,對于發(fā)現(xiàn)的每個軟件問題(缺陷),都要進(jìn)行記錄該錯誤的特征和再現(xiàn)步驟等信息,以便相關(guān)人員分析和處理軟件問題。為了管理測試發(fā)現(xiàn)的軟件問題,通常要采用軟件問題報告數(shù)據(jù)庫,將每一個發(fā)現(xiàn)的軟件問題輸入到軟件問題報告數(shù)據(jù)庫中,軟件問題報告數(shù)據(jù)庫的每一條記錄稱為一個軟件問題報告。
軟件問題報告包括頭信息、簡述、操作步驟和注釋。
頭信息包括:被測試軟件名稱、版本號、缺陷或錯誤類型、可重復(fù)性、測試平臺、平臺語言、缺陷或錯誤范圍。并要求填寫完整和準(zhǔn)確。
簡述是對缺陷或錯誤特征的簡單描述,可以使用短語或短句,要求簡練和準(zhǔn)確。
操作步驟是描述該缺陷或錯誤出現(xiàn)的操作順序,要求完整、簡潔和準(zhǔn)確。對命令、系統(tǒng)變量、選項要用大寫字母,對控件名稱等要加雙引號。
注釋一般是對缺陷或錯誤的附加描述,一般包括缺陷或錯誤現(xiàn)象的圖像,包括其他建議或注釋文字。
軟件問題報告是軟件測試過程中最重要的文檔之一。它記錄了軟件問題發(fā)生的環(huán)境,軟件問題的再現(xiàn)步驟以及性質(zhì)的說明,而且還可以跟蹤軟件問題的處理過程和狀態(tài)。軟件問題的處理進(jìn)程從一定角度反映了測試的進(jìn)程和被測軟件的質(zhì)量狀況及改善過程。
五、代碼檢查規(guī)則管理的研究
1、潛在的編碼規(guī)則和缺陷代碼模式
潛在的編碼規(guī)則(Implicit Coding Rules)和缺陷代碼模式(Bug Code Pattern)是Tomoko MATSUMURA在文獻(xiàn)[3,4]中針對代碼檢查實(shí)踐,提出的兩個相關(guān)的概念。
潛在的編碼規(guī)則
潛在的編碼規(guī)則包含以下幾個特征:
1)不同于在開發(fā)啟動時明確決定的“編碼規(guī)范”的規(guī)則,這些規(guī)則在長期的測試/維護(hù)過程中是潛伏的,對這些規(guī)則的發(fā)現(xiàn)是不可預(yù)見的。
2)這些規(guī)則很少在設(shè)計文檔或者特定的文檔中被清楚的描述。他們通常只存在于開發(fā)人員、測試/維護(hù)人員的記憶中。換言之,是一種尚未系統(tǒng)化的經(jīng)驗(yàn)積累和總結(jié)的結(jié)果。
3)不同于使用規(guī)范庫的公用規(guī)則。對于特定的軟件有其特定的規(guī)則,這也意味著對于不同的軟件有不同的潛在的編碼規(guī)則。
4)由于違反潛在的編碼規(guī)則導(dǎo)致的缺陷通常情況下不是那么容易發(fā)現(xiàn)的。其中相當(dāng)多一部分只在特定的罕見的情況下發(fā)生,所以在早期要想發(fā)現(xiàn)這些問題是很困難的。
5)目前,還不存在好的工具或者檢查清單來發(fā)現(xiàn)違反潛在的編碼規(guī)則的代碼片段,通常的檢查工具(例如PC-Lint、Purify)和通用的檢查清單只能發(fā)現(xiàn)常見的問題。
6)為了減少違反潛在的編碼規(guī)則的現(xiàn)象的發(fā)生,而進(jìn)行重構(gòu)通常很困難。要重構(gòu)一個軟件,準(zhǔn)確理解代碼是非常必要的,然而,老的系統(tǒng)太復(fù)雜,并且沒有精確的文檔和了
解系統(tǒng)的專業(yè)維護(hù)人員??傊?,重構(gòu)過期系統(tǒng)的代價很大,需要冒很大的風(fēng)險。
缺陷代碼模式:違反潛在的編碼規(guī)則的編碼模式。
缺陷代碼模式不是肯定會導(dǎo)致缺陷的發(fā)生,一段符合缺陷代碼模式的代碼片段,并不意味著代碼片段一定就有缺陷,缺陷代碼模式只是疑似存在缺陷。另一方面,因?yàn)槿毕荽a模式是靜態(tài)的,沒有考慮到代碼片段之間的動態(tài)關(guān)聯(lián)。需要代碼檢查人員或者維護(hù)人員把符合缺陷代碼模式的代碼片段提出來,并判斷究竟是否存在缺陷。
在軟件開發(fā)過程中發(fā)現(xiàn)和建立缺陷代碼模式有三條主要途徑。其一:在進(jìn)行代碼檢查過程中,代碼檢查人員發(fā)現(xiàn)一個軟件問題的同時,根據(jù)對該問題是否具備代表性和通用性等因素的考慮,確定是否建立一個缺陷代碼模式;其二:當(dāng)軟件失效或者發(fā)生問題,檢查對應(yīng)的代碼部分,發(fā)現(xiàn)并確定是否有潛在的編碼規(guī)范與之相關(guān);其三:分析現(xiàn)存的代碼規(guī)范和積累的大量問題報告,從中提煉出潛在的編碼規(guī)則。
在文獻(xiàn)[3,4]中還給我們介紹了一個代碼缺陷檢測系統(tǒng)的大致工作流程,如2所示。
圖2 缺陷檢測模型系統(tǒng)的代碼檢查流程參考圖
2、C++代碼檢查規(guī)則類型
1)規(guī)則層次
在代碼檢查工作中常常可以發(fā)現(xiàn)這樣的現(xiàn)象:有些規(guī)則能在所有的項目中都能發(fā)現(xiàn)問題,另一些規(guī)則所能發(fā)現(xiàn)的問題只存在于某類項目中。
根據(jù)規(guī)則的這個特點(diǎn),如圖 33中所示,參考文獻(xiàn)[2]中將代碼檢查規(guī)則分為兩個層次:
公共規(guī)則(General checks):用于檢查在大多數(shù)情況都有可能發(fā)生的缺陷。
項目相關(guān)規(guī)則(Project specific checks):用于在項目中檢查可能的缺陷。
圖 3 一個典型的代碼檢查規(guī)則清單節(jié)選圖
在項目中積累了大量軟件問題報告歷史數(shù)據(jù)的支持下,可以從中進(jìn)一步細(xì)化出與項目或開發(fā)人員相關(guān)的檢查規(guī)則。
在學(xué)習(xí)任何一種計算機(jī)編程語言時,總是按照基本數(shù)據(jù)類型->表達(dá)式->語句->復(fù)雜語句->函數(shù)->整個程序體(類)的順序逐步學(xué)習(xí)的。事實(shí)上軟件正是按照這樣的順序自下而上逐層組建起來的,代碼缺陷作為軟件編程寫時的一種異常情況,毫不例外也是按照這樣層次的構(gòu)建而成。在實(shí)際測試項目的代碼檢查過程中,我們發(fā)現(xiàn)在每個層次上都有可能存在潛在代碼缺陷,要找到引起軟件問題的根源,要求在盡可能低的層次上找到引發(fā)缺陷的代碼。正因如此,非常有必要在C++語法的每個層次上都建立相應(yīng)的檢查元規(guī)則。
圖4為一個代碼檢查規(guī)則體系模型圖[2],圖中展示了在代碼檢查項目開始前,通過逐級組合各種元規(guī)則和規(guī)則形成新的檢查規(guī)則,最后形成了初始的檢查清單。在項目實(shí)踐中,經(jīng)過對缺陷代碼模式的推導(dǎo),進(jìn)而得到擴(kuò)展的檢查清單。初始檢查清單和擴(kuò)展檢查清單本質(zhì)上并沒有什么區(qū)別,只是因?yàn)樾纬傻臅r間不同。
圖4 代碼檢查規(guī)則體系模型圖
在檢查代碼時我們有時會想要定義一個帶有否定意義的規(guī)則,如“在AA情況下如果沒有BB,則可能存在一個問題”。這類檢查規(guī)則采用自然語言描述比較容易,但是要用代碼實(shí)現(xiàn)起來往往并不簡單,并且對這類規(guī)則的定義和維護(hù)也比較麻煩。定義組合規(guī)則,是解決這類問題一種變通的方法。
下面簡單介紹一下定義組合規(guī)則的原理。如圖5中所示定義三個規(guī)則,“滿足情況AA”對應(yīng)規(guī)則R1,“滿足在AA情況下出現(xiàn)BB”對應(yīng)規(guī)則R2,將滿足R1但不滿足R2(即以!符號表示)組合則對應(yīng)規(guī)則R3-“在AA情況下如果沒有BB,則可能存在一個問題”。
圖5 組合規(guī)則示例圖
根據(jù)前面討論,本文將代碼檢查的規(guī)則分類設(shè)計如下:
公共規(guī)則?
定義針對函數(shù)體(含)以上層次的檢查規(guī)則,在這些層次上出現(xiàn)的缺陷問題一般不容易精確到具體的代碼行。
關(guān)鍵字規(guī)則?
針對每個關(guān)鍵字定義的檢查規(guī)則。由于關(guān)鍵字是C++語法中一種最普通的元素,單獨(dú)使用關(guān)鍵字規(guī)則的意義不大,一般情況需要和語句、表達(dá)式規(guī)則或者復(fù)雜語句規(guī)則配合使用。
語句/表達(dá)式規(guī)則?
針對基本語句類型或基本表達(dá)式定義的規(guī)則,滿足對應(yīng)結(jié)構(gòu)的表達(dá)式,則可認(rèn)為符合了相應(yīng)的表達(dá)式規(guī)則。語句/表達(dá)式規(guī)則中可以包含多個關(guān)鍵字,在同一語句/表達(dá)式規(guī)則中包含的關(guān)鍵字地位是平等的,與檢查的先后次序無關(guān)。
復(fù)雜語句塊規(guī)則?
針對條件、開關(guān)選擇等多分支語句定義的規(guī)則,通常由關(guān)鍵字、語句/表達(dá)式進(jìn)行組合來定義復(fù)雜語句塊,并在定義時可以進(jìn)行嵌套,在定義復(fù)雜語句塊規(guī)則加入語句或表達(dá)式和復(fù)雜語句時需要考慮檢查的先后次序。
高級組合規(guī)則?
關(guān)鍵字規(guī)則、語句/表達(dá)式規(guī)則和復(fù)雜語句塊規(guī)則合稱為普通規(guī)則。
對于難以使用普通規(guī)則定義方式定義的復(fù)雜語義,需要定義高級組合規(guī)則。定義高級組合規(guī)則可以使用上面幾種規(guī)則作為基本單元,也可以嵌套使用其它組合規(guī)則。
圖6為一個由下至上、由多個缺陷代碼模式組合形成的組合規(guī)則結(jié)構(gòu)圖。其中{}表示某條缺陷代碼模式對應(yīng)的規(guī)則。
圖6 組合規(guī)則結(jié)構(gòu)圖
六、代碼分析方法
1、靜態(tài)分析
靜態(tài)分析主要對源代碼進(jìn)行詞法分析、語法分析,提取被分析程序的靜態(tài)信息,所提取的靜態(tài)信息是代碼缺陷檢測的基礎(chǔ)。靜態(tài)分析結(jié)果主要包括三部分信息:
程序定義信息:程序定義信息包含了程序中所有的定義和聲明信息,如類定義、方法和數(shù)據(jù)成員的定義、方法內(nèi)局部變量的定義等。
程序結(jié)構(gòu)信息:主要指方法內(nèi)的控制流信息和方法間的調(diào)用關(guān)系。靜態(tài)分析器分析程序的語句分支、分支間的嵌套關(guān)系和方法調(diào)用,記錄方法的控制流信息和調(diào)用信息,構(gòu)造語法樹。
分支內(nèi)的變量操作:以方法控制流程中的分支為基本單元,記錄每一分支中各語句對各變量施加的操作和操作序列。
2、數(shù)據(jù)流分析
數(shù)據(jù)流分析也是一種靜態(tài)代碼檢查方法。它是在不通過計算機(jī)運(yùn)行被測程序的條件下,利用預(yù)先進(jìn)行靜態(tài)分析后獲取的信息,檢測對變量的賦值與使用操作中,是否存在不合理情況,即找出被測程序中是否存在變量在使用前未被賦值;變量在兩次賦值之間未被使用;一個變量在被賦值后是否未被使用等異常情況。
數(shù)據(jù)流分析目前的主要用途大多局限在編譯器的實(shí)現(xiàn)和優(yōu)化技術(shù)方面,而在代碼檢查系統(tǒng)中實(shí)用的數(shù)據(jù)流分析技術(shù)并不多見,主要集中在某幾種缺陷檢測上,如賦值引用異常檢測以及內(nèi)存錯誤檢測,使用方式主要是定義數(shù)據(jù)流操作的符號,使用該符號系統(tǒng)構(gòu)造數(shù)據(jù)流表達(dá)式(由數(shù)據(jù)操作符號構(gòu)成的符號串),再分析該符號串來確定是否存在代碼缺陷。
數(shù)據(jù)流分析包括以下兩個步驟:一是分析程序的所有邏輯路徑;二是對所有邏輯路徑上的所有變量,分析其所有操作序列,然后將得到的操作序列輸入自動機(jī)進(jìn)行分析。因此數(shù)據(jù)流分析方法不可避免的存在以下缺點(diǎn):
1)信息量多,上面所述的數(shù)據(jù)流分析方法是一種窮舉法。事實(shí)上一個變量在大部分路徑上存在問題的幾率并不高,因此窮舉每個變量的所有操作序列不可避免的要分析很多正確的信息,而且信息量巨大;
2)組合爆炸,當(dāng)程序復(fù)雜度增長時,該分析方法的復(fù)雜度呈幾何級數(shù)增長,并且當(dāng)這種組合是建立在對所有邏輯路徑、所有變量的窮舉基礎(chǔ)上時,如果不能找到一個非常高效的算法,數(shù)據(jù)流分析方法將是一個非常低效的方法;
3)實(shí)用性低,上述兩點(diǎn)導(dǎo)致的數(shù)據(jù)流分析的實(shí)用性降低。
為緩解這些的缺點(diǎn),數(shù)據(jù)流分析過程有許多改進(jìn)方法,但實(shí)現(xiàn)都具有一定難度。本系統(tǒng)中數(shù)據(jù)流分析不是重點(diǎn),采取的策略是盡可能簡化數(shù)據(jù)流分析的過程,或者在可能的情況下盡量避免數(shù)據(jù)流分析。
第五篇:代碼注釋格式
////////////////////////////////////////////////////////////////////////// //函數(shù)名稱: WriteFile //函數(shù)功能: 向加密鎖創(chuàng)建文件,并且向文件中寫入數(shù)據(jù),注意寫入的數(shù)據(jù)不宜過大,最好少于2k為最佳 //參數(shù)說明: fileSize: 文件的大小,以字節(jié)為單位 // fileID: 文件在加密鎖中的ID, // fileName: 文件在加密鎖中的名字 // fileContent: 文件內(nèi)容
//返 回 值: 如果寫入文件成功,則返回true,如果寫入文件失敗,則返回false.//作 者: luyao ///////////////////////////////////////////////////////////////