Git倉(cāng)庫(kù)代碼演化過(guò)程中的注解定位技術(shù)研究
發(fā)布時(shí)間:2020-11-10 09:24
在團(tuán)隊(duì)協(xié)作開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)成員在向Git倉(cāng)庫(kù)提交代碼時(shí),可能需要在不改變?cè)创a內(nèi)容和結(jié)構(gòu)的情況下對(duì)代碼添加一些注解,備注修改緣由,便于項(xiàng)目負(fù)責(zé)人審核。同時(shí),也希望開(kāi)發(fā)成員可以對(duì)代碼中難以理解、易混淆的核心業(yè)務(wù)邏輯添加圖片、偽算法和超鏈接等復(fù)雜的注解,并可以將歷史注解自動(dòng)重新定位到新版本文件中對(duì)應(yīng)的代碼位置,實(shí)現(xiàn)一次注解,永久有效。目前,在軟件開(kāi)發(fā)過(guò)程中,代碼中經(jīng)常出現(xiàn)不添加注釋、注釋不規(guī)范等問(wèn)題,導(dǎo)致代碼冗余和結(jié)構(gòu)混亂,降低了源代碼的可讀性和程序的可維護(hù)性。而且,國(guó)內(nèi)外比較流行的代碼托管平臺(tái)GitHub或者Git@OSC本身并沒(méi)有提供一種非侵入式、可重定位的代碼注解功能,無(wú)法解決上述可能出現(xiàn)的問(wèn)題。同時(shí)對(duì)使用代碼托管平臺(tái)Gitplex的企業(yè)合作用戶(hù)進(jìn)行訪問(wèn)調(diào)查,結(jié)果表明項(xiàng)目負(fù)責(zé)人一致認(rèn)同此功能;谏鲜鰡(wèn)題和需求,本文基于Git倉(cāng)庫(kù)的歷史記錄和修訂追蹤功能,提出了一種字符串轉(zhuǎn)換的文本diff注解定位技術(shù)。首先使用字符串前綴匹配算法、后綴匹配算法對(duì)倉(cāng)庫(kù)中的兩個(gè)歷史版本文件進(jìn)行文本diff標(biāo)記。同時(shí)將行級(jí)字符串轉(zhuǎn)換為一個(gè)char類(lèi)型字符,提高文本diff的性能和注解定位的準(zhǔn)確性;使用局部性原理矯正注解定位可能出現(xiàn)的定位錯(cuò)誤;使用緩存技術(shù)提高文本diff的性能。最后,本文制定了對(duì)比實(shí)驗(yàn)方案,驗(yàn)證四種注解定位技術(shù)的性能優(yōu)異。大量的實(shí)驗(yàn)結(jié)果表明,本文研究的注解定位技術(shù)在運(yùn)行時(shí)間和正確率兩方面上的性能更優(yōu)異。目前,該注解定位技術(shù)已經(jīng)應(yīng)用在基于代碼托管平臺(tái)Gitplex開(kāi)發(fā)的注解系統(tǒng)中,運(yùn)行良好,性能優(yōu)異。
【學(xué)位單位】:南京郵電大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位年份】:2018
【中圖分類(lèi)】:TP311.52
【部分圖文】:
和已提交(Unmodify)。未追蹤表示 Git 倉(cāng)庫(kù)文件夾中的文件沒(méi)有提交到倉(cāng)庫(kù)中,無(wú)法進(jìn)行版本管理;已修改表示該文件已經(jīng)修改,可以使用 git add 命令添加到暫時(shí)緩存區(qū),或者使用 gitcheckout 命令放棄已修改的內(nèi)容,還原到已提交狀態(tài);已暫存表示已經(jīng)使用 git add 命令添加到暫時(shí)緩存區(qū),如果使用 commit 命令將提交到本地倉(cāng)庫(kù);已提交表示該文件與本地倉(cāng)庫(kù)中的文件狀態(tài)一致,沒(méi)有被修改。2.3.3 提交原理每向 Git 倉(cāng)庫(kù)提交(commit)一次就完整復(fù)制一次項(xiàng)目中的每個(gè)文件,所以可以查看或者回退到任何一個(gè)歷史版本而不會(huì)丟失任何數(shù)據(jù)。如果提交變更的文件時(shí),會(huì)為該文件生成一個(gè)新的 Blob 對(duì)象,并將其保存到倉(cāng)庫(kù)中,同時(shí)會(huì)為該文件生成一個(gè)唯一的 SHA-1 校驗(yàn)和,并將其指向該文件。對(duì)于已提交(Unmodify)的文件,直接使用當(dāng)前歷史版本的 SHA-1 校驗(yàn)和指向該文件。下圖 2.4 詳細(xì)展示了版本控制系統(tǒng) Git 的提交原理。
注解定位技術(shù)分析與評(píng)估注解定位技術(shù)主要涉及兩個(gè)核心概念,一個(gè)是注解,與注解系統(tǒng)有關(guān);另外一個(gè)是定位,與文本匹配技術(shù)有關(guān)。本章節(jié)將會(huì)介紹并分析討論與上述兩大核心概念相關(guān)的背景知識(shí)。2.5.1 注解系統(tǒng)注解系統(tǒng)是一個(gè)依托于代碼托管服務(wù)平臺(tái)的第三方系統(tǒng),主要用于提供非侵入式、可自動(dòng)重定位的注解功能。該系統(tǒng)目前主要有注解添加、注解重定位和注解內(nèi)容可視化三大功能。該系統(tǒng)的注解添加功能十分強(qiáng)大,提供了多種注解內(nèi)容添加方式,包括偽算法、圖片和超鏈接等。注解系統(tǒng)界面簡(jiǎn)潔、操作簡(jiǎn)單,可以十分方便地實(shí)現(xiàn)非侵入式注解功能。目前,該系統(tǒng)已經(jīng)應(yīng)用在代碼托管服務(wù)平臺(tái) Gitplex 上面,運(yùn)行狀況良好,性能優(yōu)異。下圖 2.2 是截取了部分注解系統(tǒng)與 Gitplex 集成后的界面顯示效果圖。
上一章的 2.5 章節(jié)中對(duì)三種注解定位技術(shù)進(jìn)行了分析與評(píng)估,了解到它們本身都有各自的局限性,因而無(wú)法將它們應(yīng)用到注解系統(tǒng)生產(chǎn)環(huán)境中,將代碼演化過(guò)程中歷史版本文件中的注解重新定位到新版本文件中的對(duì)應(yīng)代碼位置上。故而在本章節(jié)中,我們提出了一種基于字符串轉(zhuǎn)換的文本 diff 注解定位技術(shù),它不僅解決了上一章節(jié)中基于正則表達(dá)式的注解定位技術(shù)和基于編程語(yǔ)言循環(huán)語(yǔ)法的注解定位技術(shù)因沒(méi)有進(jìn)行上下語(yǔ)義匹配導(dǎo)致注解重定位錯(cuò)誤的問(wèn)題,同樣解決了基于 google-diff-match-patch 的注解定位技術(shù)因 diff 標(biāo)記結(jié)果分析復(fù)雜導(dǎo)致錯(cuò)誤率較高的問(wèn)題。總體概覽本章節(jié)首先從注解定位的整體執(zhí)行過(guò)程介紹基于字符串轉(zhuǎn)換的文本 diff 注解定位技術(shù),讓大家對(duì)該技術(shù)有一個(gè)總體認(rèn)識(shí),然后將介紹該技術(shù)核心業(yè)務(wù)邏輯中的核心算法。具體執(zhí)行流程圖如圖 3.1 所示:
【參考文獻(xiàn)】
本文編號(hào):2877771
【學(xué)位單位】:南京郵電大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位年份】:2018
【中圖分類(lèi)】:TP311.52
【部分圖文】:
和已提交(Unmodify)。未追蹤表示 Git 倉(cāng)庫(kù)文件夾中的文件沒(méi)有提交到倉(cāng)庫(kù)中,無(wú)法進(jìn)行版本管理;已修改表示該文件已經(jīng)修改,可以使用 git add 命令添加到暫時(shí)緩存區(qū),或者使用 gitcheckout 命令放棄已修改的內(nèi)容,還原到已提交狀態(tài);已暫存表示已經(jīng)使用 git add 命令添加到暫時(shí)緩存區(qū),如果使用 commit 命令將提交到本地倉(cāng)庫(kù);已提交表示該文件與本地倉(cāng)庫(kù)中的文件狀態(tài)一致,沒(méi)有被修改。2.3.3 提交原理每向 Git 倉(cāng)庫(kù)提交(commit)一次就完整復(fù)制一次項(xiàng)目中的每個(gè)文件,所以可以查看或者回退到任何一個(gè)歷史版本而不會(huì)丟失任何數(shù)據(jù)。如果提交變更的文件時(shí),會(huì)為該文件生成一個(gè)新的 Blob 對(duì)象,并將其保存到倉(cāng)庫(kù)中,同時(shí)會(huì)為該文件生成一個(gè)唯一的 SHA-1 校驗(yàn)和,并將其指向該文件。對(duì)于已提交(Unmodify)的文件,直接使用當(dāng)前歷史版本的 SHA-1 校驗(yàn)和指向該文件。下圖 2.4 詳細(xì)展示了版本控制系統(tǒng) Git 的提交原理。
注解定位技術(shù)分析與評(píng)估注解定位技術(shù)主要涉及兩個(gè)核心概念,一個(gè)是注解,與注解系統(tǒng)有關(guān);另外一個(gè)是定位,與文本匹配技術(shù)有關(guān)。本章節(jié)將會(huì)介紹并分析討論與上述兩大核心概念相關(guān)的背景知識(shí)。2.5.1 注解系統(tǒng)注解系統(tǒng)是一個(gè)依托于代碼托管服務(wù)平臺(tái)的第三方系統(tǒng),主要用于提供非侵入式、可自動(dòng)重定位的注解功能。該系統(tǒng)目前主要有注解添加、注解重定位和注解內(nèi)容可視化三大功能。該系統(tǒng)的注解添加功能十分強(qiáng)大,提供了多種注解內(nèi)容添加方式,包括偽算法、圖片和超鏈接等。注解系統(tǒng)界面簡(jiǎn)潔、操作簡(jiǎn)單,可以十分方便地實(shí)現(xiàn)非侵入式注解功能。目前,該系統(tǒng)已經(jīng)應(yīng)用在代碼托管服務(wù)平臺(tái) Gitplex 上面,運(yùn)行狀況良好,性能優(yōu)異。下圖 2.2 是截取了部分注解系統(tǒng)與 Gitplex 集成后的界面顯示效果圖。
上一章的 2.5 章節(jié)中對(duì)三種注解定位技術(shù)進(jìn)行了分析與評(píng)估,了解到它們本身都有各自的局限性,因而無(wú)法將它們應(yīng)用到注解系統(tǒng)生產(chǎn)環(huán)境中,將代碼演化過(guò)程中歷史版本文件中的注解重新定位到新版本文件中的對(duì)應(yīng)代碼位置上。故而在本章節(jié)中,我們提出了一種基于字符串轉(zhuǎn)換的文本 diff 注解定位技術(shù),它不僅解決了上一章節(jié)中基于正則表達(dá)式的注解定位技術(shù)和基于編程語(yǔ)言循環(huán)語(yǔ)法的注解定位技術(shù)因沒(méi)有進(jìn)行上下語(yǔ)義匹配導(dǎo)致注解重定位錯(cuò)誤的問(wèn)題,同樣解決了基于 google-diff-match-patch 的注解定位技術(shù)因 diff 標(biāo)記結(jié)果分析復(fù)雜導(dǎo)致錯(cuò)誤率較高的問(wèn)題。總體概覽本章節(jié)首先從注解定位的整體執(zhí)行過(guò)程介紹基于字符串轉(zhuǎn)換的文本 diff 注解定位技術(shù),讓大家對(duì)該技術(shù)有一個(gè)總體認(rèn)識(shí),然后將介紹該技術(shù)核心業(yè)務(wù)邏輯中的核心算法。具體執(zhí)行流程圖如圖 3.1 所示:
【參考文獻(xiàn)】
相關(guān)期刊論文 前2條
1 王偉;劉淵;張春瑞;文平;謝家俊;;上下文不一致性缺陷的檢測(cè)[J];計(jì)算機(jī)科學(xué);2015年S1期
2 柳廳文;孫永;卜東波;郭莉;方濱興;;正則表達(dá)式分組的1/(1-1/k)-近似算法[J];軟件學(xué)報(bào);2012年09期
相關(guān)碩士學(xué)位論文 前1條
1 姜英杰;支持正則表達(dá)式的文本匹配優(yōu)化算法[D];東北大學(xué);2012年
本文編號(hào):2877771
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/2877771.html
最近更新
教材專(zhuān)著