亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種程序編譯的預處理方法及程序編譯設備與流程

文檔序號:11620421閱讀:351來源:國知局
一種程序編譯的預處理方法及程序編譯設備與流程

本發(fā)明涉及信息處理技術領域,特別涉及一種程序編譯的預處理方法及程序編譯設備。



背景技術:

目前在編寫終端設備所執(zhí)行的應用程序時,一般都會先基于一定的編程語言(比如objective-c等)編寫應用程序的源代碼,然后再將源代碼轉(zhuǎn)化為終端設備的可執(zhí)行文件,最后對該可執(zhí)行文件進行測試。

其中,在將源代碼轉(zhuǎn)化為可執(zhí)行文件的過程中,可以通過編譯器(比如xcode編譯器)先得到源代碼的抽象語法樹(abstractsyntaxtree,ast)文本,然后再根據(jù)ast文件得到可執(zhí)行文件。而在對可執(zhí)行文件進行測試時,可以通過測試系統(tǒng)測試目標程序的各個功能模塊運行的正確與否。



技術實現(xiàn)要素:

本發(fā)明實施例提供一種程序編譯的預處理方法及程序編譯設備,實現(xiàn)了在程序編譯設備對目標程序進行編譯的過程中獲取目標程序的各個函數(shù)的相關信息。

本發(fā)明實施例提供一種程序編譯的預處理方法,應用于程序編譯設備,所述方法包括:

所述程序編譯設備在啟動對目標程序的編譯時,調(diào)用預處理模塊;

所述預處理模塊獲取目標程序的源代碼文件中各個函數(shù)的相關信息,其中,某一函數(shù)的相關信息包括:所述某一函數(shù)的引用函數(shù)的信息;

所述預處理模塊將所述各個函數(shù)的相關信息輸出給所述程序編譯設備,且將所述各個函數(shù)的相關信息儲存到數(shù)據(jù)庫,以便數(shù)據(jù)分析系統(tǒng)根據(jù)所述數(shù)據(jù)庫中儲存的各個函數(shù)的引用函數(shù)的信息確定所述目標程序的函數(shù)調(diào)用鏈;

所述程序編譯設備將所述各個函數(shù)的相關信息寫入到所述目標程序的編譯日志中。

本發(fā)明實施例還提供一種程序編譯設備,包括預處理模塊,調(diào)用單元,編譯單元和日志單元,其中:

所述調(diào)用單元,用于在啟動所述編譯單元時,調(diào)用預處理模塊;

所述預處理模塊,用于獲取目標程序的源代碼文件中各個函數(shù)的相關信息,將所述各個函數(shù)的相關信息輸出給所述日志單元,且將所述各個函數(shù)的相關信息儲存到數(shù)據(jù)庫,以便數(shù)據(jù)分析系統(tǒng)根據(jù)所述數(shù)據(jù)庫中儲存的各個函數(shù)的引用函數(shù)的信息確定所述目標程序的函數(shù)調(diào)用鏈,其中,某一函數(shù)的相關信息包括:所述某一函數(shù)的引用函數(shù)的信息;

所述日志單元,用于將所述各個函數(shù)的相關信息寫入到所述目標程序的編譯日志中;

所述編譯單元,用于對所述目標程序的源代碼文件進行編譯。

可見,在本實施例的方法中,在程序編譯設備添加了預處理模塊,當程序編譯設備在啟動對目標程序的編譯時,調(diào)用預處理模塊以獲取目標程序的源代碼文件中各個函數(shù)的引用函數(shù)的信息并輸出給程序編譯設備,由程序編譯設備將各個函數(shù)的相關信息寫入到目標程序的編譯日志中;且預處理模塊還會將各個函數(shù)的相關信息儲存到數(shù)據(jù)庫中。這樣如果將一個目標程序修改為另一目標程序,則數(shù)據(jù)分析系統(tǒng)可以根據(jù)數(shù)據(jù)庫中儲存的另一目標程序的各個函數(shù)的引用函數(shù)的信息確定另一目標程序的函數(shù)調(diào)用鏈,進而得知一個目標程序與另一目標程序的差別函數(shù)的調(diào)用鏈,使得測試系統(tǒng)在對另一目標程序進行測試時,可以集中關注差別函數(shù)的相關調(diào)用函數(shù),快速將測試問題進行定位??梢?,本實施例的方法為測試系統(tǒng)提供了真實可靠的變動范圍,讓有限的系統(tǒng)測試資源更加集中的注入到相關變動的部分,提高了測試效率。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實施例中程序編譯的預處理方法應用于的場景的示意圖;

圖2是本發(fā)明實施例提供的一種程序編譯的預處理方法的流程圖;

圖3是本發(fā)明實施例中程序編譯設備添加預處理模塊的方法流程圖;

圖4是本發(fā)明應用實施例中程序編譯的預處理方法應用于的場景的示意圖;

圖5是本發(fā)明應用實施例中xcode編譯器添加clang插件的方法流程圖;

圖6是本發(fā)明應用實施例中提供的xcode編譯器調(diào)用clang插件進行預處理的方法流程圖;

圖7是本發(fā)明實施例提供的一種程序編譯設備的結(jié)構(gòu)示意圖;

圖8是本發(fā)明實施例提供的另一種程序編譯設備的結(jié)構(gòu)示意圖;

圖9是本發(fā)明實施例提供的一種終端設備程序的結(jié)構(gòu)示意圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”、“第三”“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排它的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設備固有的其它步驟或單元。

本發(fā)明實施例提供的程序編譯的預處理方法可以應用于程序編譯設備對目標程序進行編譯的場景中,具體應用于如圖1所示的場景中,在該場景中包括程序編譯設備,數(shù)據(jù)庫,預處理模塊和數(shù)據(jù)分析系統(tǒng),在發(fā)明實施例中,程序編譯設備可以在啟動對目標程序的編譯時,調(diào)用預處理模塊,由預處理模塊獲取目標程序的源代碼文件中各個函數(shù)的相關信息并將各個函數(shù)的相關信息傳輸給程序編譯設備,由程序編譯設備將各個函數(shù)的相關信息寫入到目標程序的編譯日志中;且預處理模塊還會將各個函數(shù)的相關信息儲存到數(shù)據(jù)庫中,其中,某一函數(shù)的相關信息包括:該函數(shù)的引用函數(shù)的信息。這樣如果將一個目標程序修改為另一目標程序,則數(shù)據(jù)分析系統(tǒng)可以根據(jù)數(shù)據(jù)庫中儲存的另一目標程序的各個函數(shù)的引用函數(shù)的信息確定另一目標程序的函數(shù)調(diào)用鏈,進而得知一個目標程序與另一目標程序的差別函數(shù)的調(diào)用鏈,使得測試系統(tǒng)在對另一目標程序進行測試時,可以集中關注差別函數(shù)的相關調(diào)用函數(shù),快速將測試問題進行定位。其中,程序編譯設備可以是xcode等形式的編譯器,預處理模塊可以clang插件,clang是一個c語言、c++、objective-c、objective-c++語言的輕量級編譯器,通過clang插件可以獲取目標程序的源代碼文件中各個函數(shù)的相關信息。

本發(fā)明一個實施例提供一種程序編譯的預處理方法,主要是程序編譯設備所執(zhí)行的方法,流程圖如圖2所示,包括:

步驟101,程序編譯設備在啟動對目標程序的編譯時,調(diào)用預處理模塊。

可以理解,在本實施例中,用戶可以通過程序編譯設備提供的接口(比如用戶自定義接口)將預處理模塊添加到程序編譯設備中,這樣,當程序編譯設備在啟動對目標程序的編譯時,調(diào)用預處理模塊。

且程序編譯設備對目標程序的編譯流程與預處理模塊運行的流程之間互不干擾,一般情況下,程序編譯設備對目標程序的編譯是指將目標程序的源代碼文件編譯成用戶終端的可執(zhí)行文件的流程,而預處理模塊運行的流程即為下述步驟102和103中的流程。

步驟102,預處理模塊獲取目標程序的源代碼文件中各個函數(shù)的相關信息,其中,某一函數(shù)的相關信息包括:該函數(shù)的引用函數(shù)的信息,比如引用函數(shù)的名稱等信息,這里引用函數(shù)可以為一個或多個。

可以理解,一個目標程序可以有多個功能模塊,這些功能模塊的源代碼可以分別通過不同的源代碼文件儲存,一個或多個功能模塊的源代碼可以用一個源代碼文件儲存,則一個目標程序可以對應多個源代碼文件。其中,如果某一源代碼文件中包含了另一源代碼文件,說明這兩個源代碼文件對應的功能模塊之間具有包含關系。在本實施例中預處理模塊獲取的某一函數(shù)的相關信息中還可以包括該函數(shù)所在的源代碼文件的文件路徑,即源代碼文件在程序編譯設備的磁盤中的存儲位置或路徑等信息。

具體地,預處理模塊在獲取各個函數(shù)的引用函數(shù)的信息時,可以遍歷目標程序的源代碼文件中的每個函數(shù)定義,訪問每個函數(shù)定義的內(nèi)部信息,該內(nèi)部信息中可以包括引用函數(shù)的信息;分別解析每個函數(shù)定義的內(nèi)部信息中引用函數(shù)的信息得到各個函數(shù)的引用函數(shù)的信息。

其中,在訪問某一函數(shù)定義的內(nèi)部信息時,可以通過astvisitor函數(shù)進行訪問,在解析某一函數(shù)定義的內(nèi)部信息時,可以通過calleevisitor函數(shù)進行解析。

步驟103,預處理模塊將各個函數(shù)的相關信息輸出給程序編譯設備,且將各個函數(shù)的相關信息儲存到數(shù)據(jù)庫中,以便數(shù)據(jù)分析系統(tǒng)根據(jù)數(shù)據(jù)庫中儲存的各個函數(shù)的引用函數(shù)的信息確定目標程序的函數(shù)調(diào)用鏈。

具體地,預處理模塊可以根據(jù)各個函數(shù)的相關信息生成中間文件(比如txt文本形式的文件),再將中間文件儲存到數(shù)據(jù)庫中。且預處理模塊可以直接將各個函數(shù)的相關信息輸出給程序編譯設備,也可以將上述生成的中間文件傳輸給程序編譯設備。

步驟104,程序編譯設備將各個函數(shù)的相關信息寫入到目標程序的編譯日志中。

程序編譯設備可以直接將預處理模塊輸出的各個函數(shù)的相關信息直接打印到編譯日志中,也可以將預處理模塊輸出的中間文件儲存為編譯日志。

其中,編譯日志中一般包括程序編譯設備運行編譯流程的過程中得到的編譯信息,在本實施例中該編譯日志還可以包括各個函數(shù)的相關信息。

需要說明的是,如果用戶需要對目標程序進行調(diào)試時,可以通過操作程序編譯設備,以觸發(fā)上述步驟101到104的流程,比如用戶可以在程序編譯設備提供的界面輸入一行命令以啟動程序編譯設備對目標程序進行編譯,進而觸發(fā)了上述步驟101到104。

這樣每次調(diào)試結(jié)束后,預處理模塊都會向數(shù)據(jù)庫儲存由目標程序的各個函數(shù)的相關信息組成的中間文件,如果對目標程序進行多次調(diào)試,數(shù)據(jù)庫中就會儲存有多份目標程序的中間文件,這樣數(shù)據(jù)庫就會冗余。為了解決這個問題,用戶可以在進行一次調(diào)試后,操作程序編譯設備,以清空數(shù)據(jù)庫,比如在程序編譯設備提供的界面輸入另一行命令。

可見,在本實施例的方法中,在程序編譯設備添加了預處理模塊,當程序編譯設備在啟動對目標程序的編譯時,調(diào)用預處理模塊以獲取目標程序的源代碼文件中各個函數(shù)的引用函數(shù)的信息并輸出給程序編譯設備,由程序編譯設備將各個函數(shù)的相關信息寫入到目標程序的編譯日志中;且預處理模塊還會將各個函數(shù)的相關信息儲存到數(shù)據(jù)庫中。這樣如果將一個目標程序修改為另一目標程序,則數(shù)據(jù)分析系統(tǒng)可以根據(jù)數(shù)據(jù)庫中儲存的另一目標程序的各個函數(shù)的引用函數(shù)的信息確定另一目標程序的函數(shù)調(diào)用鏈,進而得知一個目標程序與另一目標程序的差別函數(shù)的調(diào)用鏈,使得測試系統(tǒng)在對另一目標程序進行測試時,可以集中關注差別函數(shù)的相關調(diào)用函數(shù),快速將測試問題進行定位。可見,本實施例的方法為測試系統(tǒng)提供了真實可靠的變動范圍,讓有限的系統(tǒng)測試資源更加集中的注入到相關變動的部分,提高了測試效率。

在一個具體的實施例中,當預處理模塊將目標程序的各個函數(shù)的相關信息儲存到數(shù)據(jù)庫后,數(shù)據(jù)分析系統(tǒng)可以根據(jù)各個函數(shù)的相關信息確定目標程序的函數(shù)調(diào)用鏈。

這里,函數(shù)調(diào)用鏈是指各個函數(shù)之間相互調(diào)用的關系信息,比如函數(shù)a調(diào)用函數(shù)b,而函數(shù)b又調(diào)用函數(shù)c,則函數(shù)a,b和c之間的調(diào)用關系就構(gòu)成了一條函數(shù)調(diào)用鏈。數(shù)據(jù)分析系統(tǒng)在確定函數(shù)調(diào)用鏈時,可以將一個函數(shù)的引用函數(shù)確定為該函數(shù)的調(diào)用函數(shù),這樣遍歷每個函數(shù)的引用函數(shù)的信息,即可得到各個函數(shù)之間的調(diào)用關系,即函數(shù)調(diào)用鏈。

進一步地,如果該目標程序的源代碼文件是在另一個目標程序的源代碼文件的基礎上修改得到的,則數(shù)據(jù)分析系統(tǒng)還可以獲取該目標程序與另一目標程序之間的差別函數(shù),并從上述確定的函數(shù)調(diào)用鏈中查找到差別函數(shù)的調(diào)用鏈。其中,在獲取該目標程序與另一目標程序之間的差別函數(shù)時,可以由數(shù)據(jù)分析系統(tǒng)直接獲取,或數(shù)據(jù)分析系統(tǒng)從另一個獨立的功能設備獲取到,該功能設備主要是獲取目標程序的源代碼文件在更新過程中所更新的函數(shù)的信息。

在另一個具體的實施例中,預處理模塊在執(zhí)行上述步驟102時,獲取的各個函數(shù)的相關信息中還可以包括對應函數(shù)所在的源代碼文件的文件路徑。

進一步地,當預處理模塊將各個函數(shù)的相關信息以文本形式輸出到數(shù)據(jù)庫后,數(shù)據(jù)分析系統(tǒng)還可以根據(jù)各個函數(shù)所在的源代碼文件的文件路徑分別確定各個函數(shù)對應的目標程序的功能模塊,并儲存各個函數(shù)對應的功能模塊的信息。

具體地,由于一個源代碼文件中儲存著一個或多個功能模塊的源代碼,則數(shù)據(jù)分析系統(tǒng)根據(jù)源代碼文件的文件路徑就可以確定該源代碼文件所對應的功能模塊的信息,進而確定該源代碼文件中各個函數(shù)對應的功能模塊的信息。數(shù)據(jù)分析系統(tǒng)最終確定的一個函數(shù)可以對應一個或多個功能模塊。例如某個函數(shù)的源代碼文件的文件路徑為/a/b,則程序編譯設備確定該函數(shù)對應的功能模塊為:源代碼文件a對應的功能模塊下的源代碼文件b對應的功能子模塊。

進一步地,如果該目標程序的源代碼文件是在另一個目標程序的源代碼文件的基礎上修改得到的,則數(shù)據(jù)分析系統(tǒng)還可以確定該目標程序與另一目標程序之間的差別函數(shù)對應的功能模塊。進而使得測試系統(tǒng)可以針對性地對相關的功能模塊進行測試,避免了盲目進行測試,從而提高了測試效率。

在其它具體的實施例中,為了實現(xiàn)上述實施例中的方法,程序編譯設備可以提供用戶接口以添加上述預處理模塊。具體可以通過如下步驟實現(xiàn),流程圖如圖3所示,包括:

步驟201,顯示設置界面,在設置界面模塊添加接口。

可以理解,用戶可以操作程序編譯設備,使得程序編譯設備顯示設置界面,本實施例中,在設置界面上可以包括模塊添加接口,該模塊添加接口用于添加任一模塊以實現(xiàn)某種功能。

步驟202,從模塊添加接口獲取用戶輸入的信息,該用戶輸入的信息包括:預處理模塊的代碼文件的存儲路徑,及預處理模塊與程序編譯設備之間的接口信息。

其中,預處理模塊的代碼文件的存儲路徑是指該預處理模塊的代碼文件在程序編譯設備中儲存的路徑信息。如果程序編譯設備有外接的存儲設備,則該存儲路徑還可以是預處理模塊的代碼文件在外接的存儲設備中儲存的路徑信息。

預處理模塊與程序編譯設備之間的接口信息可以包括:程序編譯設備開始調(diào)用預處理模塊的接口信息,及預處理模塊輸出信息到程序編譯設備的接口信息。

例如程序編譯設備在啟動對目標程序的編譯時,調(diào)用預處理模塊,具體地,程序編譯設備開始調(diào)用預處理模塊的接口為:程序編譯設備在執(zhí)行某一行啟動代碼之后開始調(diào)用預處理模塊;且預處理模塊在得到各個函數(shù)的相關信息后輸出給程序編譯設備中日志模塊,該日志模塊主要用來得到目標程序的編譯日志,具體地,預處理模塊輸出信息給程序編譯設備的接口為:程序編譯設備中日志模塊的輸入接口。

步驟203,儲存上述用戶輸入的信息。

本實施例中,程序編譯設備在執(zhí)行上述步驟101時,具體是根據(jù)該接口信息調(diào)用存儲路徑中儲存的預處理模塊的代碼文件。

以下以一個具體的實施例來說明本發(fā)明實施例的方法,本實施例的方法應用的場景可以如圖4所示,在本實施例中,程序編譯設備為xcode編譯器,該xcode編譯器包括編譯模塊和日志模塊,其中,編譯模塊用于運行對目標程序的編譯流程,日志模塊用于形成目標程序的編譯日志;預處理模塊為clang插件。

具體參考圖5和圖6所示,本實施例的方法包括:

(1)在xcode編譯器中添加clang插件

步驟301,xcode編譯器顯示設置界面,在設置界面中包括模塊添加接口,具體可以為用戶自定義(user-defined)接口。

步驟302,用戶在用戶自定義接口輸入clang插件的代碼文件的存儲路徑,比如,存儲路徑為/users/sanren/clang-llvm/build/bin/clang;且用戶還需要在用戶自定義接口輸入其它參數(shù)信息,比如clang插件與xcode編譯器之間的接口信息,比如,xcode編譯器開始調(diào)用clang插件的接口為xcode編譯器在執(zhí)行某一行啟動代碼之后,clang插件輸出信息到xcode編譯器的接口為日志模塊的輸入接口等。xcode編譯器會儲存從用戶自定義接口獲取的用戶輸入信息。

(2)在xcode編譯器啟動時調(diào)用clang插件

步驟303,用戶通過xcode編譯器提供的編譯接口,輸入一行命令,使得xcode編譯器啟動編譯模塊對一目標程序的編譯流程。在本實施例中,目標程序可以為騰訊即時通信程序,或是獨立版手機空間,或是騰訊音樂等應用程序。

步驟304,xcode編譯器在啟動編譯模塊時調(diào)用clang插件,這樣clang插件會遍歷目標程序的源代碼文件中的每個函數(shù)定義,訪問每個函數(shù)定義的內(nèi)部信息,解析內(nèi)部信息得到每個函數(shù)的引用函數(shù)的信息;clang插件還會獲取各個函數(shù)所在源代碼文件的文件路徑等。

而編譯模塊主要是將目標程序的源代碼文件編譯成可執(zhí)行文件。

步驟305,clang插件會將獲取的每個函數(shù)的相關信息輸出給xcode編譯器的日志模塊,日志模塊將每個函數(shù)的相關信息寫入到目標程序的編譯日志中。任一函數(shù)的相關信息包括:該函數(shù)的引用函數(shù)的信息,及該函數(shù)所在源代碼文件的文件路徑等信息。

需要說明的是,xcode編譯器的日志模塊還可以記錄編譯模塊對目標程序進行編譯過程中的信息。

步驟306,clang插件將獲取的每個函數(shù)的相關信息以文本形式儲存到數(shù)據(jù)庫。

步驟307,數(shù)據(jù)分析系統(tǒng)會根據(jù)數(shù)據(jù)庫中儲存的每個函數(shù)的相關信息中每個函數(shù)的引用函數(shù)的信息確定目標程序的函數(shù)調(diào)用鏈,根據(jù)每個函數(shù)所在源代碼文件的文件路徑確定每個函數(shù)對應的目標程序的功能模塊。

另外,如果該目標程序是在另一目標程序的基礎上修改得到的,數(shù)據(jù)分析系統(tǒng)還會執(zhí)行如下步驟308。

步驟308,數(shù)據(jù)分析系統(tǒng)獲取該目標程序與另一目標程序之間的差別函數(shù),然后從上述步驟307中得到的函數(shù)調(diào)用鏈中查找差別函數(shù)的調(diào)用鏈,并查找到調(diào)用鏈上各個函數(shù)對應的功能模塊的信息。且數(shù)據(jù)分析系統(tǒng)可以將查找到的函數(shù)調(diào)用鏈及對應的功能模塊的信息顯示到用戶界面,以供用戶查看。

例如,函數(shù)名為:spritenetreqcenter::-gettaskandremoveouttimewithurl的差別函數(shù),對應的功能模塊包括:業(yè)務-增值-可視網(wǎng)頁(webview),基礎-組件,及基礎-多功能一體(allinone,aio)。這樣,測試系統(tǒng)可以針對性地對這些功能模塊進行功能測試,避免了盲目的測試,提高了測試效率。

本發(fā)明實施例還提供一種程序編譯設備,其結(jié)構(gòu)示意圖如圖7所示,具體可以包括:預處理模塊10,調(diào)用單元11,日志單元12和編譯單元13,其中:

所述調(diào)用單元11,用于在啟動所述編譯單元13時,調(diào)用預處理模塊10;

所述預處理模塊10,用于獲取目標程序的源代碼文件中各個函數(shù)的相關信息,將所述各個函數(shù)的相關信息輸出給所述日志單元12,且將所述各個函數(shù)的相關信息儲存到數(shù)據(jù)庫,以便數(shù)據(jù)分析系統(tǒng)根據(jù)所述數(shù)據(jù)庫中儲存的各個函數(shù)的引用函數(shù)的信息確定所述目標程序的函數(shù)調(diào)用鏈,其中,某一函數(shù)的相關信息包括:所述某一函數(shù)的引用函數(shù)的信息。

該預處理模塊10,具體用于遍歷所述目標程序的源代碼文件中的每個函數(shù)定義,訪問每個函數(shù)定義的內(nèi)部信息,所述內(nèi)部信息中包括引用函數(shù)的信息;分別解析所述每個函數(shù)定義的內(nèi)部信息中所述引用函數(shù)的信息得到各個函數(shù)的引用函數(shù)的信息。

所述日志單元12,用于將所述預處理模塊10輸出的各個函數(shù)的相關信息寫入到所述目標程序的編譯日志中;

所述編譯單元13,用于對所述目標程序的源代碼文件進行編譯。

可見,在本實施例的程序編譯設備中添加了預處理模塊,當程序編譯設備在啟動編譯單元13時,調(diào)用單元11調(diào)用預處理模塊10以獲取目標程序的源代碼文件中各個函數(shù)的引用函數(shù)的信息并輸出給程序編譯設備的日志單元12,由程序編譯設備的日志單元12將各個函數(shù)的相關信息寫入到目標程序的編譯日志中;且預處理模塊10還會將各個函數(shù)的相關信息儲存到數(shù)據(jù)庫中。這樣如果將一個目標程序修改為另一目標程序,則數(shù)據(jù)分析系統(tǒng)可以根據(jù)數(shù)據(jù)庫中儲存的另一目標程序的各個函數(shù)的引用函數(shù)的信息確定另一目標程序的函數(shù)調(diào)用鏈,進而得知一個目標程序與另一目標程序的差別函數(shù)的調(diào)用鏈,使得測試系統(tǒng)在對另一目標程序進行測試時,可以集中關注差別函數(shù)的相關調(diào)用函數(shù),快速將測試問題進行定位??梢?,本實施例的程序編譯設備為測試系統(tǒng)提供了真實可靠的變動范圍,讓有限的系統(tǒng)測試資源更加集中的注入到相關變動的部分,提高了測試效率。

參考圖8所示,在一個具體的實施例中,程序編譯設備除了可以包括如圖7所示的結(jié)構(gòu)外,還可以包括:界面顯示單元14和儲存單元15,其中:

界面顯示單元14,用于顯示設置界面,所述設置界面模塊添加接口;

儲存單元15,用于從所述界面顯示單元14顯示的模塊添加接口獲取用戶輸入的信息,所述用戶輸入的信息包括所述預處理模塊的代碼文件的存儲路徑,及所述預處理模塊與所述程序編譯設備之間的接口信息;儲存所述用戶輸入的信息;這樣所述調(diào)用單元11,具體用于根據(jù)所述儲存單元14儲存的接口信息調(diào)用所述存儲路徑中儲存的預處理模塊的代碼文件。

其中,所述預處理模塊與所述程序編譯設備之間的接口信息,具體包括:所述程序編譯設備開始調(diào)用所述預處理模塊的接口信息,及所述預處理模塊輸出信息到所述程序編譯設備的接口信息。

本發(fā)明實施例還提供一種終端設備,其結(jié)構(gòu)示意圖如圖9所示,該終端設備可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(centralprocessingunits,cpu)20(例如,一個或一個以上處理器)和存儲器21,一個或一個以上存儲應用程序221或數(shù)據(jù)222的存儲介質(zhì)22(例如一個或一個以上海量存儲設備)。其中,存儲器21和存儲介質(zhì)22可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)22的程序可以包括一個或一個以上模塊(圖示沒標出),每個模塊可以包括對終端設備中的一系列指令操作。更進一步地,中央處理器20可以設置為與存儲介質(zhì)22通信,在終端設備上執(zhí)行存儲介質(zhì)22中的一系列指令操作。

具體地,在存儲介質(zhì)22中儲存的應用程序221包括程序編譯的預處理應用程序,且該程序可以包括上述程序編輯設備中的預處理模塊10,調(diào)用單元11,日志單元12,編譯單元13,界面顯示單元14及儲存單元15,在此不進行贅述。更進一步地,中央處理器20可以設置為與存儲介質(zhì)22通信,在終端設備上執(zhí)行存儲介質(zhì)22中儲存的程序編譯的預處理應用程序?qū)囊幌盗胁僮鳌?/p>

終端設備還可以包括一個或一個以上電源23,一個或一個以上有線或無線網(wǎng)絡接口24,一個或一個以上輸入輸出接口25,和/或,一個或一個以上操作系統(tǒng)223,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述方法實施例中所述的由程序編譯設備所執(zhí)行的步驟可以基于該圖9所示的終端設備的結(jié)構(gòu)。

本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:只讀存儲器(rom)、隨機存取存儲器ram)、磁盤或光盤等。

以上對本發(fā)明實施例所提供的程序編譯的預處理方法及程序編譯設備進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1