Python程序缺陷的自動(dòng)檢測(cè)與定位技術(shù)_第1頁
Python程序缺陷的自動(dòng)檢測(cè)與定位技術(shù)_第2頁
Python程序缺陷的自動(dòng)檢測(cè)與定位技術(shù)_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Python 程序缺陷的自動(dòng)檢測(cè)與定位技術(shù)隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展以及大數(shù)據(jù)時(shí)代的來臨 , 動(dòng)態(tài)編程語言受到越來越廣泛的關(guān)注。 Python 作為一種典型的動(dòng)態(tài)編程語言 , 它語法簡練、編寫靈活且有龐大的類庫支撐 , 已成為了最受歡迎和最廣泛使用的編程語言之一。與傳統(tǒng)C和 Java 等靜態(tài)語言程序一樣 ,Python 程序在正確性和可靠性保障方面也面臨著各式各樣的挑戰(zhàn)。程序分析技術(shù)是保障軟件正確性和可靠性的重要手段。早前 , 由于靜態(tài)程序語言在工業(yè)應(yīng)用中占主流地位 , 大多程序分析技術(shù)的研究主要集中于 C/C+、Java 等靜態(tài)語言上 , 針對(duì)諸如 Python 等動(dòng)態(tài)語言的分析技術(shù)卻還在初級(jí)

2、階段。 Python 中靈活的特性給程序的維護(hù)帶來了巨大的挑戰(zhàn) , 很多傳統(tǒng)分析方法已經(jīng)不適用于分析 Python 程序。為此 , 研究適用于 Python 程序的分析技術(shù)來保障 Python 程序正確性和可靠性是一項(xiàng)十分緊急且重要的工作。本文圍繞如何自動(dòng)化檢測(cè)和定位 Python 程序缺陷展開研究。首先 , 本文關(guān)注的是 Python 程序的類型推導(dǎo)和檢查問題。 類型缺陷是 Python程序中最為常見的缺陷種類之一。 類型缺陷的檢測(cè)需要精確且高效的類型推導(dǎo)技術(shù)作為基礎(chǔ)保障。目前 , 針對(duì) Python 及其他動(dòng)態(tài)類型語言已有很多類型推導(dǎo)方法 , 但是這些方法大多基于程序數(shù)據(jù)流來推導(dǎo)類型。然而

3、 ,Python 程序中存在大量外部函數(shù)調(diào)用使得分析時(shí)很難獲取完整數(shù)據(jù)流 , 導(dǎo)致現(xiàn)有推導(dǎo)方法大多準(zhǔn)確率不高且容易失敗。 為此 , 本文的第一項(xiàng)工作是研究新的類型推導(dǎo)方法來提高推導(dǎo)的準(zhǔn)確度和成功率。 接著 , 本文嘗試將問題擴(kuò)展 , 進(jìn)一步研究用于自動(dòng)化檢測(cè) Python 程序缺陷的通用技術(shù)。符號(hào)分析是解決該類問題的關(guān)鍵技術(shù)之一 , 然而已有符號(hào)分析技術(shù)大多針對(duì)靜態(tài)語言 , 不支持 Python 中的類型和屬性集動(dòng)態(tài)變化等特性 , 很難直接用于分析 Python 程序。為此 , 本文的第二項(xiàng)工作是研究一種適用于 Python 程序的符號(hào)分析方法來自動(dòng)化檢測(cè) Python 程序中的缺陷并生成相應(yīng)

4、的測(cè)試用例。 最后 , 在檢測(cè)出程序中存在缺陷基礎(chǔ)上 , 研究如何自動(dòng)化快速定位缺陷來輔助程序調(diào)試?,F(xiàn)有缺陷定位和自動(dòng)調(diào)試技術(shù)大多需要許多正確的執(zhí)行作為調(diào)試預(yù)言 , 然而這在實(shí)際調(diào)試過程經(jīng)常不能滿足。當(dāng)前 , 僅利用單個(gè)執(zhí)行的調(diào)試技術(shù)還不具備類似人類一樣的智能推理能力 , 因而時(shí)常需要很多的人工反饋來輔助缺陷定位。為此 , 本文的第三項(xiàng)工作是將類似人類智能推理和傳統(tǒng)機(jī)器推理相結(jié)合來提高定位的準(zhǔn)確性 , 從而減少調(diào)試中人工審查的次數(shù)。本文的主要工作及貢獻(xiàn)總結(jié)如下 :(1) 針對(duì) Python 類型推導(dǎo)和檢查問題 , 本文提出了一種基于概率分析的類型推導(dǎo)方法 , 該方法將程序語義和變量命名中包含的

5、類型提示統(tǒng)一表示為概率約束 , 通過概率分析進(jìn)行類型推導(dǎo) , 有效地解決了因數(shù)據(jù)流不完整而引起的類型推導(dǎo)不精確及失敗問題。為了驗(yàn)證方法有效性 , 我們實(shí)現(xiàn)了一個(gè)原型工具并用它來推導(dǎo) 18 個(gè)知名 Python 開源項(xiàng)目中的變量。實(shí)驗(yàn)結(jié)果表明, 該方法能成功推導(dǎo)出79.09%傳統(tǒng)方法推導(dǎo)不出的變量類型, 并且精度達(dá)到 82.86%。(2) 針對(duì) Python 程序缺陷檢測(cè)及測(cè)試用例生成問題 , 本文提出了一種基于符號(hào)預(yù)測(cè)分析的缺陷檢測(cè)方法 , 該方法將一個(gè)正確執(zhí)行的執(zhí)行軌跡以及其附近未執(zhí)行分支的代碼編碼成符號(hào)約束 , 利用約束求解來預(yù)測(cè)程序其他執(zhí)行狀態(tài)中隱含的缺陷并生成相應(yīng)的測(cè)試用例 , 有效地

6、解決了現(xiàn)有方法難以處理 Python 中諸多動(dòng)態(tài)特性及大量外部函數(shù)調(diào)用的問題。為了驗(yàn)證方法的有效性 , 我們實(shí)現(xiàn)了一個(gè)原型工具并用它來檢測(cè) 11 個(gè)知名 Python 開源項(xiàng)目中的缺陷。實(shí)驗(yàn)結(jié)果表明 , 該方法能從這些項(xiàng)目中檢測(cè)出 46 個(gè)缺陷 , 且其中 16 個(gè)是尚未報(bào)告的錯(cuò)誤。經(jīng)人工核實(shí) , 實(shí)驗(yàn)中所有檢測(cè)出的缺陷都是真實(shí)的。(3) 針對(duì)單個(gè)執(zhí)行的 Python 程序缺陷定位問題 , 本文提出了一種基于概率推導(dǎo)的缺陷定位方法 , 該方法利用概率約束將來自人類域知識(shí)、類似人類推理規(guī)則以及程序語義規(guī)則相結(jié)合 , 將整個(gè)程序缺陷定位過程建模為不斷的概率推導(dǎo)過程,顯著減少了基于單個(gè)執(zhí)行的缺陷定位方法所需要的人工反饋次數(shù)。為了驗(yàn)證方法的有效性 , 我們實(shí)現(xiàn)了一個(gè)原型工具并用它來輔助調(diào)試一系列實(shí)際程序中的缺陷。實(shí)驗(yàn)結(jié)果表明 , 該方法只需要平均3 到 5 次的人工審查便可精確定位導(dǎo)致缺陷的根本原因。進(jìn)一步的用戶調(diào)研也

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論