999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Git的跨版本遷移的軟件評審設計與實現

2018-08-01 08:06:38關婷婷任洪敏江金蓮
現代計算機 2018年19期
關鍵詞:歷史信息

關婷婷,任洪敏,江金蓮

(上海海事大學信息工程學院,上海 201306)

0 引言

軟件開發實踐表明,大部分缺陷從軟件開發的最早階段起,就存在于軟件之中。經驗表明,在制定技術規范期間產生的問題如果在集成測試或者產品使用時被發現,與在設計編碼期間被發現相比較,返工的成本前者比后者高10-100倍。軟件評審是用于開發過程檢查和糾正缺陷的最佳途徑。它們可以檢查未形成的執行代碼的文檔缺陷,用評審發現缺陷的成本與其他的是相當低的,并且可以提高項目的生產率更早的發現缺陷從而減少返工時間和測試時間。軟件評審工具不僅可以節約評審會議的時間而且不再限制參與評審人員的時間和地點,也更好地記錄了評審的全部信息。隨著Git軟件項目托管平臺的普遍應用給軟件開發人員對文件和代碼的修改帶來便捷。從而同時存儲的軟件項目都存在多個版本,致使軟件評審的工作需要不斷地隨之變更給軟件評審活動帶來不便極大地降低了軟件評審的效率。所以本文將Git版本控制的原理融入到軟件評審的方式中,研究出一個可以跨版本遷移的軟件評審系統。版本控制是一種軟體工程技巧,籍以在開發的過程中,確保由不同人所編輯的同一檔案都得到更新。版本控制透過文檔控制記錄程序各個模組的改動,并為每次改動編上序號。通過這些生成的32位具有唯一性的編號可以實現將某個文件回溯到之前的狀態,甚至將整個項目都回退到過去某個時間點的狀態。則跨版本遷移正是利用項目當前版本與歷史版本的比對,根據差異對比實現當前版本與歷史評審信息的比對。從而實現軟件評審的工作結果隨軟件項目的改動而自動變動。不再因為軟件項目的修改而從新開始軟件評審工作。

1 Git的版本控制原理

1.1 Git Log歷史版本回顧

版本控制是一種軟體工程技巧,籍以在開發的過程中,確保由不同人所編輯的同一檔案都得到更新。版本控制透過文檔控制記錄程序各個模組的改動,并為每次改動編上序號。Git是一個開源的分布式版本控制系統,可以有效、高速f處理從很小到非常大的項目版本管理。利用Git命令中的日志查詢命令Git Log的原理來獲取當前文件的所有歷史版本的版本號。版本的信息會按提交時間列出所有的更新,最后一次提交的信息會在最上面。Git Log會展示出所有提交過版本的信息,這些信息包括32位版本號、提交時間、提交者姓名、版本的提示信息。通過git log命令,可以根據時間從最近到最遠顯示提交日志,如下列所示第一行是Git的編號。與SVN編號不同這串數字并不是按數值遞增的,而是一個SHA1計算出來的一個非常大的數字,用十六進制表示。每提交一次Git實質就將所有版本按時間穿成一條時間線。在Git中用HEAD表示當前版本也就是當前版本cae098d…,使用git reset實現版本回退,Git的版本回退速度非常快,因為Git在內部有個指向當前版本的HEAD指針,當你回退版本的時候,Git僅僅是把HEAD的指針指向改變到新的版本上而已,然后順便把工作區的文件更新了。

commit cae098ddaf9cecd1bc3dceaddc3db27bc7632e18

(HEAD->master)

Author:Guan Ting Ting

Date:Fri Mar 23 13:07:14 2018+0800

----commit–m"comments on a form"

1.2 git diff版本差異對比

可以通過版本序號可以對比出兩個歷史版本的差異對比,或者當前版本和一個歷史版本的文件的對比。通過git diff序列號得到如下信息:

diff--git a/src/Main.java b/src/Main.java

index e69de29..dca0fe6 100644

---a/src/Main.java

+++b/src/Main.java

@@-1,2+1,2@@

第一行表示結果為Git格式的diff。進行比較的是a版本a.java(即變動前)和b版本的a.java(變動后),第二行表示兩個版本的Git哈希值,index區域的4ef7e28對象與工作目錄區域的3ec1e0f對象進行比較。最后的六位數字是對象的模式為普通文件644權限。第三行和第四行表示進行比較的兩個文件。“---”表示變動前的版本,“+++”表示變動后的版本。變動的位置用兩個@座作為起首和結束。后面跟隨的是變動信息的具體情況如圖代表第一個版本變動從第一行開始連續變動四行,第二個版本變動從第一行開始連續57行。后面則是變動的具體內容。

2 跨版本遷移的軟件評審平臺設計與實現

2.1 跨版本遷移的軟件評審的總體設計

系統設計流程如下:

(1)視圖獲取所選的文件倉庫ID、分支、文件名稱。

(2)根據倉庫ID在數據庫中搜索相對的路徑,然后讀取文件內容。

(3)獲取當前文件所有歷史版本號,并獲得所有版本的數據庫中的評價信息。

(4)將每條評價的版本號與當前版本作git diff對比,得到相對增加或加少的行。

(5)根據增加減少的行與此條記錄作動態運算得到當前版本此條評論應該顯示的行號。

(6)將讀取到的文件、文件所有的評論、每條評論在當前版本的行號一并返回視圖層。

(7)添加評論是將倉庫ID、branch、文件名、行號、評論內容存入數據庫中生成記錄。跨版本遷移的軟件評審實現流程如下:

圖1 跨版本遷移的實現流程

2.2 實現技術

平臺前端頁面采用Syntaxhighlighter框架結合jQuery實現不同軟件文件內容的高亮顯示,很好地支持了Java、XML、PHP等16種文件形式,并結合HT?ML5、CSS3等前端技術呈現友好的界面。后臺程序以Spring Boot為框架,以Java為主要開發語言,通過Java調用JGit的API實現對Git倉庫的相關操作,后臺與數據庫MySQL的連接、查詢、添加等數據交互是通過JSON數據對象來實現。使用面向對象的開發結構和MVC模式;后臺通過JGit實現本地倉庫信息的讀取,并在前端通過AJAX接收返回的數據和對應的評審結果。JGit是一款由Eclipse基金會提供支持的輕量級、Java庫實現的Git版本控制系統,包括三大部分:(1)版本庫訪問程序(2)網絡協議(3)核心版本控制算法。圖2為本平臺的技術框架。

3 跨版本遷移的算法實現

3.1 歷史版本評論及文件讀取的實現步驟

Step1:前端通過AJAX傳遞當前文件的倉庫編碼、文件名稱、分支,后臺根據倉庫編碼得到在數據庫中存儲的對應的倉庫路徑。

Step2:根據倉庫編碼在數據庫中查找倉庫路徑,從而得到當前文件在Git倉庫中的路徑。

Step3:通過獲取的文件路徑從字符輸入流中讀取本地Git倉庫的文件,創建BufferedReader對象逐行緩沖各個字符,并將讀取的字符存儲到一個ArrayList的結構中。

Step4:通過JGit提供的獲得文件版本編號的API獲得所有提交過的日志信息中的版本編號。

Step5:將獲得的所有版本編號拼成一個字符串,用之在數據庫中查找所有歷史版本的評論。

3.2 git diff差異對比的算法實現

跨版本文件中評論信息的遷移主要由兩部分實現:首先獲得提交日志中所有版本中的評論信息,將每條評論信息所在的版本與當前版本作git diff的對比,從而得知相對當前版本增加的行號和減少的行號。通過使用JGit提供的git diff的API,實現兩個文件差異的比較。

3.3 動態計算跨版本遷移行號

動態計算原理:通過分析git diff返回的對比結果,歷史版本對于當前版本新增行數的數組和刪減行數的數組。遍歷增加的行數數組,歷史版本中記錄評論的行號后移分為兩種情況:①若新增的行號小于歷史版本中記錄行號,則歷史版本記錄行號需向后移動一位。②若新增行號等于歷史版本記錄行號,連續增加幾行則歷史行號需后移幾位。同理歷史版本中記錄評論的行號向前移動亦然。用一個變量diffCount記錄需要增加或刪減的行數,則當前版本中的評論行號就等于歷史版本中記錄的行號加變量diffCount。

4 實驗結果

4.1 實驗環境

開發過程中開發人員不斷的對文件進行修改,然后不斷地提交修改到版本庫里。跨版本遷移平臺實現了評審的文件的多個版本的切換,評論結果不丟失,并對應匹配文件行號。本文跨版本遷移的軟件評審平臺需要的環境配置如下:

表1 實驗環境軟件工具表

4.2 實驗結果對比

目前流行的軟件評審系統大致分為三種。第一種是簡單的和輕量級的評審系統,但是這種只是單純的代碼評審工具并沒有關聯到遠程代碼倉庫。不能立即對更新的代碼做最新的評審降低評審效率。需要每次手動導入帶評審項目,給評審帶來便。第二種就如谷歌開發的Gerrit一樣,實際上一個Git服務器,它為在其服務器上托管的Git倉庫提供一系列權限控制。這種評審系統龐大,不僅需要進行復雜的公鑰、私鑰配置。第三種是基于SVN的軟件評審系統,SVN采用集中式代碼管理,頻繁的提交代碼會致使服務器壓力過大,數據庫容量暴增。并且如果連接不到服務器就無法工作非常受限。而本文研發的基于Git的跨版本遷移的軟件評審系統不僅省去繁瑣的配置工作,也不需要隨文件的改動手動再次導入需要評審的文件,提高了開發的效率為開發人員節省了工作時間。

5 結語

本文研發的系統是一個基于Web在線的代碼評審系統原型,使用Git版本控制系統讀取Git倉庫文件作代碼評審。操作簡單不需要手動導入待評審文件也不需要繁瑣的公鑰、秘鑰配置。目前并沒有一個軟件評審工具具有跨版本的遷移功能。評審文件各個版本之間自由切換,評審標記和評審信息隨之改變。這樣每次開放人員提交新的版本就不需要從新評審。系統將自動與之前的版本做對比顯示標注和評審信息。使軟件評審的過程更加輕巧便捷,開發人員隨時掌握軟件代碼的最新狀態節省了開發時間,提升了評審效率。

猜你喜歡
歷史信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
新歷史
全體育(2016年4期)2016-11-02 18:57:28
歷史上的6月
歷史上的九月
歷史上的八個月
歷史上的5月
歷史上的4月
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 久久香蕉国产线看观看式| jijzzizz老师出水喷水喷出| 亚洲欧美成人影院| 91在线丝袜| 日韩国产综合精选| 美女一级免费毛片| 中文毛片无遮挡播放免费| 女人一级毛片| 亚洲精品福利视频| 亚洲人人视频| 色天堂无毒不卡| 97国产一区二区精品久久呦| 国产最爽的乱婬视频国语对白| 日韩a在线观看免费观看| 91免费国产高清观看| 国产成人精品高清不卡在线| 美女一区二区在线观看| 亚洲精品无码久久久久苍井空| 欧美日韩国产成人在线观看| 亚洲国产日韩视频观看| 亚洲最大福利网站| 精品久久久久久中文字幕女| 亚洲欧美精品一中文字幕| 国产传媒一区二区三区四区五区| 国产高潮视频在线观看| 久久综合色视频| 国产精品久久精品| 亚洲欧美不卡| 啪啪永久免费av| 午夜毛片免费观看视频 | 欧美a在线看| 亚洲中文字幕97久久精品少妇| 无码网站免费观看| 精品国产一二三区| 亚洲乱码在线播放| 国产亚洲视频在线观看| 欧洲亚洲一区| 91精品久久久无码中文字幕vr| 国产日韩欧美一区二区三区在线| 黄色片中文字幕| 亚洲成肉网| 欧美一区国产| 婷婷开心中文字幕| 国产日韩精品欧美一区灰| 亚洲欧美成aⅴ人在线观看| 一级一级特黄女人精品毛片| 日韩欧美国产另类| 免费国产小视频在线观看| 99一级毛片| 国产精品人人做人人爽人人添| 亚洲乱强伦| 亚洲一区二区三区在线视频| 40岁成熟女人牲交片免费| 91探花在线观看国产最新| 亚洲福利一区二区三区| 国产欧美在线视频免费| 狠狠色婷婷丁香综合久久韩国| 在线观看亚洲成人| 丁香五月婷婷激情基地| 国产激情无码一区二区APP| 久久狠狠色噜噜狠狠狠狠97视色| 日韩欧美中文字幕在线精品| 色丁丁毛片在线观看| 71pao成人国产永久免费视频| 亚洲第一成网站| 久久一日本道色综合久久| 中文字幕亚洲综久久2021| 亚洲日本一本dvd高清| 99草精品视频| 1024你懂的国产精品| 亚洲开心婷婷中文字幕| 亚洲色图欧美视频| 色天天综合| 久久久久国产精品熟女影院| 色婷婷久久| 九色视频在线免费观看| 亚洲成A人V欧美综合天堂| 精品久久高清| 中文字幕亚洲乱码熟女1区2区| 91成人在线免费视频| 99人妻碰碰碰久久久久禁片| 91在线日韩在线播放|