一種war包分析器的制造方法
【專利摘要】本發(fā)明公開一種war包分析器,包括源碼分析模塊或字節(jié)碼分析模塊,代碼獲取模塊和前端頁面分析模塊;代碼獲取模塊用于獲取待分析war包中的源碼,并將源碼輸出至源碼分析模塊或用于獲取待分析war包中的字節(jié)碼,并將字節(jié)碼輸出至字節(jié)碼分析模塊;源碼分析模塊用于為源碼構(gòu)建抽象語法樹,并根據(jù)抽象語法樹獲取源碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息;字節(jié)碼分析模塊用于對(duì)字節(jié)碼進(jìn)行解析得到元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息;前端頁面分析模塊用于從待分析war包中獲取前端頁面代碼,并將前端頁面代碼轉(zhuǎn)換為源碼或字節(jié)碼;將源碼輸出至源碼分析模塊或?qū)⒆止?jié)碼輸出至字節(jié)碼分析模塊。利用war包分析器能夠?qū)ar包進(jìn)行分析,并得到war包中相關(guān)的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。
【專利說明】
一種war包分析器
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及一種war包分析器。
【背景技術(shù)】
[0002]jar包是對(duì)開發(fā)人員寫好的類進(jìn)行打包而生成的,也就是說,jar包一般只包括類文件;而war包是在做好一個(gè)web應(yīng)用后,打成包部署到容器,也就是說,war包不僅包括jar包中的類文件,還包括前端頁面文件、開發(fā)框架的配置文件等。
[0003]現(xiàn)有技術(shù)中存在對(duì)jar包的分析器,用于對(duì)jar包中的源碼、字節(jié)碼進(jìn)行分析,但是并不能實(shí)現(xiàn)對(duì)相對(duì)復(fù)雜的war包的分析。所以,目前亟需一種能夠?qū)ar包進(jìn)行分析的分析器。
【發(fā)明內(nèi)容】
[0004]為解決上述問題,本發(fā)明提供了一種war包分析器。
[0005]本發(fā)明提供了一種war包分析器,所述war包分析器包括源碼分析模塊或字節(jié)碼分析模塊,還包括代碼獲取模塊和前端頁面分析模塊;
[0006]所述代碼獲取模塊,用于獲取待分析war包中的源碼,并將所述源碼輸出至所述源碼分析模塊,或,用于獲取待分析war包中的字節(jié)碼,并將所述字節(jié)碼輸出至所述字節(jié)碼分析豐吳塊;
[0007]所述源碼分析模塊,用于為源碼構(gòu)建抽象語法樹,并根據(jù)所述抽象語法樹獲取所述源碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息;
[0008]所述字節(jié)碼分析模塊,用于對(duì)字節(jié)碼進(jìn)行解析得到元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息;
[0009]所述前端頁面分析模塊,用于從所述待分析war包中獲取前端頁面代碼,并將所述前端頁面代碼轉(zhuǎn)換為源碼或字節(jié)碼;將所述源碼輸出至所述源碼分析模塊,或,將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。
[0010]優(yōu)選地,所述war包分析器還包括數(shù)據(jù)表分析模塊;
[0011]所述數(shù)據(jù)表分析模塊,用于從所述代碼獲取模塊獲取到的源碼或字節(jié)碼中,獲取SQL代碼片段,并對(duì)所述SQL代碼片段進(jìn)行解析得到方法與數(shù)據(jù)表的映射關(guān)系,所述方法與數(shù)據(jù)表的映射關(guān)系屬于關(guān)聯(lián)數(shù)據(jù)信息。
[0012]優(yōu)選地,所述數(shù)據(jù)表分析模塊,還用于從數(shù)據(jù)庫中,獲取所述待分析war包中的數(shù)據(jù)表的元數(shù)據(jù)信息。
[0013]優(yōu)選地,所述war包分析器還包括開發(fā)框架分析模塊;
[0014]所述開發(fā)框架分析模塊,用于從所述待分析war包中獲取開發(fā)框架的配置文件,并從所述配置文件中獲取關(guān)聯(lián)數(shù)據(jù)信息,所述關(guān)聯(lián)數(shù)據(jù)信息包括類之間的調(diào)用關(guān)系、類與頁面的調(diào)用關(guān)系。
[0015]優(yōu)選地,所述開發(fā)框架分析模塊,具體用于從所述待分析war包中獲取開發(fā)框架的配置文件,為所述配置文件構(gòu)建結(jié)構(gòu)樹,并根據(jù)所述結(jié)構(gòu)樹獲取關(guān)聯(lián)數(shù)據(jù)信息,所述關(guān)聯(lián)數(shù)據(jù)信息包括類之間的調(diào)用關(guān)系、類與頁面的調(diào)用關(guān)系。
[0016]優(yōu)選地,所述war包分析器還包括存儲(chǔ)模塊;
[0017]所述存儲(chǔ)模塊,用于將所述源碼分析模塊、所述字節(jié)碼分析模塊、所述數(shù)據(jù)表分析模塊和所述開發(fā)框架分析模塊中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息,按照預(yù)設(shè)的存儲(chǔ)規(guī)則存儲(chǔ)于數(shù)據(jù)庫中。
[0018]優(yōu)選地,所述war包分析器還包括顯示模塊;
[0019]所述顯示模塊,用于獲取存儲(chǔ)于數(shù)據(jù)庫中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息,并將所述元數(shù)據(jù)信息和所述關(guān)聯(lián)數(shù)據(jù)信息轉(zhuǎn)化為視圖顯示給用戶。
[0020]優(yōu)選地,所述war包分析器還包括生成模塊;
[0021]所述生成模塊,用于利用所述元數(shù)據(jù)信息和所述關(guān)聯(lián)數(shù)據(jù)信息,生成UML圖,所述UML圖包括類圖、狀態(tài)圖和時(shí)序圖。
[0022]本發(fā)明提供的war包分析器包括源碼分析模塊或字節(jié)碼分析模塊,還包括代碼獲取模塊和前端頁面分析模塊;所述代碼獲取模塊,用于獲取待分析war包中的源碼,并將所述源碼輸出至所述源碼分析模塊,或,用于獲取待分析war包中的字節(jié)碼,并將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊;所述源碼分析模塊,用于為源碼構(gòu)建抽象語法樹,并根據(jù)所述抽象語法樹獲取所述源碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息;所述字節(jié)碼分析模塊,用于對(duì)字節(jié)碼進(jìn)行解析得到元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息;所述前端頁面分析模塊,用于從所述待分析war包中獲取前端頁面代碼,并將所述前端頁面代碼轉(zhuǎn)換為源碼或字節(jié)碼;將所述源碼輸出至所述源碼分析模塊,或,將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。利用本發(fā)明實(shí)施例提供的war包分析器能夠?qū)ar包進(jìn)行分析,并得到war包中相關(guān)的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。尤其是,利用本發(fā)明實(shí)施例提供的war包分析器能夠?qū)崿F(xiàn)對(duì)war包中的前端頁面代碼的分析,得到相關(guān)分析數(shù)據(jù)。
【附圖說明】
[0023]為了更清楚地說明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0024]圖1為本發(fā)明實(shí)施例提供了一種^?^包分析器的結(jié)構(gòu)示意圖;
[0025]圖2為本發(fā)明實(shí)施例提供了另一種war包分析器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026]下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0027]代碼分析工具是指以發(fā)現(xiàn)原始代碼的規(guī)范性、邏輯性、安全性等方面編程缺陷為目標(biāo),不需要執(zhí)行代碼而對(duì)其原始代碼或編譯后代碼進(jìn)行分析并得到評(píng)估報(bào)告的工具。在進(jìn)行應(yīng)用時(shí),代碼分析工具通常按照既定的分析規(guī)則對(duì)存儲(chǔ)于軟件配置管理庫中的代碼進(jìn)行分析并輸出結(jié)果。
[0028]本發(fā)明實(shí)施例提供的war包分析器作為一種新的代碼分析工具,能夠?qū)崿F(xiàn)對(duì)war包中代碼的分析功能。
[0029]以下進(jìn)行實(shí)施例具體內(nèi)容的介紹。
[0030]本發(fā)明實(shí)施例提供了一種rar包分析器,參考圖1,為本發(fā)明實(shí)施例提供的一種包分析器的結(jié)構(gòu)示意圖。
[0031]其中,所述rar包分析器100包括源碼分析模塊110或字節(jié)碼分析模塊120,還包括代碼獲取模塊130和前端頁面分析模塊140。
[0032]所述代碼獲取模塊130,用于獲取待分析war包中的源碼,并將所述源碼輸出至所述源碼分析模塊,或,用于獲取待分析war包中的字節(jié)碼,并將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。
[0033]實(shí)際應(yīng)用中,所述代碼獲取模塊130在獲取待分析war包后,首先對(duì)其進(jìn)行解壓。由于war包中可能包括源碼,所以,在待分析war包中包括源碼時(shí),所述代碼獲取模塊130可以用于獲取解壓后的war包中的源碼,并將獲取到的源碼輸出至源碼分析模塊中。
[0034]另外,war包中還包括字節(jié)碼,所述代碼獲取模塊130還可以用于獲取解壓后war包中的字節(jié)碼,并將其輸出至字節(jié)碼分析模塊中。
[0035]值得注意的是,由于對(duì)war包中的源碼或者字節(jié)碼進(jìn)行分析后得到的結(jié)果是相同的,所以,在為某個(gè)war包進(jìn)行分析時(shí),本發(fā)明實(shí)施例提供的war包分析器中的代碼獲取模塊130可以僅用于在war包中包括源碼的情況下,獲取待分析war包中的源碼,并將所述源碼輸出至所述源碼分析模塊;或者僅用于獲取待分析war包中的字節(jié)碼,并將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。
[0036]所述源碼分析模塊110,用于為源碼構(gòu)建抽象語法樹,并根據(jù)所述抽象語法樹獲取所述源碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。
[0037]實(shí)際應(yīng)用中,源碼分析模塊110用于對(duì)輸入的源碼進(jìn)行分析,具體的通過構(gòu)建抽象語法樹的方式,獲取war包中源碼的完整的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。
[0038]本發(fā)明實(shí)施例中的元數(shù)據(jù)信息可以包含包名,類名,父類,繼承的接口,類所屬模塊,類中的方法列表,方法的入?yún)?,出參方法拋出的異常信息,方法開始行數(shù),方法結(jié)束行數(shù),方法可被訪問的范圍等信息。而關(guān)聯(lián)數(shù)據(jù)信息可以包括類以及方法間調(diào)用關(guān)系,一般包含調(diào)用類,調(diào)用方法,被調(diào)用類,被調(diào)用方法,訪問次數(shù),訪問順序等。值得指出的是,本發(fā)明實(shí)施例中war包分析器的各個(gè)模塊獲取的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息包含的內(nèi)容可能不同。
[0039]實(shí)際應(yīng)用中,所述源碼分析模塊110可以采用」3¥3(^解析工具實(shí)現(xiàn),用于對(duì)」3¥3源碼進(jìn)行分析。具體的,首先利用javacc解析工具將java源碼構(gòu)建成抽象語法樹,然后通過預(yù)先為抽象語法樹編寫的訪問規(guī)則,從構(gòu)建的抽象語法樹中獲取元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。其中,從抽象語法樹中獲取到的元數(shù)據(jù)信息包括所述抽象語法樹的節(jié)點(diǎn)中屬于類名、方法名等,關(guān)聯(lián)數(shù)據(jù)信息包括所述抽象語法樹具有連接關(guān)系的兩個(gè)節(jié)點(diǎn)中屬于方法之間的調(diào)用關(guān)系、類與方法的調(diào)用關(guān)系等。
[0040]所述字節(jié)碼分析模塊120,用于對(duì)字節(jié)碼進(jìn)行解析得到元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。
[0041]實(shí)際應(yīng)用中,字節(jié)碼分析模塊120可以采用asm解析工具實(shí)現(xiàn),用于對(duì)字節(jié)碼進(jìn)行分析。具體的,通過在字節(jié)碼分析模塊120中編寫Visitor獲取所述字節(jié)碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。
[0042]所述前端頁面分析模塊140,用于從所述待分析war包中獲取前端頁面代碼,并將所述前端頁面代碼轉(zhuǎn)換為源碼或字節(jié)碼;將所述源碼輸出至所述源碼分析模塊,或,將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。
[0043]由于包中還包括前端頁面代碼,所以,本發(fā)明實(shí)施例的包分析器還包括前端頁面分析模塊140,用于對(duì)war包中的前端頁面代碼進(jìn)行分析。具體的,所述前端頁面分析模塊140在獲取待分析war包中的前端頁面代碼后,將其轉(zhuǎn)換為源碼或者字節(jié)碼。如果將前端頁面代碼轉(zhuǎn)化為源碼,則將轉(zhuǎn)化后的源碼輸出至所述源碼分析模塊110,以便所述源碼分析模塊110對(duì)其進(jìn)行分析,得到前端頁面代碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。如果將前端頁面代碼轉(zhuǎn)化為字節(jié)碼,則將轉(zhuǎn)化后的字節(jié)碼輸出至所述字節(jié)碼分析模塊120,以便所述字節(jié)碼分析模塊120對(duì)其進(jìn)行分析,得到所述前端頁面代碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。
[0044]實(shí)際應(yīng)用中,war包中通常包括前端JSP頁面代碼,所述前端頁面分析模塊140可以用于調(diào)用JSPC工具,將前端JSP頁面代碼轉(zhuǎn)換成servlet的源碼或字節(jié)碼,然后將其輸出至對(duì)應(yīng)的分析模塊。
[0045]本發(fā)明實(shí)施例提供的war包分析器中,包括源碼分析模塊或字節(jié)碼分析模塊,還包括代碼獲取模塊和前端頁面分析模塊。所述代碼獲取模塊,用于獲取待分析war包中的源碼,并將所述源碼輸出至所述源碼分析模塊,或,用于獲取待分析war包中的字節(jié)碼,并將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。所述源碼分析模塊,用于為源碼構(gòu)建抽象語法樹,并根據(jù)所述抽象語法樹獲取所述源碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。所述字節(jié)碼分析模塊,用于對(duì)字節(jié)碼進(jìn)行解析得到元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。所述前端頁面分析模塊,用于從所述待分析war包中獲取前端頁面代碼,并將所述前端頁面代碼轉(zhuǎn)換為源碼或字節(jié)碼;將所述源碼輸出至所述源碼分析模塊,或,將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。利用本發(fā)明實(shí)施例提供的war包分析器能夠?qū)ar包進(jìn)行分析,并得到war包中相關(guān)的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息。
[0046]尤其是,利用本發(fā)明實(shí)施例提供的包分析器能夠?qū)崿F(xiàn)對(duì)包中的前端頁面代碼的分析,得到相關(guān)分析數(shù)據(jù)。
[0047]為了進(jìn)步完善war包分析器的功能,本發(fā)明實(shí)施例還提供了一種war包分析器,參考圖2,為本發(fā)明實(shí)施例提供的另一種war包分析器的結(jié)構(gòu)示意圖。
[0048]其中,所述包分析器不僅包括圖1中的各個(gè)模塊,還包括數(shù)據(jù)表分析模塊210,開發(fā)框架分析模塊220,存儲(chǔ)模塊230,顯示模塊240和生成模塊250。
[0049]所述數(shù)據(jù)表分析模塊210,用于從所述代碼獲取模塊130獲取到的源碼或字節(jié)碼中,獲取SQL代碼片段,并對(duì)所述SQL代碼片段進(jìn)行解析得到方法與數(shù)據(jù)表的映射關(guān)系,所述方法與數(shù)據(jù)表的映射關(guān)系屬于關(guān)聯(lián)數(shù)據(jù)信息。
[0050]所述數(shù)據(jù)表分析模塊210,還用于從數(shù)據(jù)庫中,獲取所述待分析war包中的數(shù)據(jù)表的元數(shù)據(jù)信息。
[0051]由于war包中還包括對(duì)數(shù)據(jù)表的調(diào)用代碼,所以,本發(fā)明實(shí)施例提供的war包分析器中還包括數(shù)據(jù)表分析模塊210,用于對(duì)war包中對(duì)數(shù)據(jù)表調(diào)用代碼的分析。具體的,所述數(shù)據(jù)表分析模塊210從所述代碼獲取模塊130獲取到的源碼或字節(jié)碼中獲取SQL代碼片段,對(duì)獲取到的SQL代碼片段進(jìn)行分析,得到方法與數(shù)據(jù)表的映射關(guān)系等關(guān)聯(lián)數(shù)據(jù)信息。另外,所述數(shù)據(jù)表分析模塊210還可以從數(shù)據(jù)庫中直接獲取待分析rar包中數(shù)據(jù)表相關(guān)的元數(shù)據(jù)信息。
[0052]所述開發(fā)框架分析模塊220,用于從所述待分析war包中獲取開發(fā)框架的配置文件,并從所述配置文件中獲取關(guān)聯(lián)數(shù)據(jù)信息,所述關(guān)聯(lián)數(shù)據(jù)信息包括類之間的調(diào)用關(guān)系、類與頁面的調(diào)用關(guān)系。
[0053]所述開發(fā)框架分析模塊220,具體用于從所述待分析war包中獲取開發(fā)框架的配置文件,為所述配置文件構(gòu)建結(jié)構(gòu)樹,并根據(jù)所述結(jié)構(gòu)樹獲取關(guān)聯(lián)數(shù)據(jù)信息,所述關(guān)聯(lián)數(shù)據(jù)信息包括類之間的調(diào)用關(guān)系、類與頁面的調(diào)用關(guān)系。
[0054]實(shí)際應(yīng)用中,對(duì)war包的分析還包括對(duì)war包中開發(fā)框架的分析,所以,本發(fā)明實(shí)施例提供的war包分析器還包括開發(fā)框架分析模塊220,用于獲取待分析war包中開發(fā)框架的配置文件,并從所述配置文件中讀取關(guān)聯(lián)數(shù)據(jù)信息,具體的可以包括類之間的調(diào)用關(guān)系、類與頁面的調(diào)用關(guān)系等。
[0055]具體實(shí)現(xiàn)過程中,所述開發(fā)框架分析模塊220在獲取待分析war包中開發(fā)框架的配置文件后,為該配置文件構(gòu)建結(jié)構(gòu)樹,所述結(jié)構(gòu)樹能夠體現(xiàn)該配置文件中各個(gè)元素的結(jié)構(gòu)關(guān)系。然后,根據(jù)構(gòu)建的結(jié)構(gòu)樹中各節(jié)點(diǎn)的關(guān)系,獲取關(guān)聯(lián)數(shù)據(jù)信息。
[0056]實(shí)際應(yīng)用中,war包通常采用spring作為開發(fā)框架,所以本發(fā)明實(shí)施例提供的war包分析器中的開發(fā)框架分析模塊220可以通過對(duì)spring的配置文件進(jìn)行解析,得到對(duì)開發(fā)框架的關(guān)聯(lián)數(shù)據(jù)信息。
[0057]本發(fā)明實(shí)施例提供的包分析器對(duì)war包分析后得到的分析數(shù)據(jù)是比較雜亂的,為了將其按照一定的格式保存到數(shù)據(jù)庫,本發(fā)明實(shí)施例提供的war包分析器中還可以包括存儲(chǔ)模塊230。
[0058]具體的,所述存儲(chǔ)模塊230,用于將所述源碼分析模塊、所述字節(jié)碼分析模塊、所述數(shù)據(jù)表分析模塊和所述開發(fā)框架分析模塊中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息,按照預(yù)設(shè)的存儲(chǔ)規(guī)則如產(chǎn)品,版本等維度,存儲(chǔ)于數(shù)據(jù)庫中。
[0059]另外,為了將分析得到的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息以視圖的形式形象的提供給用戶,本發(fā)明實(shí)施例的war包分析器還包括顯示模塊240。
[0060]所述顯示模塊240,用于獲取存儲(chǔ)于數(shù)據(jù)庫中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息,并將所述元數(shù)據(jù)信息和所述關(guān)聯(lián)數(shù)據(jù)信息轉(zhuǎn)化為視圖顯示給用戶。
[0061]實(shí)際應(yīng)用中,視圖的類型較多,其中包括基礎(chǔ)類視圖、度量類視圖、規(guī)范類視圖和分析類視圖等,基礎(chǔ)類視圖是用于對(duì)war包的產(chǎn)品相關(guān)屬性進(jìn)行基礎(chǔ)查詢的視圖。例如獲取某方法內(nèi)部向下的調(diào)用鏈,獲取某批次的全量,增量代碼等。度量類視圖主要是用于對(duì)war包的產(chǎn)品的規(guī)模,復(fù)雜度進(jìn)行度量。例如:某批次產(chǎn)品或內(nèi)部的各類與方法個(gè)數(shù),某批次產(chǎn)品的全量代碼行數(shù),增量代碼行數(shù)。規(guī)范類視圖主要是用于對(duì)war包的產(chǎn)品的規(guī)范性進(jìn)行分析。例如獲取跨層調(diào)用的方法,在act1n或jsp中直接調(diào)用數(shù)據(jù)庫表,各部門和產(chǎn)品組可以結(jié)合本部門產(chǎn)品的具體編碼規(guī)范,編寫相關(guān)的分析sql進(jìn)行數(shù)據(jù)檢索。分析類視圖是用于對(duì)war包的產(chǎn)品進(jìn)行分析,該視圖通過調(diào)用了基礎(chǔ)類視圖,度量類視圖,規(guī)范類視圖中的基礎(chǔ)數(shù)據(jù),對(duì)產(chǎn)品的各個(gè)維度(例如復(fù)雜性,可維護(hù)性,規(guī)范性,開發(fā)質(zhì)量等)相關(guān)指標(biāo)進(jìn)行分析,便于產(chǎn)品的管理層能從宏觀的角度看待某批次產(chǎn)品信息。
[0062]為了使得分析得到的數(shù)據(jù)信息能夠?yàn)殚_發(fā)人員所用,本發(fā)明實(shí)施例的包分析器還包括生成模塊250。
[0063]具體的,所述生成模塊250,用于利用所述元數(shù)據(jù)信息和所述關(guān)聯(lián)數(shù)據(jù)信息,生成UML圖,所述UML圖包括類圖、狀態(tài)圖和時(shí)序圖。
[0064]總之,本發(fā)明實(shí)施例提供的rar包分析器能夠?qū)ir包中的代碼進(jìn)行全面完整的分析,得到war包中相對(duì)全面的數(shù)據(jù)信息,為后續(xù)的產(chǎn)品分析設(shè)計(jì)奠定基礎(chǔ),且具有參考價(jià)值。
[0065]另外,由于jar包中一般僅包括源碼或字節(jié)碼,所以本發(fā)明實(shí)施例提供的war包分析器也能夠完成對(duì)jar包的分析。具體的,利用war包分析器中的代碼獲取模塊130,以及源碼分析模塊110或字節(jié)碼分析模塊120即可。實(shí)際應(yīng)用中,所述代碼獲取模塊130,用于獲取jar包中的源碼或字節(jié)碼,并將源碼輸出至源碼分析模塊110處理,如果jar包中不包括源碼,則將字節(jié)碼輸出至字節(jié)碼分析模塊120即可,最終,源碼分析模塊110或字節(jié)碼分析模塊120可以分析出該jar包中相關(guān)的數(shù)據(jù)信息。另外,本發(fā)明提供的war分析器中的存儲(chǔ)模塊230、顯示模塊240和生成模塊250也能夠分別用于對(duì)jar包的相關(guān)的數(shù)據(jù)信息進(jìn)行存儲(chǔ)、轉(zhuǎn)化為視圖以及生成UML圖等操作。
[0066]需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0067]以上對(duì)本發(fā)明實(shí)施例所提供的一種包分析器進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【主權(quán)項(xiàng)】
1.一種war包分析器,其特征在于,所述war包分析器包括源碼分析模塊或字節(jié)碼分析模塊,還包括代碼獲取模塊和前端頁面分析模塊; 所述代碼獲取模塊,用于獲取待分析war包中的源碼,并將所述源碼輸出至所述源碼分析模塊,或,用于獲取待分析war包中的字節(jié)碼,并將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊; 所述源碼分析模塊,用于為源碼構(gòu)建抽象語法樹,并根據(jù)所述抽象語法樹獲取所述源碼中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息; 所述字節(jié)碼分析模塊,用于對(duì)字節(jié)碼進(jìn)行解析得到元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息; 所述前端頁面分析模塊,用于從所述待分析war包中獲取前端頁面代碼,并將所述前端頁面代碼轉(zhuǎn)換為源碼或字節(jié)碼;將所述源碼輸出至所述源碼分析模塊,或,將所述字節(jié)碼輸出至所述字節(jié)碼分析模塊。2.根據(jù)權(quán)利要求1所述的war包分析器,其特征在于,所述war包分析器還包括數(shù)據(jù)表分析豐吳塊; 所述數(shù)據(jù)表分析模塊,用于從所述代碼獲取模塊獲取到的源碼或字節(jié)碼中,獲取SQL代碼片段,并對(duì)所述SQL代碼片段進(jìn)行解析得到方法與數(shù)據(jù)表的映射關(guān)系,所述方法與數(shù)據(jù)表的映射關(guān)系屬于關(guān)聯(lián)數(shù)據(jù)信息。3.根據(jù)權(quán)利要求2所述的war包分析器,其特征在于,所述數(shù)據(jù)表分析模塊,還用于從數(shù)據(jù)庫中,獲取所述待分析war包中的數(shù)據(jù)表的元數(shù)據(jù)信息。4.根據(jù)權(quán)利要求1所述的war包分析器,其特征在于,所述war包分析器還包括開發(fā)框架分析模塊; 所述開發(fā)框架分析模塊,用于從所述待分析war包中獲取開發(fā)框架的配置文件,并從所述配置文件中獲取關(guān)聯(lián)數(shù)據(jù)信息,所述關(guān)聯(lián)數(shù)據(jù)信息包括類之間的調(diào)用關(guān)系、類與頁面的調(diào)用關(guān)系。5.根據(jù)權(quán)利要求4所述的war包分析器,其特征在于,所述開發(fā)框架分析模塊,具體用于從所述待分析war包中獲取開發(fā)框架的配置文件,為所述配置文件構(gòu)建結(jié)構(gòu)樹,并根據(jù)所述結(jié)構(gòu)樹獲取關(guān)聯(lián)數(shù)據(jù)信息,所述關(guān)聯(lián)數(shù)據(jù)信息包括類之間的調(diào)用關(guān)系、類與頁面的調(diào)用關(guān)系O6.根據(jù)權(quán)利要求1-5中任一所述的war包分析器,其特征在于,所述war包分析器還包括存儲(chǔ)模塊; 所述存儲(chǔ)模塊,用于將所述源碼分析模塊、所述字節(jié)碼分析模塊、所述數(shù)據(jù)表分析模塊和所述開發(fā)框架分析模塊中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息,按照預(yù)設(shè)的存儲(chǔ)規(guī)則存儲(chǔ)于數(shù)據(jù)庫中。7.根據(jù)權(quán)利要求6所述的war包分析器,其特征在于,所述war包分析器還包括顯示模塊; 所述顯示模塊,用于獲取存儲(chǔ)于數(shù)據(jù)庫中的元數(shù)據(jù)信息和關(guān)聯(lián)數(shù)據(jù)信息,并將所述元數(shù)據(jù)信息和所述關(guān)聯(lián)數(shù)據(jù)信息轉(zhuǎn)化為視圖顯示給用戶。8.根據(jù)權(quán)利要求7所述的war包分析器,其特征在于,所述war包分析器還包括生成模塊; 所述生成模塊,用于利用所述元數(shù)據(jù)信息和所述關(guān)聯(lián)數(shù)據(jù)信息,生成UML圖,所述UML圖包括類圖、狀態(tài)圖和時(shí)序圖。
【文檔編號(hào)】G06F9/44GK105893052SQ201610249051
【公開日】2016年8月24日
【申請(qǐng)日】2016年4月20日
【發(fā)明人】操健, 杜寧寧
【申請(qǐng)人】中國(guó)銀行股份有限公司