【技術(shù)領(lǐng)域】
本申請涉及軟件技術(shù)領(lǐng)域,尤其涉及一種代碼處理方法及裝置。
背景技術(shù):
隨著計算機及軟件技術(shù)的發(fā)展,應(yīng)用種類越來越多,應(yīng)用規(guī)模越來越大。一個應(yīng)用一般由多個業(yè)務(wù)功能,這些業(yè)務(wù)功能依賴于計算機語言實現(xiàn)的代碼實現(xiàn)。
在實際應(yīng)用中,由于多種原因,例如需要優(yōu)化業(yè)務(wù)功能、代碼發(fā)生錯誤等,需要對應(yīng)用的代碼進行更新。在對代碼更新時,有必要了解代碼更新會影響到哪些業(yè)務(wù),以便判斷代碼更新的潛在風險。
由于代碼和業(yè)務(wù)功能處于相對割離的狀態(tài),所以現(xiàn)有方法一般是經(jīng)驗豐富的開發(fā)人員或者質(zhì)量保證(qualityassurance,qa)人員憑借自己對代碼與業(yè)務(wù)功能的熟悉,相對主觀的確定代碼更新會影響到哪些業(yè)務(wù)功能。現(xiàn)有技術(shù)依賴于人的主觀判斷,無法精確確定代碼更新會影響到哪些業(yè)務(wù)功能。
技術(shù)實現(xiàn)要素:
本申請的多個方面提供一種代碼處理方法及裝置,用以更加精確的確定代碼更新會影響到的業(yè)務(wù)功能,進而有利于準確判斷代碼更新的潛在風險。
本申請的一方面,提供一種代碼處理方法,包括:
確定與目標應(yīng)用代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,所述目標應(yīng)用代碼是原應(yīng)用代碼更新后的應(yīng)用代碼;
確定所述影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法;
根據(jù)預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,確定所述目標頂 層方法對應(yīng)的業(yè)務(wù)功能作為所述變更代碼影響到的業(yè)務(wù)功能。
本申請的另一方面,提供一種代碼處理裝置,包括:
目標鏈路確定模塊,用于確定與目標應(yīng)用代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,所述目標應(yīng)用代碼是原應(yīng)用代碼更新后的應(yīng)用代碼;
目標方法確定模塊,用于確定所述影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法;
目標業(yè)務(wù)確定模塊,用于根據(jù)預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,確定所述目標頂層方法對應(yīng)的業(yè)務(wù)功能作為所述變更代碼影響到的業(yè)務(wù)功能。
在本申請中,原應(yīng)用代碼更新后變?yōu)槟繕藨?yīng)用代碼,確定與目標應(yīng)用代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,進而確定影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法,然后基于預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,確定目標頂層方法對應(yīng)的業(yè)務(wù)功能作為變更代碼影響到的業(yè)務(wù)功能。由于這種頂層方法一般都是業(yè)務(wù)的起始點,是應(yīng)用代碼中業(yè)務(wù)屬性最重的地方,因此與人為主管判斷相比,本申請根據(jù)與變更代碼有關(guān)的頂層方法,可以更加準確的確定變更代碼影響到的業(yè)務(wù)功能,進而有利于準確判斷代碼更新的潛在風險。
【附圖說明】
為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請一實施例提供的代碼處理方法的流程示意圖;
圖2為本申請另一實施例提供的方法之間的調(diào)用關(guān)系、頂層方法以及業(yè) 務(wù)功能之間的關(guān)系示意圖;
圖3為本申請又一實施例提供的代碼處理裝置的結(jié)構(gòu)示意圖;
圖4為本申請又一實施例提供的代碼處理裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
為使本申請實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖1為本申請一實施例提供的代碼處理方法的流程示意圖。如圖1所示,該方法包括:
101、確定與目標應(yīng)用代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,所述目標應(yīng)用代碼是原應(yīng)用代碼更新后的應(yīng)用代碼。
102、確定影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法。
103、根據(jù)預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,確定目標頂層方法對應(yīng)的業(yè)務(wù)功能作為變更代碼影響到的業(yè)務(wù)功能。
本實施例提供一種代碼處理方法,可由代碼處理裝置來執(zhí)行,用以更加準確的確定變更代碼影響到的業(yè)務(wù)功能,為準確判斷代碼更新的潛在風險提供條件。
在實際應(yīng)用中,由于優(yōu)化業(yè)務(wù)功能、代碼錯誤等原因,經(jīng)常需要對應(yīng)用代碼進行更新。為便于描述,本實施例將更新前的應(yīng)用代碼稱為原應(yīng)用代碼,將更新后的應(yīng)用代碼稱為目標應(yīng)用代碼。也就是說,目標應(yīng)用代碼是原應(yīng)用代碼更新后的代碼。
具體的,代碼處理裝置可以將目標應(yīng)用代碼與原應(yīng)用代碼進行比較,從而確定目標應(yīng)用代碼中不同于原應(yīng)用代碼的代碼部分,將這部分代碼稱為變 更代碼(或者也可以稱為變更點)。需要說明的是,本實施例并不限定變更代碼的位置、形式等。例如,變更代碼可以是某個方法,或某個方法的部分。
代碼本身是存在調(diào)用關(guān)系的,完成一項業(yè)務(wù)功能需要代碼方法之間相互調(diào)用。但是這種調(diào)用關(guān)系有源頭也有截止,總有一個方法是頭部,即沒有被任何其它方法調(diào)用,也勢必有一個方法是尾部,即它不調(diào)用任何其它方法。在本實施例中,將從頭部方法到尾部方法之間的調(diào)用關(guān)系稱為調(diào)用關(guān)系鏈路,一條調(diào)用關(guān)系鏈路上包括存在調(diào)用關(guān)系的多個方法。
在確定目標應(yīng)用代碼中的變更代碼之后,代碼處理裝置確定與變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,簡單來說,就是確定被變更代碼影響到的調(diào)用關(guān)系鏈路,也就是變更代碼所屬的方法所在的調(diào)用關(guān)系鏈路。其中,被變更代碼影響到的調(diào)用關(guān)系鏈路(即影響鏈路)可能是一條,也可能是多條。若影響鏈路為多條,則對每條影響鏈路的處理方式均相同。
可選的,上述步驟101,即確定與目標代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路的一種實施方式包括:
代碼處理裝置對目標應(yīng)用代碼中方法之間的調(diào)用關(guān)系進行分析,以確定目標應(yīng)用代碼包含的調(diào)用關(guān)系鏈路,為便于區(qū)分,將這里目標應(yīng)用代碼包含的調(diào)用關(guān)系鏈路稱為目標調(diào)用關(guān)系鏈路;然后,從目標調(diào)用關(guān)系鏈路中,確定包含變更代碼所屬的方法的目標調(diào)用關(guān)系鏈路作為影響鏈路。
可選的,考慮到計算機語言編寫的代碼源文件一般無法直接體現(xiàn)方法之間的調(diào)用關(guān)系,為了能夠更加快速的對代碼中方法之間的調(diào)用關(guān)系進行分析,代碼處理裝置可以對目標應(yīng)用代碼進行編譯,以獲得編譯代碼,為便于區(qū)分將這里的編譯代碼稱為目標編譯代碼;然后,對目標編譯代碼中方法之間的調(diào)用關(guān)系進行分析,以確定目標調(diào)用關(guān)系鏈路。之后,代碼處理裝置從目標調(diào)用關(guān)系鏈路中,確定包含變更代碼所屬的方法的目標調(diào)用關(guān)系鏈路作為影響鏈路。這樣可以提高調(diào)用關(guān)系分析的效率,有利于提高整個方法的執(zhí)行效率。
值得說明的是,雖然代碼源文件一般無法直接體現(xiàn)方法之間的調(diào)用關(guān) 系,但在代碼源文件中確實存在方法之間的調(diào)用關(guān)系,所以并不排除采用特殊方式直接對代碼源文件進行分析從而獲取調(diào)用關(guān)系鏈路。也就是說,代碼處理裝置也可以直接對目標應(yīng)用代碼進行分析,以確定目標調(diào)用關(guān)系鏈路。
進一步,考慮到每個業(yè)務(wù)功能在通過代碼實現(xiàn)時,都會從一個方法開始,這個方法不被任何其它方法調(diào)用,即頭部方法,而這個方法是業(yè)務(wù)的起始點,是應(yīng)用代碼中業(yè)務(wù)屬性最重的地方,能夠反應(yīng)業(yè)務(wù)功能。在本實施例中,將這種方法稱為頂層方法。也就是說,頂層方法可以反應(yīng)業(yè)務(wù)功能。
基于上述分析,代碼處理裝置在確定影響鏈路之后,可以確定影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法。由于目標頂層方法是受變更代碼影響的調(diào)用關(guān)系鏈路上的頂層方法,所以代碼處理裝置可以確定目標頂層方法所對應(yīng)的業(yè)務(wù)功能作為變更代碼影響到的業(yè)務(wù)功能。
但是實際應(yīng)用中,應(yīng)用代碼與業(yè)務(wù)功能之間是隔離的,所以無法通過頂層方法確定對應(yīng)的業(yè)務(wù)功能。如果能夠分析出應(yīng)用代碼中的頂層方法,并預(yù)先建立頂層方法與其對應(yīng)的業(yè)務(wù)功能之間的對應(yīng)關(guān)系,那么在應(yīng)用代碼發(fā)生變化時,就可以通過分析出變更代碼影響到的頂層方法來確定變更代碼影響到的業(yè)務(wù)功能,而且由于不受人為主觀因素的限制,準確度更高。
基于上述分析,代碼處理裝置預(yù)先基于原應(yīng)用代碼分析出代碼中的頂層方法,并建立頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系。基于預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,代碼處理裝置可以將目標頂層方法在該對應(yīng)關(guān)系中進行匹配,獲取目標頂層方法對應(yīng)的業(yè)務(wù)功能,將所獲取的目標頂層方法對應(yīng)的業(yè)務(wù)功能作為變更代碼影響到的業(yè)務(wù)功能。
其中,上述預(yù)先建立頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系的實施方式包括:
代碼處理裝置對原應(yīng)用代碼中方法之間的調(diào)用關(guān)系進行分析,以確定原應(yīng)用代碼包含的調(diào)用關(guān)系鏈路,為便于區(qū)分,將這里的調(diào)用關(guān)系鏈路稱為原調(diào)用關(guān)系鏈路;然后,確定原調(diào)用關(guān)系鏈路上不被任何方法調(diào)用的方法作為頂層方法;根據(jù)頂層方法表達的業(yè)務(wù)含義,確定頂層方法對應(yīng)的業(yè)務(wù)功能; 之后,建立頂層方法與頂層方法對應(yīng)的業(yè)務(wù)功能之間的對應(yīng)關(guān)系。
以某種應(yīng)用為例,一種應(yīng)用代碼中方法之間的調(diào)用關(guān)系、頂層方法以及業(yè)務(wù)功能之間的關(guān)系如圖2所示。在圖2中,最上面的每個三角形表示該應(yīng)用中的一個業(yè)務(wù)功能,中間和最下面表示應(yīng)用代碼中方法之間的調(diào)用關(guān)系,中間的圓圈表示應(yīng)用代碼中的頂層方法,最下面的方框表示應(yīng)用代碼中的非頂層方法,圓圈以及方框之間帶箭頭的連線表示調(diào)用關(guān)系。
可選的,考慮到計算機語言編寫的代碼源文件一般無法直接體現(xiàn)方法之間的調(diào)用關(guān)系,為了能夠更加快速的對代碼中方法之間的調(diào)用關(guān)系進行分析,代碼處理裝置可以對原應(yīng)用代碼進行編譯,以獲得編譯代碼,為便于區(qū)分將這里的編譯代碼稱為原編譯代碼;然后,對原編譯代碼中方法之間的調(diào)用關(guān)系進行分析,以確定原調(diào)用關(guān)系鏈路。這樣可以提高調(diào)用關(guān)系分析的效率,有利于提高整個方法的執(zhí)行效率。
值得說明的是,雖然代碼源文件一般無法直接體現(xiàn)方法之間的調(diào)用關(guān)系,但在代碼源文件中確實存在方法之間的調(diào)用關(guān)系,所以并不排除采用特殊方式直接對代碼源文件進行分析從而獲取調(diào)用關(guān)系鏈路。也就是說,代碼處理裝置也可以直接對原應(yīng)用代碼進行分析,以確定原調(diào)用關(guān)系鏈路。
由上述分析可知,本實施例以原應(yīng)用代碼為基礎(chǔ),預(yù)先建立頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,在對目標應(yīng)用代碼進行處理過程中,確定與目標應(yīng)用代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,進而確定影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法,然后基于預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,確定目標頂層方法對應(yīng)的業(yè)務(wù)功能作為變更代碼影響到的業(yè)務(wù)功能。由于這種頂層方法一般都是業(yè)務(wù)的起始點,是應(yīng)用代碼中業(yè)務(wù)屬性最重的地方,因此與人為主管判斷相比,本實施例根據(jù)與變更代碼有關(guān)的頂層方法,可以更加準確的確定變更代碼影響到的業(yè)務(wù)功能,進而有利于準確判斷代碼更新的潛在風險。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請并不受所描 述的動作順序的限制,因為依據(jù)本申請,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本申請所必須的。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
圖3為本申請又一實施例提供的代碼處理裝置的結(jié)構(gòu)示意圖。如圖3所示,該裝置包括:目標鏈路確定模塊31、目標方法確定模塊32和目標業(yè)務(wù)確定模塊33。
目標鏈路確定模塊31,用于確定與目標應(yīng)用代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,目標應(yīng)用代碼是原應(yīng)用代碼更新后的應(yīng)用代碼。
目標方法確定模塊32,用于確定影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法。
目標業(yè)務(wù)確定模塊33,用于根據(jù)預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,確定目標頂層方法對應(yīng)的業(yè)務(wù)功能作為變更代碼影響到的業(yè)務(wù)功能。
在一可選實施方式中,如圖4所示,目標鏈路確定模塊31的一種實現(xiàn)結(jié)構(gòu)包括:分析單元311和確定單元312。
分析單元311,用于對目標應(yīng)用代碼中方法之間的調(diào)用關(guān)系進行分析,以確定目標應(yīng)用代碼包含的目標調(diào)用關(guān)系鏈路。
確定單元312,用于從目標調(diào)用關(guān)系鏈路中,確定包含變更代碼所屬方法的目標調(diào)用關(guān)系鏈路作為影響鏈路。
進一步,分析單元311具體用于:
對目標應(yīng)用代碼進行編譯,以獲得目標編譯代碼;
對目標編譯代碼中方法之間的調(diào)用關(guān)系進行分析,以確定目標調(diào)用關(guān)系鏈路。
在一可選實施方式中,如圖4所示,該裝置還包括:原鏈路確定模塊34、 原方法確定模塊35、原功能確定模塊36和對應(yīng)關(guān)系建立模塊37。
原鏈路確定模塊34,用于對原應(yīng)用代碼中方法之間的調(diào)用關(guān)系進行分析,以確定原應(yīng)用代碼包含的原調(diào)用關(guān)系鏈路。
原方法確定模塊35,用于確定原調(diào)用關(guān)系鏈路上不被任何方法調(diào)用的方法作為頂層方法。
原功能確定模塊36,用于根據(jù)頂層方法表達的業(yè)務(wù)含義,確定頂層方法對應(yīng)的業(yè)務(wù)功能。
對應(yīng)關(guān)系建立模塊37,用于建立頂層方法與頂層方法對應(yīng)的業(yè)務(wù)功能之間的對應(yīng)關(guān)系。
在一可選實施方式中,原鏈路確定模塊34具體用于:
對原應(yīng)用代碼進行編譯,以獲得原編譯代碼;
對原編譯代碼中方法之間的調(diào)用關(guān)系進行分析,以確定原調(diào)用關(guān)系鏈路。
本實施例提供的代碼處理裝置,以原應(yīng)用代碼為基礎(chǔ),預(yù)先建立頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,在對目標應(yīng)用代碼進行處理過程中,確定與目標應(yīng)用代碼中的變更代碼存在調(diào)用關(guān)系的調(diào)用關(guān)系鏈路作為影響鏈路,進而確定影響鏈路上不被任何方法調(diào)用的方法作為目標頂層方法,然后基于預(yù)先建立的頂層方法與業(yè)務(wù)功能之間的對應(yīng)關(guān)系,確定目標頂層方法對應(yīng)的業(yè)務(wù)功能作為變更代碼影響到的業(yè)務(wù)功能。由于這種頂層方法一般都是業(yè)務(wù)的起始點,是應(yīng)用代碼中業(yè)務(wù)屬性最重的地方,因此與人為主管判斷相比,本實施例提供的代碼處理裝置根據(jù)與變更代碼有關(guān)的頂層方法,可以更加準確的確定變更代碼影響到的業(yè)務(wù)功能,進而有利于準確判斷代碼更新的潛在風險。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和 方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本申請各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(read-onlymemory,rom)、隨機存取存儲器(randomaccessmemory,ram)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上實施例僅用以說明本申請的技術(shù)方案,而非對其限制;盡管參照前述實施例對本申請進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請各實施例技術(shù)方案的精神和范圍。