本技術(shù)涉及計算機,尤其涉及一種基于代碼審查方法、裝置、電子設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、隨著軟件項目的復(fù)雜性增加,確保代碼質(zhì)量變得愈發(fā)重要。代碼審查是一種軟件開發(fā)中的質(zhì)量保證實踐,可以在早期發(fā)現(xiàn)潛在問題,從而降低后期維護成本。
2、目前,普遍采用代碼審查工具來完成代碼審查的過程。許多代碼審查工具集成了自動化功能,可以在待審查代碼提交時自動運行,檢查待審查代碼中的潛在問題,如自動檢測重復(fù)代碼、格式問題或潛在的安全漏洞等。進一步的,代碼審查工具還可以自動生成審查報告,開發(fā)者可以通過審查報告查看代碼中的問題,如錯誤、警告和建議。
3、然而,通過代碼審查工具的自動化功能進行代碼審查不夠靈活,無法滿足不同待審查代碼的不同定制需求。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供一種代碼審查方法、裝置、電子設(shè)備及存儲介質(zhì),用以解決現(xiàn)有技術(shù)中代碼審查流程的定制化能力欠缺的技術(shù)問題。
2、第一方面,本技術(shù)提供一種代碼審查方法,包括:
3、獲取目標(biāo)用戶上傳的待審查代碼,以及所述待審查代碼的審查目標(biāo);基于所述審查目標(biāo)確定所述待審查代碼的審查關(guān)注點;
4、根據(jù)所述審查關(guān)注點,基于預(yù)設(shè)算法為所述待審查代碼創(chuàng)建相應(yīng)的代碼審查流程;其中,所述代碼審查流程包括多個代碼審查階段;
5、確定所述代碼審查階段的執(zhí)行順序,基于所述執(zhí)行順序依次執(zhí)行所述代碼審查階段,以對所述待審查代碼進行代碼審查。
6、可選的,所述確定所述代碼審查階段的執(zhí)行順序,基于所述執(zhí)行順序依次執(zhí)行所述代碼審查階段,包括:
7、確定每個代碼審查階段對應(yīng)的執(zhí)行序號;其中,所述執(zhí)行序號表征按照預(yù)設(shè)順序執(zhí)行所述代碼審查階段;
8、按照從小到大的順序?qū)λ鰣?zhí)行序號進行排序,并基于排序結(jié)果依次執(zhí)行所述執(zhí)行序號對應(yīng)的代碼審查階段;其中,排在第一位的執(zhí)行序號對應(yīng)的代碼審查階段為第一個執(zhí)行,排在最后一位的執(zhí)行序號對應(yīng)的代碼審查階段為最后一個執(zhí)行。
9、可選的,所述基于排序結(jié)果依次執(zhí)行所述執(zhí)行序號對應(yīng)的代碼審查階段,包括:
10、獲取等待執(zhí)行的第一目標(biāo)代碼審查階段;
11、判斷所述第一目標(biāo)代碼審查階段是否配置有預(yù)設(shè)審查規(guī)則;若是,則獲取所述第一目標(biāo)代碼審查階段的審查建議信息;
12、判斷所述審查建議信息是否與所述預(yù)設(shè)審查規(guī)則匹配;若匹配,則基于所述審查建議信息執(zhí)行所述第一目標(biāo)代碼審查階段;
13、若不匹配,則跳過所述第一目標(biāo)代碼審查階段,并基于所述執(zhí)行序號的排序結(jié)果依次執(zhí)行排在所述第一目標(biāo)代碼審查階段之后的代碼審查階段。
14、可選的,所述方法還包括:
15、獲取當(dāng)前正在執(zhí)行的第二目標(biāo)代碼審查階段,并確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果;其中,所述階段審查結(jié)果包括階段審查通過或者階段審查未通過;
16、若所述階段審查結(jié)果為階段審查未通過,則將所述待審查代碼的代碼審查結(jié)果確定為代碼審查失敗,并結(jié)束所述代碼審查流程;
17、若所述階段審查結(jié)果為階段審查通過,則判斷所述第二目標(biāo)代碼審查階段對應(yīng)的執(zhí)行序號是否排在最后一位;
18、若否,則基于所述執(zhí)行序號的排序結(jié)果執(zhí)行排在所述第二目標(biāo)代碼審查階段后一位的代碼審查階段;若是,則將所述待審查代碼的代碼審查結(jié)果確定為代碼審查成功,并結(jié)束所述代碼審查流程。
19、可選的,所述確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果,包括:
20、確定所述第二目標(biāo)代碼審查階段包括的審查人列表;
21、為所述審查人列表中的每個審查人創(chuàng)建相應(yīng)的代碼審查任務(wù),并獲取每個審查人反饋的每個代碼審查任務(wù)的任務(wù)審查結(jié)果;其中,所述任務(wù)審查結(jié)果包括任務(wù)審查通過或者任務(wù)審查未通過;
22、基于所述任務(wù)審查結(jié)果確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果。
23、可選的,所述基于所述任務(wù)審查結(jié)果確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果,包括:
24、確定所述第二目標(biāo)代碼審查階段包括的所有代碼審查任務(wù)的第一數(shù)量,以及任務(wù)審查結(jié)果為任務(wù)審查通過的代碼審查任務(wù)的第二數(shù)量;
25、將所述第二數(shù)量和所述第一數(shù)量的比值確定為所述第二目標(biāo)代碼審查階段的審查通過率,判斷所述審查通過率是否大于或等于預(yù)設(shè)閾值;
26、若是,則確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果為階段審查通過;若否,則確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果為階段審查未通過。
27、可選的,所述方法還包括:
28、若所述待審查代碼的代碼審查結(jié)果為代碼審查成功,則將所述待審查代碼合并至目標(biāo)軟件項目的主代碼。
29、第二方面,本技術(shù)提供一種代碼審查裝置,包括:
30、獲取模塊,用于獲取目標(biāo)用戶上傳的待審查代碼,以及所述待審查代碼的審查目標(biāo);
31、確定模塊,用于基于所述審查目標(biāo)確定所述待審查代碼的關(guān)注點;
32、創(chuàng)建模塊,用于根據(jù)所述審查關(guān)注點,基于預(yù)設(shè)算法為所述待審查代碼創(chuàng)建相應(yīng)的代碼審查流程;其中,所述代碼審查流程包括多個代碼審查階段;
33、所述確定模塊,還用于確定所述代碼審查階段的執(zhí)行順序;
34、審查模塊,用于基于所述執(zhí)行順序依次執(zhí)行所述代碼審查階段,以對所述代碼審查階段進行代碼審查。
35、可選的,所述審查模塊還包括:排序模塊、執(zhí)行模塊,
36、所述確定模塊,還用于確定每個代碼審查階段對應(yīng)的執(zhí)行序號;其中,所述執(zhí)行序號表征按照預(yù)設(shè)順序執(zhí)行所述代碼審查階段;
37、所述排序模塊,用于按照從小到大的順序?qū)λ鰣?zhí)行序號進行排序;
38、所述執(zhí)行模塊,用于基于排序結(jié)果依次執(zhí)行所述執(zhí)行序號對應(yīng)的代碼審查階段;其中,排在第一位的執(zhí)行序號對應(yīng)的代碼審查階段為第一個執(zhí)行,排在最后一位的執(zhí)行序號對應(yīng)的代碼審查階段為最后一個執(zhí)行。
39、可選的,所述執(zhí)行模塊還包括:判斷模塊,
40、所述獲取模塊,用于獲取等待執(zhí)行的第一目標(biāo)代碼審查階段;
41、所述判斷模塊,用于判斷所述第一目標(biāo)代碼審查階段是否配置有預(yù)設(shè)審查規(guī)則;
42、所述獲取模塊,還用于若是,則獲取所述第一目標(biāo)代碼審查階段的審查建議信息;
43、所述判斷模塊,還用于判斷所述審查建議信息是否與所述預(yù)設(shè)審查規(guī)則匹配;
44、所述執(zhí)行模塊,還用于若匹配,則基于所述審查建議信息執(zhí)行所述第一目標(biāo)代碼審查階段;若不匹配,則跳過所述第一目標(biāo)代碼審查階段,并基于所述執(zhí)行序號的排序結(jié)果依次執(zhí)行排在所述第一目標(biāo)代碼審查階段之后的代碼審查階段。
45、可選的,所述獲取模塊,還用于獲取當(dāng)前正在執(zhí)行的第二目標(biāo)代碼審查階段;
46、所述確定模塊,還用于確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果;其中,所述階段審查結(jié)果包括階段審查通過或者階段審查未通過;若所述階段審查結(jié)果為階段審查未通過,則將所述待審查代碼的代碼審查結(jié)果確定為代碼審查失敗,并結(jié)束所述代碼審查流程;
47、所述判斷模塊,還用于若所述階段審查結(jié)果為階段審查通過,則判斷所述第二目標(biāo)代碼審查階段對應(yīng)的執(zhí)行序號是否排在最后一位;
48、所述執(zhí)行模塊,還用于若否,則基于所述執(zhí)行序號的排序結(jié)果執(zhí)行排在所述第二目標(biāo)代碼審查階段后一位的代碼審查階段;
49、所述確定模塊,還用于若是,則將所述待審查代碼的代碼審查結(jié)果確定為代碼審查成功,并結(jié)束所述代碼審查流程。
50、可選的,所述確定模塊,還用于確定所述第二目標(biāo)代碼審查階段包括的審查人列表;
51、所述創(chuàng)建模塊,還用于為所述審查人列表中的每個審查人創(chuàng)建相應(yīng)的代碼審查任務(wù);
52、所述獲取模塊,還用于獲取每個審查人反饋的每個代碼審查任務(wù)的任務(wù)審查結(jié)果;其中,所述任務(wù)審查結(jié)果包括任務(wù)審查通過或者任務(wù)審查未通過;
53、所述確定模塊,還用于基于所述任務(wù)審查結(jié)果確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果。
54、可選的,所述確定模塊,還用于確定所述第二目標(biāo)代碼審查階段包括的所有代碼審查任務(wù)的第一數(shù)量,以及任務(wù)審查結(jié)果為任務(wù)審查通過的代碼審查任務(wù)的第二數(shù)量;將所述第二數(shù)量和所述第一數(shù)量的比值確定為所述第二目標(biāo)代碼審查階段的審查通過率;
55、所述判斷模塊,還用于判斷所述審查通過率是否大于或等于預(yù)設(shè)閾值;
56、所述確定模塊,還用于若是,則確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果為階段審查通過;若否,則確定所述第二目標(biāo)代碼審查階段的階段審查結(jié)果為階段審查未通過。
57、可選的,該代碼審查裝置還包括:合并模塊,用于若所述待審查代碼的代碼審查結(jié)果為代碼審查成功,則將所述待審查代碼合并至目標(biāo)軟件項目的主代碼。
58、第三方面,本技術(shù)提供一種電子設(shè)備,包括:
59、存儲器和處理器;
60、其中,所述存儲器存儲計算機執(zhí)行指令;
61、所述處理器執(zhí)行所述存儲器存儲的計算機執(zhí)行指令,以實現(xiàn)如上述第一方面以及各種可能的實現(xiàn)方式所述的代碼審查方法。
62、第四方面,本技術(shù)提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有計算機執(zhí)行指令,所述計算機執(zhí)行指令被處理器執(zhí)行時用于實現(xiàn)如上述第一方面以及各種可能的實現(xiàn)方式所述的代碼審查方法。
63、第五方面,本技術(shù)提供一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述第一方面以及各種可能的實現(xiàn)方式所述的代碼審查方法。
64、本技術(shù)提供的代碼審查方法、裝置、電子設(shè)備及存儲介質(zhì),獲取目標(biāo)用戶上傳的待審查代碼,以及待審查代碼的審查目標(biāo),之后,基于審查目標(biāo)確定待審查代碼的審查關(guān)注點。根據(jù)審查關(guān)注點,通過預(yù)設(shè)算法為待審查代碼創(chuàng)建相應(yīng)的代碼審查流程,實現(xiàn)了為不同的待審查代碼配置特定的代碼審查流程,從而滿足了不同項目對代碼審查流程的定制化需求。由于代碼審查流程包括多個代碼審查階段,接下來,確定代碼審查階段的執(zhí)行順序,基于執(zhí)行順序依次執(zhí)行代碼審查階段,以對待審查代碼進行代碼審查。通過設(shè)計以代碼審查階段為基礎(chǔ)單元的代碼審查流程,使代碼審查流程可以根據(jù)代碼審查階段的執(zhí)行順序進行動態(tài)調(diào)整,解決了代碼審查流程編排不靈活和流程固化的問題,增強了代碼審查流程的系統(tǒng)性和靈活性。