[發明專利]一種基于Git的代碼行生命周期追溯方法及電子裝置有效
| 申請號: | 202110013631.7 | 申請日: | 2021-01-06 |
| 公開(公告)號: | CN112698866B | 公開(公告)日: | 2022-06-17 |
| 發明(設計)人: | 朱家鑫;陳偉;吳國全;竇文生;魏峻 | 申請(專利權)人: | 中國科學院軟件研究所 |
| 主分類號: | G06F8/71 | 分類號: | G06F8/71 |
| 代理公司: | 北京君尚知識產權代理有限公司 11200 | 代理人: | 陳艷 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 git 代碼 生命周期 追溯 方法 電子 裝置 | ||
1.一種基于Git的代碼行生命周期追溯方法,其步驟包括:
1)提取Git倉庫中的每一個commit的信息,其中所述commit的信息包括:commit的ID、相應父commit的ID、commit的作者、commit的時間、commit的描述和commit的代碼變更內容;
2)根據commit的ID及相應父commit的ID,建立commit組成的有向無環圖,按廣度優先順序遍歷該有向無環圖,依據commit的代碼變更內容,跟蹤提取并記錄代碼文件行的變更歷史信息,其中所述代碼文件行的變更歷史信息包括:
a)文件,包含一個或多個該文件被創建的commit;
b)文件被創建的commit,包含零個或多個行;
c)行,包含一個或多個行發生位移時的commit;
d)行發生位移時的commit,包含上一次位移時的commit的ID和位移后的行號;
3)對于一個commit中的一個文件的一行待查詢代碼,依據代碼文件行的變更歷史信息記錄,得到該行待查詢代碼的產生、位移或消亡的commit的信息,其中所述該行待查詢代碼的產生、位移或消亡的commit的信息包括:commit的ID、commit的作者、commit的時間和commit的描述。
2.如權利要求1所述的方法,其特征在于,使用Git命令:git log--pretty=format:%H;%P;%an;%ae;%at;%s;%b,獲取commit的ID及相應父commit的ID、commit的作者、commit的時間和commit的描述。
3.如權利要求1所述的方法,其特征在于,使用Git命令:git diff父commit IDcommit ID,獲取commit的代碼變更內容。
4.如權利要求1所述的方法,其特征在于,記錄所述commit組成的有向無環圖的數據結構包括:雙向鏈表。
5.如權利要求1所述的方法,其特征在于,記錄所述代碼文件行的變更歷史信息的數據結構包括:字典結構。
6.如權利要求1所述的方法,其特征在于,所述commit的代碼變更內容包括:變更文件的文件路徑與文件變更內容。
7.如權利要求6所述的方法,其特征在于,文件以文件路徑作為唯一標識;文件被創建的commit以commit的ID作為唯一標識;行以被計入的順序編號作為唯一標識;行發生位移時的commit以commit的ID作為唯一標識。
8.如權利要求1所述的方法,其特征在于,記錄位移后的行號的策略包括:
1)如果是添加的行,直接記錄代碼變更內容中變更后的行號;
2)如果是刪除的行,直接記錄為0;
3)如果是保留的行,從代碼變更內容中讀取該保留的行之前添加的行數與刪除的行數,用該保留的行在其上一次位移后的行號,累加該保留的行之前添加的行數及累減該保留的行之前刪除的行數。
9.一種存儲介質,所述存儲介質中存儲有計算機程序,其中,所述計算機程序被設置為運行時執行權利要求1-8中任一所述方法。
10.一種電子裝置,包括存儲器和處理器,所述存儲器中存儲有計算機程序,所述處理器被設置為運行所述計算機程序以執行如權利要求1-8中任一所述方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院軟件研究所,未經中國科學院軟件研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110013631.7/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:基于編碼器多位轉角信號的齒輪故障檢測方法
- 下一篇:一種氧化鋯晶體的制備方法





