面向類型推導的Python類型標注分析
發(fā)布時間:2021-10-08 22:36
作為動態(tài)語言的代表之一,Python因其代碼簡潔、開發(fā)迅速、擁有豐富的第三方庫,在工業(yè)界大受歡迎。然而,由于缺少靜態(tài)類型信息,許多軟件工程活動(如程序理解、軟件調試、靜態(tài)缺陷檢測等)無法有效地在Python程序中開展。為此,Python社區(qū)提出了靜態(tài)類型標注提案,即允許開發(fā)者以標注形式表明程序實體的類型。類型標注不強制規(guī)定Python程序實體的類型,不作為代碼的一部分被解釋執(zhí)行。類型標注可以被類型推導等其他分析方法和工具解析利用,進而提高分析精度。然而,類型標注能夠在多大程度上幫助類型推導,以及在有限時間和資源條件下開發(fā)者該如何進行類型標注,尚未有相關工作展開研究。本文研究面向類型推導的Python類型標注,從類型標注的有效性分析和類型標注點推薦兩個方面展開。主要工作包括:·對現有類型推導引擎進行了擴展,設計實現了一個支持類型標注的類型推導工具。該工具既支持開源標注集TypeShed作為外部標注的直接集成,也支持項目本身的內部標注。在集成了類型標注后,該工具可以有效地改善原有的類型推導結果。并借助一個開源類型標注集TypeShed,對外部類型標注在改善類型推導結果方面的有效性進行了實驗...
【文章來源】:南京大學江蘇省 211工程院校 985工程院校 教育部直屬院校
【文章頁數】:70 頁
【學位級別】:碩士
【部分圖文】:
圖3-1:系統(tǒng)框架圖??
對戶斤選取的11個Python項目進行實驗分析,對比僅使用PySonar2和基于?f??TypeShed類型標注輔助兩種類型推導過程的結果。如圖3-5以柱狀圖的形式給?f??出了實驗結果,柱狀圖表示能夠推導出類型信息的程序實體數量,該敎量包含??了新增的類型信息和改善的類型推導信息。由圖可以看出,在所有項目上,基??于TypeShed類型標注的推導結果都更好(柱狀圖更高),即能為更多_程序實??體推導出類型信息。??表3-2給出了更加詳細的實驗結果。在該表中,第二列為僅PySonar2能推??導出類型信息的程序實體數,第三列為添加類型標注后能推導出類型信息的??程序實體數量,第四和第五列分別為新增類型信息的程序實體數量和改善了類??型推導信息的程序實體數量,最后一列為類型信息改變的程序實體總數。其??中
到此算法是否可以被用于交互式使用場景中。其次,評估方法給出的排序結??果,考察是否標注越靠前的變對類型推導結果的増益越大。最后,評估標注??數丨it對類型推導結果的影響,探究最高效率地進行類型標注。圖4-4給出了本??章實驗的框架圖。仍然使用第三章采用的Python項目作為實驗對象,但去掉了??zulip項目,因為在實驗過程中發(fā)現,zulip帶有較多無法處理的Python版本特??性,如print語句等。因此,本章使用10個Python開源項目作為實驗對象。??4.4研究問題??類型標注可以增加類型推導引擎可獲取到的類型信息,對某一個變V〔進行??標注,其效果不僅僅限制在這個被標注變量或者程序節(jié)點上,而且會通過數據??流的傳遞影響其他變量或者程序節(jié)點。本章通過數據流分析,量化這些變量之??間的依賴關系,提出了一種類型標注推薦方法TARank,從而得到變量的標注??價值排名。為了驗證該方法的效率和有效性
【參考文獻】:
期刊論文
[1]A study on the changes of dynamic feature code when fixing bugs: towards the benefits and costs of Python dynamic features[J]. Zhifei CHEN,Wanwangying MA,Wei LIN,Lin CHEN,Yanhui LI,Baowen XU. Science China(Information Sciences). 2018(01)
[2]TPython:一種擴充的Python語言[J]. 余超,周天琳,周曉宇,陳林,徐寶文. 計算機與數字工程. 2009(05)
碩士論文
[1]Python動態(tài)特性對軟件維護的影響研究[D]. 王蓓蓓.南京大學 2016
本文編號:3425100
【文章來源】:南京大學江蘇省 211工程院校 985工程院校 教育部直屬院校
【文章頁數】:70 頁
【學位級別】:碩士
【部分圖文】:
圖3-1:系統(tǒng)框架圖??
對戶斤選取的11個Python項目進行實驗分析,對比僅使用PySonar2和基于?f??TypeShed類型標注輔助兩種類型推導過程的結果。如圖3-5以柱狀圖的形式給?f??出了實驗結果,柱狀圖表示能夠推導出類型信息的程序實體數量,該敎量包含??了新增的類型信息和改善的類型推導信息。由圖可以看出,在所有項目上,基??于TypeShed類型標注的推導結果都更好(柱狀圖更高),即能為更多_程序實??體推導出類型信息。??表3-2給出了更加詳細的實驗結果。在該表中,第二列為僅PySonar2能推??導出類型信息的程序實體數,第三列為添加類型標注后能推導出類型信息的??程序實體數量,第四和第五列分別為新增類型信息的程序實體數量和改善了類??型推導信息的程序實體數量,最后一列為類型信息改變的程序實體總數。其??中
到此算法是否可以被用于交互式使用場景中。其次,評估方法給出的排序結??果,考察是否標注越靠前的變對類型推導結果的増益越大。最后,評估標注??數丨it對類型推導結果的影響,探究最高效率地進行類型標注。圖4-4給出了本??章實驗的框架圖。仍然使用第三章采用的Python項目作為實驗對象,但去掉了??zulip項目,因為在實驗過程中發(fā)現,zulip帶有較多無法處理的Python版本特??性,如print語句等。因此,本章使用10個Python開源項目作為實驗對象。??4.4研究問題??類型標注可以增加類型推導引擎可獲取到的類型信息,對某一個變V〔進行??標注,其效果不僅僅限制在這個被標注變量或者程序節(jié)點上,而且會通過數據??流的傳遞影響其他變量或者程序節(jié)點。本章通過數據流分析,量化這些變量之??間的依賴關系,提出了一種類型標注推薦方法TARank,從而得到變量的標注??價值排名。為了驗證該方法的效率和有效性
【參考文獻】:
期刊論文
[1]A study on the changes of dynamic feature code when fixing bugs: towards the benefits and costs of Python dynamic features[J]. Zhifei CHEN,Wanwangying MA,Wei LIN,Lin CHEN,Yanhui LI,Baowen XU. Science China(Information Sciences). 2018(01)
[2]TPython:一種擴充的Python語言[J]. 余超,周天琳,周曉宇,陳林,徐寶文. 計算機與數字工程. 2009(05)
碩士論文
[1]Python動態(tài)特性對軟件維護的影響研究[D]. 王蓓蓓.南京大學 2016
本文編號:3425100
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3425100.html