TWI735511B - 代碼提交方法和設備 - Google Patents
代碼提交方法和設備 Download PDFInfo
- Publication number
- TWI735511B TWI735511B TW106101938A TW106101938A TWI735511B TW I735511 B TWI735511 B TW I735511B TW 106101938 A TW106101938 A TW 106101938A TW 106101938 A TW106101938 A TW 106101938A TW I735511 B TWI735511 B TW I735511B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- submitted
- incremental
- task
- test
- Prior art date
Links
Images
Abstract
本申請案提出了一種代碼提交方法和設備,該方法包括:獲取預備向代碼倉庫提交的待提交增量代碼;對所述待提交增量代碼進行檢測;提交檢測通過的待提交增量代碼到代碼倉庫,通過對提交代碼之前先對代碼進行檢測,保證了提交代碼的準確性,且可以儘早發現問題,不會影響到其他需要利用該提交代碼的程式或者過程。
Description
本申請案實施例涉及通信技術領域,特別涉及一種代碼提交方法和設備。
在現有技術中,是通過工具監控指定代碼倉庫的變更,在發現有新代碼提交入庫時,將代碼倉庫的新代碼檢出到本地,按照配置項和配置步驟,觸發持續集成執行,但觸發持續集成執行的一個重要前提是:代碼必須真實的提交到代碼倉庫,否則不會觸發任務的執行。而提交入庫的代碼,如果因為build break或測試執行失敗導致持續集成的任務失敗,已經對最終的測試結果和檢出代碼到本地的其他團隊成員產生了實質性的影響,其他人或任務必須依賴此次失敗修復後,才能正常繼續執行,這種方式不利於儘早發現問題、且違反了過程成本的軟體工程原則,另外,這種方式沒有把code review(CR:Code Review,代碼審查)的環節納入整個流程中,因此無法保證提交代碼的準確性。
針對現有技術中的不利於儘早發現問題,且無法保證代碼準確性的缺陷,本申請案提出了一種代碼提交方法,包括:獲取預備向代碼倉庫提交的待提交增量代碼;對所述待提交增量代碼進行檢測;提交檢測通過的待提交增量代碼到所述代碼倉庫。
可選的,所述對所述待提交增量代碼進行檢測,具體包括:對所述待提交增量代碼進行代碼審查;對所述待提交增量代碼進行任務測試。
若所述代碼審查通過且所述任務測試通過,則確定對所述待提交增量代碼的檢測通過。
可選的,所述對所述待提交增量代碼進行代碼審查,具體包括:將所述待提交增量代碼發送給多個審查者進行審查;接收審查者回饋的審查結果;如審查結果為超過預設個數的審查者審查所述待提交增量代碼通過,則確定所述待提交增量代碼審查通過。
可選的,所述對所述待提交增量代碼進行任務測試,具體包括:對所述待提交增量代碼的依賴代碼執行編譯;在對依賴代碼執行編譯時進行指定任務的任務測試;在對依賴代碼編譯完成之後進行預設任務的任務測 試;獲取指定任務與預設任務的任務測試結果;若任務測試結果為全部通過,則確定對所述待提交增量代碼的任務測試通過。
可選的,所述對所述待提交增量代碼的依賴代碼執行編譯,具體包括:監控所述待提交增量代碼的依賴代碼是否發生變化;編譯發生了變化的依賴代碼;提取沒有發生變化的依賴代碼對應的程式館檔到指定位置,以便在對所述待提交增量代碼進行編譯時,直接引用所述程式館檔。
可選的,進行任務測試,具體包括:基於所述待提交增量代碼的儲存路徑地址在配置庫中指定位置查找任務設定檔;若在指定位置沒有查找到所述任務設定檔,則在所述指定位置的父目錄所在位置查找所述任務設定檔,並利用查找到的任務設定檔進行任務測試;若在父路徑所在位置查找到所述任務設定檔,提取查找到的最新的任務設定檔,並利用提取的最新的任務設定檔進行任務測試;若在父路徑所在位置未查找到所述任務設定檔,基於預設的通用配置來進行任務測試。
可選的,所述提交檢測通過後的待提交增量代碼到所述代碼倉庫,具體包括: 判斷檢測通過後的待提交增量代碼是否存在多個;若判斷結果為是,判斷是否存在檢測通過後的多個待提交增量代碼對應於同一原始程式碼,且對應於同一原始程式碼的檢測通過後的多個待提交增量代碼進行代碼修改的位置一致;若判斷結果為是,則確定對應同一個原始程式碼,且代碼修改的位置一致的多個檢測通過後的待提交增量代碼為存在衝突且檢測通過後的待提交增量代碼;基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估;按照評估得到的優先順序依序從高到低依次提交存在衝突且檢測通過後的待提交增量代碼到所述代碼倉庫。
可選的,所述優先順序評估因素包括對代碼進行修改的修改時間,代碼修改行數,以及代碼重要性;所述基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估,具體包括:基於影響程度對各個存在衝突且檢測通過的待提交增量代碼的代碼重要性進行評估,以及獲取各個存在衝突且檢測通過的待提交增量代碼的修改時間和代碼修改行數;基於修改時間,代碼修改行數以及代碼重要性來對各個存在衝突且檢測通過的待提交增量代碼的優先順序進行評估;基於評估結果確定各個存在衝突且檢測通過的待提交增量代碼的優先順序。
本申請案還提出了一種代碼提交設備,包括:獲取模組,用於獲取預備向代碼倉庫提交的待提交增量代碼;檢測模組,用於對所述待提交增量代碼進行檢測;提交模組,用於提交檢測通過的待提交增量代碼到所述代碼倉庫。
可選的,所述檢測模組,具體用於:對所述待提交增量代碼進行代碼審查;對所述待提交增量代碼進行任務測試。
若所述代碼審查通過且所述任務測試通過,則確定對所述待提交增量代碼的檢測通過。
可選的,所述檢測模組對所述待提交增量代碼進行代碼審查,具體包括:將所述待提交增量代碼發送給多個審查者進行審查;接收審查者回饋的審查結果;如審查結果為超過預設個數的審查者審查所述待提交增量代碼通過,則確定所述待提交增量代碼審查通過。
可選的,所述檢測模組對所述待提交增量代碼進行任務測試,具體包括:對所述待提交增量代碼的依賴代碼執行編譯;在對依賴代碼執行編譯時進行指定任務的任務測試;在對依賴代碼編譯完成之後進行預設任務的任務測試;獲取指定任務與預設任務的任務測試結果; 若任務測試結果為全部通過,則確定對所述待提交增量代碼的任務測試通過。
可選的,所述檢測模組對所述待提交增量代碼的依賴代碼執行編譯,具體包括:監控所述待提交增量代碼的依賴代碼是否發生變化;編譯發生了變化的依賴代碼;提取沒有發生變化的依賴代碼對應的程式館檔到指定位置,以便在對所述待提交增量代碼進行編譯時,直接引用所述程式館檔。
可選的,所述檢測模組進行任務測試,具體包括:基於所述待提交增量代碼的儲存路徑地址在配置庫中指定位置查找任務設定檔;若在指定位置沒有查找到所述任務設定檔,則在所述指定位置的父目錄所在位置查找所述任務設定檔,並利用查找到的任務設定檔進行任務測試;若在父路徑所在位置查找到所述任務設定檔,提取查找到的最新的任務設定檔,並利用提取的最新的任務設定檔進行任務測試;若在父路徑所在位置未查找到所述任務設定檔,基於預設的通用配置來進行任務測試。
可選的,所述提交模組,具體用於:判斷檢測通過後的待提交增量代碼是否存在多個;若判斷結果為是,判斷是否存在檢測通過後的多個待提交增量代碼對應於同一原始程式碼,且對應於同一原始 程式碼的檢測通過後的多個待提交增量代碼進行代碼修改的位置一致;若判斷結果為是,則確定對應同一個原始程式碼,且代碼修改的位置一致的多個檢測通過後的待提交增量代碼為存在衝突且檢測通過後的待提交增量代碼;基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估;按照評估得到的優先順序依序從高到低依次提交存在衝突且檢測通過後的待提交增量代碼到所述代碼倉庫。
可選的,所述優先順序評估因素包括對代碼進行修改的修改時間,代碼修改行數,以及代碼重要性;所述提交模組基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估,具體包括:基於影響程度對各個存在衝突且檢測通過的待提交增量代碼的代碼重要性進行評估,以及獲取各個存在衝突且檢測通過的待提交增量代碼的修改時間和代碼修改行數;基於修改時間,代碼修改行數以及代碼重要性來對各個存在衝突且檢測通過的待提交增量代碼的優先順序進行評估;基於評估結果確定各個存在衝突且檢測通過的待提交增量代碼的優先順序。
與現有技術相比,本申請案中通過獲取預備向代碼倉庫提交的待提交增量代碼;對所述待提交增量代碼進行檢 測;提交檢測通過的待提交增量代碼到所述代碼倉庫,從而在提交代碼之前先對代碼進行檢測,保證了提交代碼的準確性,且可以儘早發現問題,不會影響到其他需要利用該提交代碼的程式或者過程。
201‧‧‧獲取模組
202‧‧‧檢測模組
203‧‧‧提交模組
圖1為本申請案提出的一種代碼提交方法的流程示意圖;圖2為本申請案提出的一種代碼提交設備的結果示意圖。
如先前技術,現有技術中的風險評估方案無法準確評估風險,為此,本申請案中為了更好地評估風險,提出了一種代碼提交方法,如圖1所示,包括以下步驟:步驟101、獲取預備向代碼倉庫提交的待提交增量代碼。
在一個具體的應用場景中,在使用者修改完代碼後,會預備提交該代碼到代碼倉庫,也由此可以獲取修改後的預備向代碼倉庫提交的待提交增量代碼,至於與此不同的其他代碼,則不會執行獲取的操作。
步驟102、對待提交增量代碼進行檢測。
在獲取到待提交增量代碼之後,就需要對待提交增量代碼進行檢測,而具體的檢測包括:對待提交增量代碼進 行代碼審查和對待提交增量代碼進行任務測試,也即包括以下兩個過程:
(1)、對待提交增量代碼進行代碼審查:
將待提交增量代碼發送給多個審查者進行審查;接收審查者回饋的審查結果;如審查結果為超過預設個數的審查者審查待提交增量代碼通過,則確定待提交增量代碼審查通過。
具體的,將待提交增量代碼發送給審查者,審查者審查該待提交增量代碼後,會給出審查結果,通過或者不通過,而為了保證審查的準確性,可以預設只有在超過預設個數的審查者審查通過,例如可以設置為2個審查者審查通過,則可以確定該待提交增量代碼通過。
(2)、對待提交增量代碼進行任務測試,具體包括:
對待提交增量代碼的依賴代碼執行編譯;在對依賴代碼執行編譯時進行指定任務的任務測試;在對依賴代碼編譯完成之後進行預設任務的任務測試;獲取指定任務與預設任務的任務測試結果;若任務測試結果為全部通過,則確定對待提交增量代碼的任務測試通過。
有些測試任務需要在進行編譯時進行任務測試,例如UT(Unit Test,單元測試),還有一些需要在編譯完成之後再進行任務測試,例如BVT(Build Verification Test,冒煙測試),具體的根據其測試任務的特性來選擇相應的時機來進行任務測試,在此不再進行贅敘,而任務測試通 過需要所有進行的任務測試的結果都通過。
對待提交增量代碼的依賴代碼執行編譯,具體包括:監控待提交增量代碼的依賴代碼是否發生變化;編譯發生了變化的依賴代碼;提取沒有發生變化的依賴代碼對應的程式館檔到指定位置,以便在對待提交增量代碼進行編譯時,直接引用程式館檔。
具體的編譯不需要進行全量的編譯,由於待提交增量代碼會引用某些代碼來實現相應的功能,被引用的代碼即為待提交增量代碼的依賴代碼,也由此,在進行編譯時,只需要編譯發生了變化的依賴代碼,對與沒有發生變化的依賴代碼,可以直接提取依賴代碼的程式館檔到指定位置,而不需要執行編譯的過程,以此在保證了功能的實現的同時,減少了資源的消耗和提升了效率。
而具體的,進行任務測試,具體包括:基於待提交增量代碼的儲存路徑地址(後續待提交增量代碼根據儲存路徑地址進行代碼的提交過程)在配置庫中指定位置查找任務設定檔;若在指定位置沒有查找到任務設定檔,則在指定位置的父目錄所在位置查找任務設定檔,並利用查找到的任務設定檔進行任務測試;若在父路徑所在位置查找到任務設定檔,提取查找到的最新的任務設定檔,並利用提取的最新的任務設定檔進行任務測試;若在父路徑所在位置未查找到任務設定檔,基於預設的通用配置來進行任務測試。
具體的,由於需要根據任務設定檔來進行任務測試, 而測試的任務有可能之前已經進行過,因此會存在任務設定檔,在此情況下可以利用之前的任務設定檔來進行任務測試,而若之前進行過任務測試,其任務設定檔會存在指定的位置(可以基於待提交增量代碼的儲存路徑地址查找到),或者指定位置的父目錄所在位置,因此先在指定位置查找,若查找到,則根據任務設定檔進行任務測試;若沒有查找到,則在父目錄所在位置查找,也即在指定位置的上一層所在的位置進行查找,若查找到,則基於查找到的最新任務設定檔進行任務測試;若之前沒有進行過任務測試,也即不會存在任務設定檔,在此情況下,就可以基於通用配置來進行任務測試。
如此通過對待提交增量代碼進行對待提交增量代碼進行代碼審查以及任務測試,當代碼審查通過且任務測試通過時,確定對待提交增量代碼的檢測通過。
具體的,經過步驟102對待提交增量代碼進行檢測後,會有兩種結果,檢測通過或不通過,若檢測通過,則執行步驟103、若檢測不通過,則結束操作和/或進行檢測不通過告警。
步驟103、提交檢測通過的待提交增量代碼。
由於只會提交檢測通過的待提交增量代碼到所述代碼倉庫,因此具體的提交過程包括:判斷檢測通過後的待提交增量代碼是否存在多個;若判斷結果為是,判斷是否存在檢測通過後的多個待提交增量代碼對應於同一原始程式碼,且對應於同一原始程式碼 的檢測通過後的多個待提交增量代碼進行代碼修改的位置一致;若判斷結果為是,則確定對應同一個原始程式碼,且代碼修改的位置一致的多個檢測通過後的待提交增量代碼為存在衝突且檢測通過後的待提交增量代碼;基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估;按照評估得到的優先順序依序從高到低依次提交存在衝突且檢測通過後的待提交增量代碼到所述代碼倉庫。
具體的,由於可能出現同一原始程式碼可能被多個修改者同時修改,且修改的位置一致(具體為修改的代碼行數,例如修改都是第7行),這樣會產生多個待提交增量代碼,且多個待提交增量代碼的對應於同一原始程式碼,在此情況下,由於這多個待提交增量代碼之間是存在衝突的,在此情況下可以對多個待提交增量代碼進行優先順序評估,以確定優先順序的高低,最後基於優先順序的高低來確定提交的順序,在一個具體的實施例中,優先順序的評估因素可以包括對代碼進行修改的修改時間,代碼修改行數,以及代碼重要性;具體的,若其他兩個因素一致,修改時間越早,對應的優先順序越高;代碼重要性越高(也即修改後的代碼的影響程度越大),對應的優先順序越高;代碼修改行數越多,對應的優先順序越高;在此情況下,基於優先順序評估因素對多個存在衝突且檢測通過的待提交增量代碼進行優先順序評估,具體包括:基於影響程度對各個存在衝突且檢測通過的待提交增 量代碼的代碼重要性進行評估,以及獲取各個存在衝突且檢測通過的待提交增量代碼的修改時間和代碼修改行數;基於修改時間,代碼修改行數以及代碼重要性來對各個存在衝突且檢測通過的待提交增量代碼的優先順序進行評估;基於評估結果確定各個存在衝突且檢測通過的待提交增量代碼的優先順序;具體的,可以利用一個公式ΣP=(C,K,T)來進行評估,具體的,C為代碼修改行數,K為代碼重要性(具體體現為修改後的代碼的影響程度),T為時間因素,初始基準值為1,按照提交時間的倒序排序,T的取值按照2(n-1)遞增,以此通過這三個因素來對多個存在衝突且檢測通過後的待提交增量代碼的優先順序ΣP進行評估。
為了對本申請案進行進一步的說明,本申請案實施例二還公開了一種具體場景下的代碼提交,包括以下步驟;步驟1,Review Board(即審查板,屬於整個伺服器的一部分)獲取使用者修改完代碼後,通過RBT Client(RBT客戶端)上傳的修改後的代碼,具體,修改後的代碼請求對修改後的代碼進行審查的審查請求,Review Board為該請求分配一個審查ID(Review ID),並將該Review ID返回給RBT Client,以便RBT Client將該Review ID以及其他的修改後的代碼標識發送給Task Server(任務伺服器)。
步驟2、Review Board將修改後的代碼發送給多個審查者進行審查,並獲取審查者的審查結果(審查通過或審 查不通過),同時Task Server基於Review ID輪詢Review Board獲取審查結果,若審查結果為有2個或多於2個審查者的審查結果為通過,則可以確定代碼審查通過。
在具體的過程中,審查者在做完審查之後,給予審查通過的標記,一個審查者可以給出一個有效的+1 ship it標記,可以設置要求有+2的標記才算本次審查通過,由此通過查詢ship it來確定是否審查通過。
步驟3、Task Server獲取測試任務所需的設定檔,並將設定檔發送給CISE(Continuous Integration Servevice Engine,持續集成服務執行引擎),以便CISE基於設定檔來執行任務測試,並將測試結果返回給Task Server,Task Server在接收到測試結果後儲存在資料庫中。
Task Server基於代碼標識,例如差別檔,原始程式碼標識,版本伺服器等,復原修改後的代碼,當然,也可以直接獲取修改後的代碼,不過考慮到原代碼可能比較長,以復原的方式效率較高,節約了資源,在賦予了修改後的代碼後,查找與任務相關的設定檔(Yaml設定檔),其中,具體包括以下三種情況:一、首先從SVN/Git的腳本庫中,檢測指定位置是否存在Yaml設定檔,若存在,按照此設定檔執行整個任務;二、若指定位置不存在Yaml設定檔,首先根據SVN/Git地址,根據指定位置的父路徑(即只到trunk或 branches這一級目錄結構)在Task Server維護的配置庫中進行查找,如果存在對應父目錄的配置,則自動獲取父目錄下最新的規則配置作為此新加入任務的配置使用;三、對於不存在任何配置的任務,則從資料庫中獲取通用任務配置規則,以預設的執行規則進行處理。其中,預設配置規則是區分語言環境的,具體語言環境根據RBT Client傳遞的資訊獲取;具體的,任務中也包括編譯,具體的在準備編譯時,先獲取確定修改後的代碼的依賴代碼的變更情況,具體可以基於變更時間戳記來進行判斷,看是否一致,若一致,則說明未發生變更,基於makefile(其中儲存有修改後的代碼的標識與依賴代碼之間的關係)生成最新makefile的配置副本,將之前的依靠編譯生成依賴庫的操作替換為指定路徑的程式館檔,同時,動態更新Yaml設定檔(利用了makefile的配置副本,任務發送了變化),下載程式館檔到指定路徑,與makefile配置副本保持一致;對於發生變更的情況,則保持各配置項不變,按照依賴循序執行編譯構建過程;CISE任務執行結束後,將最新編譯生成的程式館檔上傳至OSS(Open Storage Service)雲端空間中,按照檔名+Unix時間戳記的形式存放,同時編譯生成的模組資訊和時間戳記(也即標識)會以JSON串的形式通過Save介面更新到資料庫中,作為後續任務執行的依據,JSON串data部分內容及格式如下:
步驟4、Task Server輪詢資料庫中的任務測試結果,若審查通過,則可以提交該修改後的代碼。
當然需要提交代碼時,在預提交的過程中,也即已經進行代碼審查通過,和任務測試通過,若發現針對該修改後的代碼對應的原始程式碼還有其他的代碼變更同步發生(也即多個代碼變更對應同一個原始程式碼,且進行修改的位置一致),且多個代碼變更也都是審查通過和任務測試通過的,針對該場景,本申請案從對代碼進行修改的修改時間(T)、變更複雜度(C)和關鍵路徑影響(K)三個因素綜合對比,其中,變更複雜度具體體現為代碼修改行數,代碼修改行數越多,變更複雜度越高;而關鍵路徑 影響則體現為代碼重要性,依據公式計算向量模長判斷優先順序:ΣP=(C,K,T),其中:變更複雜度C以代碼修改行數作為判斷依據;關鍵路徑影響以變更影響的方法個數作為判斷依據,變更影響的方法個數越多,對應的,體現為代碼重要性越高;對於時間因數T,則是靠前提交的任務取值較大其初始基準值為1,多個任務之間按照提交時間的倒序排序,T的取值按照2(n-1)遞增,從而保證靠前任務優先被提交;此處以對同一模組代碼的相關檔的兩個併發提交為實例進行說明,第一個提交任務的增量代碼行數為20,影響方法個數為2,T取值為2(基準值為1,倒序排列);第二個提交任務的增量代碼行數是20,影響方法個數為6,T取值為1。計算向量的模長的公式為,根據計算結果可以確定第二個提交任務的代碼優先被提交。
本申請案實施例還公開了一種代碼提交設備,如圖2所示,包括:獲取模組201,用於獲取預備向代碼倉庫提交的待提交增量代碼;檢測模組202,用於對所述待提交增量代碼進行檢測;提交模組203,用於提交檢測通過的待提交增量代碼到所述代碼倉庫。
所述檢測模組202,具體用於:對所述待提交增量代碼進行代碼審查; 對所述待提交增量代碼進行任務測試。
若所述代碼審查通過且所述任務測試通過,則確定對所述待提交增量代碼的檢測通過。
所述檢測模組202對所述待提交增量代碼進行代碼審查,具體包括:將所述待提交增量代碼發送給多個審查者進行審查;接收審查者回饋的審查結果;如審查結果為超過預設個數的審查者審查所述待提交增量代碼通過,則確定所述待提交增量代碼審查通過。
所述檢測模組202對所述待提交增量代碼進行任務測試,具體包括:對所述待提交增量代碼的依賴代碼執行編譯;在對依賴代碼執行編譯時進行指定任務的任務測試;在對依賴代碼編譯完成之後進行預設任務的任務測試;獲取指定任務與預設任務的任務測試結果;若任務測試結果為全部通過,則確定對所述待提交增量代碼的任務測試通過。
所述檢測模組202對所述待提交增量代碼的依賴代碼執行編譯,具體包括:監控所述待提交增量代碼的依賴代碼是否發生變化;編譯發生了變化的依賴代碼;提取沒有發生變化的依賴代碼對應的程式館檔到指定位置,以便在對所述待提交增量代碼進行編譯時,直接引 用所述程式館檔。
所述檢測模組202進行任務測試,具體包括:基於所述待提交增量代碼的儲存路徑地址在配置庫中指定位置查找任務設定檔;若在指定位置沒有查找到所述任務設定檔,則在所述指定位置的父目錄所在位置查找所述任務設定檔,並利用查找到的任務設定檔進行任務測試;若在父路徑所在位置查找到所述任務設定檔,提取查找到的最新的任務設定檔,並利用提取的最新的任務設定檔進行任務測試;若在父路徑所在位置未查找到所述任務設定檔,基於預設的通用配置來進行任務測試。
提交模組203,具體用於:判斷檢測通過後的待提交增量代碼是否存在多個;若判斷結果為是,判斷是否存在檢測通過後的多個待提交增量代碼對應於同一原始程式碼,且對應於同一原始程式碼的檢測通過後的多個待提交增量代碼進行代碼修改的位置一致;若判斷結果為是,則確定對應同一個原始程式碼,且代碼修改的位置一致的多個檢測通過後的待提交增量代碼為存在衝突且檢測通過後的待提交增量代碼;基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估;按照評估得到的優先順序依序從高到低依次提交存在 衝突且檢測通過後的待提交增量代碼到所述代碼倉庫。
所述優先順序評估因素包括對代碼進行修改的修改時間,代碼修改行數,以及代碼重要性;所述提交模組203提交模組基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估,具體包括:基於影響程度對各個存在衝突且檢測通過的待提交增量代碼的代碼重要性進行評估,以及獲取各個存在衝突且檢測通過的待提交增量代碼的修改時間和代碼修改行數;基於修改時間,代碼修改行數以及代碼重要性來對各個存在衝突且檢測通過的待提交增量代碼的優先順序進行評估;基於評估結果確定各個存在衝突且檢測通過的待提交增量代碼的優先順序。
與現有技術相比,本申請案中在獲取待提交增量代碼之後,會對待提交增量代碼進行檢測,只有再檢測通過後的待提交增量代碼才會提交,這樣使得代碼遞交後,保證了被提交代碼的準確性,且可以儘早發現問題,不會影響到其他需要利用該提交代碼的程式或者過程。
通過以上的實施方式的描述,本領域的技術人員可以清楚地瞭解到本申請案可以通過硬體實現,也可以借助軟體加必要的通用硬體平臺的方式來實現。基於這樣的理解,本申請案的技術方案可以以軟體產品的形式體現出來,該軟體產品可以儲存在一個非易失性儲存媒體(可以 是CD-ROM,U盤,移動硬碟等)中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)執行本申請案各個實施場景所述的方法。
本領域技術人員可以理解附圖只是一個較佳實施場景的示意圖,附圖中的模組或流程並不一定是實施本申請案所必須的。
本領域技術人員可以理解實施場景中的裝置中的模組可以按照實施場景描述進行分佈於實施場景的裝置中,也可以進行相應變化位於不同於本實施場景的一個或多個裝置中。上述實施場景的模組可以合併為一個模組,也可以進一步拆分成多個子模組。
上述本申請案序號僅僅為了描述,不代表實施場景的優劣。
以上公開的僅為本申請案的幾個具體實施場景,但是,本申請案並非局限於此,任何本領域的技術人員能思之的變化都應落入本申請案的保護範圍。
Claims (12)
- 一種代碼提交方法,其特徵在於,包括:獲取預備向代碼倉庫提交的待提交增量代碼;對所述待提交增量代碼進行檢測;提交檢測通過的待提交增量代碼到所述代碼倉庫,具體包括:判斷檢測通過後的待提交增量代碼是否存在多個;若判斷結果為是,判斷是否存在檢測通過後的多個待提交增量代碼對應於同一原始程式碼,且對應於同一原始程式碼的檢測通過後的多個待提交增量代碼進行代碼修改的位置一致;若判斷結果為是,則確定對應同一個原始程式碼,且代碼修改的位置一致的多個檢測通過後的待提交增量代碼為存在衝突且檢測通過後的待提交增量代碼;基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估;按照評估得到的優先順序依序從高到低依次提交存在衝突且檢測通過後的待提交增量代碼到所述代碼倉庫,其中,所述優先順序評估因素包括對代碼進行修改的修改時間,代碼修改行數,以及代碼重要性;所述基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估,具體包括:基於影響程度對各個存在衝突且檢測通過的待提交增量代碼的代碼重要性進行評估,以及獲取各個存在衝突且 檢測通過的待提交增量代碼的修改時間和代碼修改行數;基於修改時間,代碼修改行數以及代碼重要性來對各個存在衝突且檢測通過的待提交增量代碼的優先順序進行評估;基於評估結果確定各個存在衝突且檢測通過的待提交增量代碼的優先順序。
- 如申請專利範圍第1項所述的方法,其中,所述對所述待提交增量代碼進行檢測,具體包括:對所述待提交增量代碼進行代碼審查;對所述待提交增量代碼進行任務測試;若所述代碼審查通過且所述任務測試通過,則確定對所述待提交增量代碼的檢測通過。
- 如申請專利範圍第2項所述的方法,其中,所述對所述待提交增量代碼進行代碼審查,具體包括:將所述待提交增量代碼發送給多個審查者進行審查;接收審查者回饋的審查結果;如審查結果為超過預設個數的審查者審查所述待提交增量代碼通過,則確定所述待提交增量代碼審查通過。
- 如申請專利範圍第2項所述的方法,其中,所述對所述待提交增量代碼進行任務測試,具體包括:對所述待提交增量代碼的依賴代碼執行編譯;在對依賴代碼執行編譯時進行指定任務的任務測試;在對依賴代碼編譯完成之後進行預設任務的任務測試; 獲取指定任務與預設任務的任務測試結果;若任務測試結果為全部通過,則確定對所述待提交增量代碼的任務測試通過。
- 如申請專利範圍第4項所述的方法,其中,所述對所述待提交增量代碼的依賴代碼執行編譯,具體包括:監控所述待提交增量代碼的依賴代碼是否發生變化;編譯發生了變化的依賴代碼;提取沒有發生變化的依賴代碼對應的程式館檔到指定位置,以便在對所述待提交增量代碼進行編譯時,直接引用所述程式館檔。
- 如申請專利範圍第4項所述的方法,其中,進行任務測試,具體包括:基於所述待提交增量代碼的儲存路徑地址在配置庫中指定位置查找任務設定檔;若在指定位置沒有查找到所述任務設定檔,則在所述指定位置的父目錄所在位置查找所述任務設定檔,並利用查找到的任務設定檔進行任務測試;若在父路徑所在位置查找到所述任務設定檔,提取查找到的最新的任務設定檔,並利用提取的最新的任務設定檔進行任務測試;若在父路徑所在位置未查找到所述任務設定檔,基於預設的通用配置來進行任務測試。
- 一種代碼提交設備,其特徵在於,包括:獲取模組,用於獲取預備向代碼倉庫提交的待提交增 量代碼;檢測模組,用於對所述待提交增量代碼進行檢測;提交模組,用於提交檢測通過的待提交增量代碼到代碼倉庫,具體用於:判斷檢測通過後的待提交增量代碼是否存在多個;若判斷結果為是,判斷是否存在檢測通過後的多個待提交增量代碼對應於同一原始程式碼,且對應於同一原始程式碼的檢測通過後的多個待提交增量代碼進行代碼修改的位置一致;若判斷結果為是,則確定對應同一個原始程式碼,且代碼修改的位置一致的多個檢測通過後的待提交增量代碼為存在衝突且檢測通過後的待提交增量代碼;基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估;按照評估得到的優先順序依序從高到低依次提交存在衝突且檢測通過後的待提交增量代碼到所述代碼倉庫,其中,所述優先順序評估因素包括對代碼進行修改的修改時間,代碼修改行數,以及代碼重要性;所述提交模組基於優先順序評估因素對多個存在衝突且檢測通過後的待提交增量代碼進行優先順序評估,具體包括:基於影響程度對各個存在衝突且檢測通過的待提交增量代碼的代碼重要性進行評估,以及獲取各個存在衝突且檢測通過的待提交增量代碼的修改時間和代碼修改行數; 基於修改時間,代碼修改行數以及代碼重要性來對各個存在衝突且檢測通過的待提交增量代碼的優先順序進行評估;基於評估結果確定各個存在衝突且檢測通過的待提交增量代碼的優先順序。
- 如申請專利範圍第7項所述的設備,其中,所述檢測模組,具體用於:對所述待提交增量代碼進行代碼審查;對所述待提交增量代碼進行任務測試;若所述代碼審查通過且所述任務測試通過,則確定對所述待提交增量代碼的檢測通過。
- 如申請專利範圍第8項所述的設備,其中,所述檢測模組對所述待提交增量代碼進行代碼審查,具體包括:將所述待提交增量代碼發送給多個審查者進行審查;接收審查者回饋的審查結果;如審查結果為超過預設個數的審查者審查所述待提交增量代碼通過,則確定所述待提交增量代碼審查通過。
- 如申請專利範圍第8項所述的設備,其中,所述檢測模組對所述待提交增量代碼進行任務測試,具體包括:對所述待提交增量代碼的依賴代碼執行編譯;在對依賴代碼執行編譯時進行指定任務的任務測試;在對依賴代碼編譯完成之後進行預設任務的任務測 試;獲取指定任務與預設任務的任務測試結果;若任務測試結果為全部通過,則確定對所述待提交增量代碼的任務測試通過。
- 如申請專利範圍第10項所述的設備,其中,所述檢測模組對所述待提交增量代碼的依賴代碼執行編譯,具體包括:監控所述待提交增量代碼的依賴代碼是否發生變化;編譯發生了變化的依賴代碼;提取沒有發生變化的依賴代碼對應的程式館檔到指定位置,以便在對所述待提交增量代碼進行編譯時,直接引用所述程式館檔。
- 如申請專利範圍第10項所述的設備,其中,所述檢測模組進行任務測試,具體包括:基於所述待提交增量代碼的儲存路徑地址在配置庫中指定位置查找任務設定檔;若在指定位置沒有查找到所述任務設定檔,則在所述指定位置的父目錄所在位置查找所述任務設定檔,並利用查找到的任務設定檔進行任務測試;若在父路徑所在位置查找到所述任務設定檔,提取查找到的最新的任務設定檔,並利用提取的最新的任務設定檔進行任務測試;若在父路徑所在位置未查找到所述任務設定檔,基於預設的通用配置來進行任務測試。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106101938A TWI735511B (zh) | 2017-01-19 | 2017-01-19 | 代碼提交方法和設備 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106101938A TWI735511B (zh) | 2017-01-19 | 2017-01-19 | 代碼提交方法和設備 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201828053A TW201828053A (zh) | 2018-08-01 |
TWI735511B true TWI735511B (zh) | 2021-08-11 |
Family
ID=63960487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106101938A TWI735511B (zh) | 2017-01-19 | 2017-01-19 | 代碼提交方法和設備 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI735511B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI710896B (zh) * | 2019-01-14 | 2020-11-21 | 宏碁股份有限公司 | 整合雲端系統的方法及雲端系統 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200630891A (en) * | 2005-01-14 | 2006-09-01 | Microsoft Corp | Method and system for synchronizing multiple user revisions to a shared object |
CN101963911A (zh) * | 2010-09-29 | 2011-02-02 | 用友软件股份有限公司 | 补丁生成方法和装置 |
US20130152047A1 (en) * | 2011-11-22 | 2013-06-13 | Solano Labs, Inc | System for distributed software quality improvement |
CN103744678A (zh) * | 2014-01-14 | 2014-04-23 | 清华大学 | 基于寄存器传输语言确定静态函数调用关系的方法 |
CN104077140A (zh) * | 2014-07-04 | 2014-10-01 | 用友软件股份有限公司 | 用于持续集成的自动化编译方法和编译装置 |
CN105302533A (zh) * | 2014-07-25 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 代码同步方法和装置 |
-
2017
- 2017-01-19 TW TW106101938A patent/TWI735511B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200630891A (en) * | 2005-01-14 | 2006-09-01 | Microsoft Corp | Method and system for synchronizing multiple user revisions to a shared object |
CN101963911A (zh) * | 2010-09-29 | 2011-02-02 | 用友软件股份有限公司 | 补丁生成方法和装置 |
US20130152047A1 (en) * | 2011-11-22 | 2013-06-13 | Solano Labs, Inc | System for distributed software quality improvement |
CN103744678A (zh) * | 2014-01-14 | 2014-04-23 | 清华大学 | 基于寄存器传输语言确定静态函数调用关系的方法 |
CN104077140A (zh) * | 2014-07-04 | 2014-10-01 | 用友软件股份有限公司 | 用于持续集成的自动化编译方法和编译装置 |
CN105302533A (zh) * | 2014-07-25 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 代码同步方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
TW201828053A (zh) | 2018-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017036335A1 (zh) | 一种代码提交方法和设备 | |
US10949225B2 (en) | Automatic detection of user interface elements | |
US9824002B2 (en) | Tracking of code base and defect diagnostic coupling with automated triage | |
KR101989802B1 (ko) | 테스트 케이스를 이용하여 테스트를 수행하는 방법 및 장치 | |
US11662997B2 (en) | Systems and methods for software and developer management and evaluation | |
US8954930B2 (en) | System and method for reducing test effort by object risk analysis | |
US9703692B2 (en) | Development supporting system | |
CN107885660B (zh) | 基金系统自动化测试管理方法、装置、设备及存储介质 | |
US10509693B2 (en) | Method for identifying a cause for a failure of a test | |
US10185650B1 (en) | Testing service with control testing | |
US20160321586A1 (en) | Selecting tests for execution on a software product | |
CN111654495B (zh) | 用于确定流量产生来源的方法、装置、设备及存储介质 | |
Yang et al. | Vuldigger: A just-in-time and cost-aware tool for digging vulnerability-contributing changes | |
US10949333B1 (en) | Application maturity console | |
TWI735511B (zh) | 代碼提交方法和設備 | |
US11537414B2 (en) | Architecture mapping of applications | |
Sun et al. | Propagating bug fixes with fast subgraph matching | |
Lavoie et al. | A case study of TTCN-3 test scripts clone analysis in an industrial telecommunication setting | |
CN113031995B (zh) | 一种更新规则的方法、装置、存储介质以及电子设备 | |
Moghadam et al. | Resolving conflict and dependency in refactoring to a desired design | |
CN109558153B (zh) | 版本一致性确定方法、装置及系统 | |
JP7190246B2 (ja) | ソフトウェア不具合予測装置 | |
Pathania et al. | Role of test case prioritization based on regression testing using clustering | |
CN112181855A (zh) | 一种基于api的自动化测试方法、装置及计算机设备 | |
US20230222051A1 (en) | Method, System, and Computer Program Product for Automatic Selection of Tests for Software System Regression Testing Using Machine Learning |