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