本發(fā)明涉及一種代碼的檢測方法,具體是指一種自動化軟件代碼檢測方法。
背景技術(shù):
現(xiàn)有技術(shù)中的代碼檢測方案都是由人工來操作代碼審查工具的,并通過人為的操作來檢索代碼庫并人為的去查看代碼中的錯(cuò)誤的內(nèi)容和不規(guī)范的內(nèi)容。該代碼檢測方案強(qiáng)調(diào)了人為的主動性,但卻忽視了自動化構(gòu)建觸發(fā)。
現(xiàn)有的代碼檢測方案忽視了代碼檢測的持續(xù)性,同時(shí)也沒有提供相應(yīng)的審查結(jié)果的匯總報(bào)告展示。若一個(gè)項(xiàng)目有很多工程以及很多代碼版本分支,現(xiàn)有的方案大多需要人為的多次操作審查工具,并手動匯集顯示審查的結(jié)果,如此便會消耗大量的開發(fā)人力以及時(shí)間資源,大大加重了企業(yè)的負(fù)擔(dān),不利于提高企業(yè)的發(fā)展。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服上述問題,提供一種自動化軟件代碼檢測方法,能夠合理的利用的服務(wù)器資源,每天能夠自行定時(shí)完成檢測的過程,無需工作人員再去手動的檢測,大大提高了人力資源的利用率。
本發(fā)明的目的通過下述技術(shù)方案實(shí)現(xiàn):
一種自動化軟件代碼檢測方法,包括以下步驟:
(1)代碼數(shù)據(jù)的編寫與存儲,根據(jù)相應(yīng)的project及其release編寫代碼并通過gitlab服務(wù)器接收該代碼的數(shù)據(jù),并記錄與代碼對應(yīng)的project、release以及commitid;
(2)通過jenkins平臺對代碼數(shù)據(jù)進(jìn)行預(yù)處理,并根據(jù)預(yù)處理的結(jié)果選擇結(jié)束本次檢測或者進(jìn)入步驟(3);
(3)對代碼進(jìn)行檢測;
(4)對代碼的檢測結(jié)果進(jìn)行反饋。
步驟(2)中預(yù)處理的具體步驟為:
(21)常啟的jenkins平臺通過gitlab服務(wù)器的接口遍歷gitlab服務(wù)器中所有project及其所有release的代碼,并獲取每個(gè)代碼最后一次提交的commitid;
(22)jenkins平臺將每個(gè)最后一次提交的代碼的commitid與該jenkins平臺在本地存放的data文本庫中對應(yīng)代碼的commitid進(jìn)行對比;
(23)若所有最后提交的代碼的commitid均與該jenkins平臺在本地存放的data文本庫中對應(yīng)代碼的commitid一致,則結(jié)束本次檢測;若有最后提交的代碼的commitid與該jenkins平臺在本地存放的data文本庫中對應(yīng)代碼的commitid不一致,則將所有不一致的代碼的commitid覆蓋到本地存放的data文本庫中,并將所有不一致的代碼的project及其release保存在trigger-list.txt文檔中,并進(jìn)入步驟(3)。
步驟(3)中檢測的具體步驟為:
(31)jenkins平臺啟動sonar工具并讀取trigger-list.txt文檔,從而獲取該trigger-list.txt文檔中記錄的相應(yīng)project及其release的代碼,依次執(zhí)行帶sonar工具插件的單元測試,完成代碼靜態(tài)檢測任務(wù)構(gòu)建;
(32)將相應(yīng)project及其release的代碼的檢測數(shù)據(jù)上傳至sonar服務(wù)器中。
步驟(4)中,jenkins平臺通過sonar工具的接口讀取步驟(32)中相應(yīng)project及其release的代碼的檢測數(shù)據(jù),并將所有的代碼的檢測數(shù)據(jù)進(jìn)行匯總與展示,進(jìn)而完成了代碼的檢測結(jié)果的反饋。
本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)及有益效果:
(1)本發(fā)明擁有高擴(kuò)展性,能夠直接接入單元測試的測試用例并在一次構(gòu)建中執(zhí)行,無二次開發(fā)成本。
(2)本發(fā)明能夠每天晚上或凌晨在服務(wù)器的空余時(shí)間自行的完成相應(yīng)的檢測過程,合理的利用的服務(wù)器資源,降低了服務(wù)器資源的浪費(fèi),也很好的避免檢測過程與工作人員的工作發(fā)生沖突。
(3)本發(fā)明擁有高度的自動化,每天能夠自行定時(shí)完成檢測的過程,無需工作人員再去手動的檢測,大大提高了人力資源的利用率,降低了工作人員的工作量,大大提高了工作人員的工作效率以及對時(shí)間的利用率。
具體實(shí)施方式
下面結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)說明,但本發(fā)明的實(shí)施方式不限于此。
實(shí)施例1
一種自動化軟件代碼檢測方法,包括以下步驟:
(1)代碼數(shù)據(jù)的編寫與存儲,根據(jù)相應(yīng)的project及其release編寫代碼并通過gitlab服務(wù)器接收該代碼的數(shù)據(jù),并記錄與代碼對應(yīng)的project、release以及commitid。
該代碼的編寫工作主要由相關(guān)的工作人員在工作日的白天完成,而完成編寫后的代碼則由完成的工作人員上傳到專門用于存放代碼的gitlab服務(wù)器中進(jìn)行保存。
(2)通過jenkins平臺對代碼數(shù)據(jù)進(jìn)行預(yù)處理,并根據(jù)預(yù)處理的結(jié)果選擇結(jié)束本次檢測或者進(jìn)入步驟(3);
其具體的步驟為:
(21)常啟的jenkins平臺通過gitlab服務(wù)器的接口遍歷gitlab服務(wù)器中所有project及其所有release的代碼,并獲取每個(gè)代碼最后一次提交的commitid;
(22)jenkins平臺將每個(gè)最后一次提交的代碼的commitid與該jenkins平臺在本地存放的data文本庫中對應(yīng)代碼的commitid進(jìn)行對比;
(23)若所有最后提交的代碼的commitid均與該jenkins平臺在本地存放的data文本庫中對應(yīng)代碼的commitid一致,則結(jié)束本次檢測;若有最后提交的代碼的commitid與該jenkins平臺在本地存放的data文本庫中對應(yīng)代碼的commitid不一致,則將所有不一致的代碼的commitid覆蓋到本地存放的data文本庫中,并將所有不一致的代碼的project及其release保存在trigger-list.txt文檔中,并進(jìn)入步驟(3);
(3)對代碼進(jìn)行檢測:
(31)jenkins平臺啟動sonar工具并讀取trigger-list.txt文檔,從而獲取該trigger-list.txt文檔中記錄的相應(yīng)project及其release的代碼,依次執(zhí)行帶sonar工具插件的單元測試,完成代碼靜態(tài)檢測任務(wù)構(gòu)建;
(32)將相應(yīng)project及其release的代碼的檢測數(shù)據(jù)上傳至sonar服務(wù)器中。
(4)對代碼的檢測結(jié)果進(jìn)行反饋:
jenkins平臺通過sonar工具的接口讀取步驟(32)中相應(yīng)project及其release的代碼的檢測數(shù)據(jù),并將所有的代碼的檢測數(shù)據(jù)進(jìn)行匯總與展示,進(jìn)而完成了代碼的檢測結(jié)果的反饋。
為了提高使用效果,jenkins平臺還可以根據(jù)實(shí)際的展示情況將相應(yīng)的結(jié)果反饋到相應(yīng)的工作人員的計(jì)算機(jī)中,很好的避免了工作人員自行查閱展示結(jié)果的過程,進(jìn)一步提高了工作人員的工作效率。
步驟(2)、(3)和(4)主要由jenkins平臺在夜晚或凌晨完成,很好的與代碼的編寫交錯(cuò)開來,以更加充分的利用時(shí)間。如此便能很好的避免在工作人員正常工作時(shí)jenkins平臺占用服務(wù)器資源,提高了服務(wù)器的利用率,同時(shí)還更好的降低了企業(yè)的成本。
如上所述,便可很好的實(shí)現(xiàn)本發(fā)明。