語句分裂變更模式的識(shí)別
發(fā)布時(shí)間:2021-10-17 13:29
現(xiàn)代軟件的開發(fā)和維護(hù)大多都是基于版本控制系統(tǒng)進(jìn)行的,這很大程度提高了多名開發(fā)人員協(xié)作開發(fā)軟件的工作效率,但想要達(dá)到最好的協(xié)作開發(fā)效果,就要求每一位參與軟件開發(fā)及維護(hù)的人員都要很好的理解軟件各版本的代碼變更,但是多種代碼變更模式的相互摻雜使得對(duì)于這些代碼變更的理解變得十分困難,為了解決這一問題,研究人員開始對(duì)常見的代碼變更模式進(jìn)行研究,例如對(duì)重構(gòu)和缺陷修復(fù)等典型代碼變更模式的研究已形成較為成熟完善的理論體系,并通過將這些研究成果運(yùn)用于代碼變更模式的自動(dòng)識(shí)別,實(shí)現(xiàn)了這些變更模式的定位及相互分離,從而幫助開發(fā)人員高效的閱讀和理解代碼變更。語句分裂變更模式是一種常見的將一條代碼語句分裂改寫成多條語句的代碼變更模式,該模式一般是將原有代碼語句中較為復(fù)雜的表達(dá)式賦值給新變量之后,再用此變量替換原句中的這一表達(dá)式,該模式類似于代碼重構(gòu)模式中的替換算法,不同的是替換算法是一種函數(shù)體層面的重構(gòu)手法,而語句分裂變更模式則是一種應(yīng)用更為廣泛的代碼語句層面的代碼變更模式,除此之外在分裂變更的過程中也會(huì)經(jīng)常在不同的部分增加新的內(nèi)容,這使得語句分裂變更模式呈現(xiàn)出多種不同的形式,原有語句的功能也很可能會(huì)因此發(fā)生變化...
【文章來源】:齊魯工業(yè)大學(xué)山東省
【文章頁數(shù)】:80 頁
【學(xué)位級(jí)別】:碩士
【部分圖文】:
語句分裂變更模式的研究方案
齊魯工業(yè)大學(xué)碩士學(xué)位論文17圖3.2MySql數(shù)據(jù)庫中的源數(shù)據(jù)集在獲取了上述源數(shù)據(jù)集后,接下來就要對(duì)其進(jìn)行人工篩選,找出包含語句分裂變更模式的變更信息,作為語句分裂變更模式的變更數(shù)據(jù)集,為此本文利用git項(xiàng)目客戶端管理工具SourceTree2對(duì)源數(shù)據(jù)集進(jìn)行人工篩選,首先將源數(shù)據(jù)集克隆到該工具中,如圖3.3所示克隆后源數(shù)據(jù)集中的各種相關(guān)信息就會(huì)通過該工具的可視化界面被完整而清晰的展示出來,界面的上方是每次更改提交的標(biāo)簽、時(shí)間、作者以及提交號(hào),左下方是本次提交的更改中涉及到的源文件名,右下方則是展示對(duì)每個(gè)源文件的更改具體內(nèi)容。圖3.3SourceTree可視化變更信息展示圖3.3中右下方的變更內(nèi)容展示是通過文本差異化分析工具實(shí)現(xiàn)的,文本差異分析工具將更改前后的源文件視為字符串,通過計(jì)算公共子序列來判別發(fā)生變動(dòng)的文本,并將這些文本信息以及對(duì)應(yīng)的行號(hào)以代碼變更塊(hunk)為2SourceTree:https://www.sourcetreeapp.com/
齊魯工業(yè)大學(xué)碩士學(xué)位論文19表3.1四個(gè)源數(shù)據(jù)集的人工篩選結(jié)果項(xiàng)目名稱抽取時(shí)間段提交次數(shù)文件個(gè)數(shù)語句分裂變更模式代碼塊個(gè)數(shù)JEditmavenguiceEclipse1998/09/27~2012/08/082003/09/02-2014/01/292006/08/23-2013/12/122001/06/23~2013/10/166275884510041912314163051117273461016521315經(jīng)過對(duì)4個(gè)開源項(xiàng)目源數(shù)據(jù)集的人工篩選,從中獲取到了包含語句分裂變更模式的代碼變更塊hunk的數(shù)據(jù)集,并且以表格的形式記錄下了每個(gè)hunk的提交號(hào)和文件名,最后再將該表格存入數(shù)據(jù)庫中如圖3.5所示,每個(gè)項(xiàng)目的篩選情況如下:JEdit項(xiàng)目中包含了對(duì)1416個(gè)項(xiàng)目文件的6275次更改,從中獲取到101個(gè)語句分裂變更模式的代碼變更塊;maven項(xiàng)目中包含了對(duì)3051個(gè)項(xiàng)目文件的8845次更改,從中獲取到65個(gè)語句分裂變更模式的代碼變更塊;guice項(xiàng)目中包含了對(duì)1172個(gè)項(xiàng)目文件的1004次更改,從中獲取到21個(gè)語句分裂變更模式的代碼變更塊;Eclipse項(xiàng)目中包含了對(duì)7346個(gè)項(xiàng)目文件的19123次更改,從中獲取到315個(gè)語句分裂變更模式的代碼變更塊。圖3.5人工篩選數(shù)據(jù)集的數(shù)據(jù)庫表3.3語句分裂變更模式兩種形式的定義基于對(duì)上述人工篩選出的語句分裂變更模式hunk數(shù)據(jù)集文本特征的分析,發(fā)現(xiàn)該模式存在兩種基本形式,本文將這兩種形式分別命名為拆分形式和替換形式,對(duì)于這兩種形式的研究是以文本差異分析工具輸出的代碼變更塊(hunk)為單位的,所以首先要對(duì)hunk進(jìn)行定義。定義1:代碼變更塊hunk可以用四元組h=<L-,L+,R-,R+>的形式來表示,其中的元素L-和L+分別代表刪除行和增加行的文本內(nèi)容,元素R-和R+分別代表刪除行和增加行的行號(hào)范圍。
【參考文獻(xiàn)】:
期刊論文
[1]代碼壞味對(duì)軟件演化影響的實(shí)證研究[J]. 章曉芳,朱燦. 軟件學(xué)報(bào). 2019(05)
[2]基于版本的多重軟件重構(gòu)自動(dòng)檢測(cè)技術(shù)研究[J]. 鐘林輝,黃小明,薛良波,葉海濤. 江西師范大學(xué)學(xué)報(bào)(自然科學(xué)版). 2018(05)
[3]代碼審查在軟件工程實(shí)施中的重要性[J]. 井濤. 電子技術(shù)與軟件工程. 2017(21)
[4]基于鄰域三支決策粗糙集模型的軟件缺陷預(yù)測(cè)方法[J]. 李偉湋,郭鴻昌. 數(shù)據(jù)采集與處理. 2017(01)
[5]基于雙重維度發(fā)現(xiàn)代碼變更模式的挖掘方法[J]. 左翔宇,劉婧,何璐璐. 計(jì)算機(jī)應(yīng)用研究. 2017(08)
[6]面向設(shè)計(jì)的開源軟件項(xiàng)目重構(gòu)經(jīng)驗(yàn)研究[J]. 阮航,陳恒,彭鑫,趙文耘. 計(jì)算機(jī)科學(xué)與探索. 2017(09)
[7]基于JavaCC的抽象語法樹的構(gòu)建與實(shí)現(xiàn)[J]. 黃松,黃玉,惠戰(zhàn)偉. 計(jì)算機(jī)工程與設(shè)計(jì). 2016(04)
[8]故障注入的軟件代碼缺陷模式[J]. 賀仁亞,唐龍利. 指揮信息系統(tǒng)與技術(shù). 2015(06)
[9]大規(guī)模軟件系統(tǒng)日志研究綜述[J]. 廖湘科,李?yuàn)檴?董威,賈周陽,劉曉東,周書林. 軟件學(xué)報(bào). 2016(08)
[10]面向程序自動(dòng)修復(fù)的缺陷分類方法研究[J]. 易昕,毛曉光,紀(jì)濤. 計(jì)算機(jī)應(yīng)用研究. 2016(06)
碩士論文
[1]Pyreview:一個(gè)基于抽象語法樹差異提取的Python源代碼分析工具[D]. 李清言.南京大學(xué) 2016
本文編號(hào):3441843
【文章來源】:齊魯工業(yè)大學(xué)山東省
【文章頁數(shù)】:80 頁
【學(xué)位級(jí)別】:碩士
【部分圖文】:
語句分裂變更模式的研究方案
齊魯工業(yè)大學(xué)碩士學(xué)位論文17圖3.2MySql數(shù)據(jù)庫中的源數(shù)據(jù)集在獲取了上述源數(shù)據(jù)集后,接下來就要對(duì)其進(jìn)行人工篩選,找出包含語句分裂變更模式的變更信息,作為語句分裂變更模式的變更數(shù)據(jù)集,為此本文利用git項(xiàng)目客戶端管理工具SourceTree2對(duì)源數(shù)據(jù)集進(jìn)行人工篩選,首先將源數(shù)據(jù)集克隆到該工具中,如圖3.3所示克隆后源數(shù)據(jù)集中的各種相關(guān)信息就會(huì)通過該工具的可視化界面被完整而清晰的展示出來,界面的上方是每次更改提交的標(biāo)簽、時(shí)間、作者以及提交號(hào),左下方是本次提交的更改中涉及到的源文件名,右下方則是展示對(duì)每個(gè)源文件的更改具體內(nèi)容。圖3.3SourceTree可視化變更信息展示圖3.3中右下方的變更內(nèi)容展示是通過文本差異化分析工具實(shí)現(xiàn)的,文本差異分析工具將更改前后的源文件視為字符串,通過計(jì)算公共子序列來判別發(fā)生變動(dòng)的文本,并將這些文本信息以及對(duì)應(yīng)的行號(hào)以代碼變更塊(hunk)為2SourceTree:https://www.sourcetreeapp.com/
齊魯工業(yè)大學(xué)碩士學(xué)位論文19表3.1四個(gè)源數(shù)據(jù)集的人工篩選結(jié)果項(xiàng)目名稱抽取時(shí)間段提交次數(shù)文件個(gè)數(shù)語句分裂變更模式代碼塊個(gè)數(shù)JEditmavenguiceEclipse1998/09/27~2012/08/082003/09/02-2014/01/292006/08/23-2013/12/122001/06/23~2013/10/166275884510041912314163051117273461016521315經(jīng)過對(duì)4個(gè)開源項(xiàng)目源數(shù)據(jù)集的人工篩選,從中獲取到了包含語句分裂變更模式的代碼變更塊hunk的數(shù)據(jù)集,并且以表格的形式記錄下了每個(gè)hunk的提交號(hào)和文件名,最后再將該表格存入數(shù)據(jù)庫中如圖3.5所示,每個(gè)項(xiàng)目的篩選情況如下:JEdit項(xiàng)目中包含了對(duì)1416個(gè)項(xiàng)目文件的6275次更改,從中獲取到101個(gè)語句分裂變更模式的代碼變更塊;maven項(xiàng)目中包含了對(duì)3051個(gè)項(xiàng)目文件的8845次更改,從中獲取到65個(gè)語句分裂變更模式的代碼變更塊;guice項(xiàng)目中包含了對(duì)1172個(gè)項(xiàng)目文件的1004次更改,從中獲取到21個(gè)語句分裂變更模式的代碼變更塊;Eclipse項(xiàng)目中包含了對(duì)7346個(gè)項(xiàng)目文件的19123次更改,從中獲取到315個(gè)語句分裂變更模式的代碼變更塊。圖3.5人工篩選數(shù)據(jù)集的數(shù)據(jù)庫表3.3語句分裂變更模式兩種形式的定義基于對(duì)上述人工篩選出的語句分裂變更模式hunk數(shù)據(jù)集文本特征的分析,發(fā)現(xiàn)該模式存在兩種基本形式,本文將這兩種形式分別命名為拆分形式和替換形式,對(duì)于這兩種形式的研究是以文本差異分析工具輸出的代碼變更塊(hunk)為單位的,所以首先要對(duì)hunk進(jìn)行定義。定義1:代碼變更塊hunk可以用四元組h=<L-,L+,R-,R+>的形式來表示,其中的元素L-和L+分別代表刪除行和增加行的文本內(nèi)容,元素R-和R+分別代表刪除行和增加行的行號(hào)范圍。
【參考文獻(xiàn)】:
期刊論文
[1]代碼壞味對(duì)軟件演化影響的實(shí)證研究[J]. 章曉芳,朱燦. 軟件學(xué)報(bào). 2019(05)
[2]基于版本的多重軟件重構(gòu)自動(dòng)檢測(cè)技術(shù)研究[J]. 鐘林輝,黃小明,薛良波,葉海濤. 江西師范大學(xué)學(xué)報(bào)(自然科學(xué)版). 2018(05)
[3]代碼審查在軟件工程實(shí)施中的重要性[J]. 井濤. 電子技術(shù)與軟件工程. 2017(21)
[4]基于鄰域三支決策粗糙集模型的軟件缺陷預(yù)測(cè)方法[J]. 李偉湋,郭鴻昌. 數(shù)據(jù)采集與處理. 2017(01)
[5]基于雙重維度發(fā)現(xiàn)代碼變更模式的挖掘方法[J]. 左翔宇,劉婧,何璐璐. 計(jì)算機(jī)應(yīng)用研究. 2017(08)
[6]面向設(shè)計(jì)的開源軟件項(xiàng)目重構(gòu)經(jīng)驗(yàn)研究[J]. 阮航,陳恒,彭鑫,趙文耘. 計(jì)算機(jī)科學(xué)與探索. 2017(09)
[7]基于JavaCC的抽象語法樹的構(gòu)建與實(shí)現(xiàn)[J]. 黃松,黃玉,惠戰(zhàn)偉. 計(jì)算機(jī)工程與設(shè)計(jì). 2016(04)
[8]故障注入的軟件代碼缺陷模式[J]. 賀仁亞,唐龍利. 指揮信息系統(tǒng)與技術(shù). 2015(06)
[9]大規(guī)模軟件系統(tǒng)日志研究綜述[J]. 廖湘科,李?yuàn)檴?董威,賈周陽,劉曉東,周書林. 軟件學(xué)報(bào). 2016(08)
[10]面向程序自動(dòng)修復(fù)的缺陷分類方法研究[J]. 易昕,毛曉光,紀(jì)濤. 計(jì)算機(jī)應(yīng)用研究. 2016(06)
碩士論文
[1]Pyreview:一個(gè)基于抽象語法樹差異提取的Python源代碼分析工具[D]. 李清言.南京大學(xué) 2016
本文編號(hào):3441843
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3441843.html
最近更新
教材專著