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
主站蜘蛛池模板: 国产精品亚洲欧美日韩久久| 在线观看国产精美视频| 国产欧美日韩综合在线第一| 亚洲第一中文字幕| 婷婷午夜天| 亚洲日本精品一区二区| 日本不卡在线| 国产精品刺激对白在线 | 在线亚洲精品自拍| 无码精品国产dvd在线观看9久| 自慰高潮喷白浆在线观看| 国产91久久久久久| 99久久国产综合精品女同| 99精品热视频这里只有精品7| 免费中文字幕一级毛片| 成人一级黄色毛片| 午夜电影在线观看国产1区| 9cao视频精品| 国产va免费精品观看| 欧美亚洲一区二区三区在线| 中字无码av在线电影| 精品国产91爱| 玖玖免费视频在线观看| 国产爽歪歪免费视频在线观看 | 四虎精品免费久久| 国产熟女一级毛片| 亚洲综合中文字幕国产精品欧美| 国模私拍一区二区| 婷婷色一二三区波多野衣| 黄色国产在线| 一区二区影院| 欧美一级专区免费大片| 亚洲综合一区国产精品| 老司机精品一区在线视频| 91成人在线观看| 漂亮人妻被中出中文字幕久久| 国产SUV精品一区二区| 992Tv视频国产精品| 激情综合网激情综合| 国产黑丝视频在线观看| 成人看片欧美一区二区| 国产成人无码AV在线播放动漫| 这里只有精品在线| 天堂网亚洲系列亚洲系列| 亚洲天堂视频网| 尤物在线观看乱码| 亚洲AⅤ永久无码精品毛片| 日本道综合一本久久久88| 57pao国产成视频免费播放| 久996视频精品免费观看| 色婷婷视频在线| 色精品视频| 久久亚洲精少妇毛片午夜无码| 国产乱子伦视频在线播放| 亚洲男人的天堂久久精品| 久久无码av三级| 成人欧美在线观看| 亚洲最大综合网| 天堂成人av| 欧美日韩在线观看一区二区三区| 国产成人一区| 国产精品福利尤物youwu | 欧美成人A视频| 伊人久久婷婷| 国产91视频观看| 伊人五月丁香综合AⅤ| 欧美日韩专区| 国产人免费人成免费视频| 国产精品永久不卡免费视频| 久久精品中文字幕少妇| 98超碰在线观看| 亚洲婷婷在线视频| 欧美精品一区在线看| 欧美翘臀一区二区三区| 国产亚洲欧美日本一二三本道| 国产尤物在线播放| 国产精品一区二区在线播放| 国产免费久久精品99re不卡| 欧美天堂久久| 国内老司机精品视频在线播出| 亚洲乱亚洲乱妇24p| 国产精品国产主播在线观看|