一種獲取Net程序集間差異信息的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種獲取Net程序集間差異信息的方法和裝置。本發(fā)明實(shí)施例提供的一種獲取Net程序集間差異信息的方法包括:按照劃分的Net程序集的組成部分,對(duì)第一Net程序集和第二Net程序集進(jìn)行反編譯,得到第一Net程序集的第一反編譯結(jié)果和第二Net程序集的第二反編譯結(jié)果;從第一反編譯結(jié)果中提取第一Net程序集的各組成部分對(duì)應(yīng)的反編譯結(jié)果,從第二反編譯結(jié)果中提取第二Net程序集的各組成部分對(duì)應(yīng)的反編譯結(jié)果;分別將第一Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與第二Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到第一Net程序集和第二Net程序集的差異信息。
【專利說明】一種獲取Net程序集間差異信息的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)軟件【技術(shù)領(lǐng)域】,特別涉及一種獲取Net程序集間差異__的 法和裝置。 …、
【背景技術(shù)】
[0002] 軟件代碼review(復(fù)查)是軟件上線前的必要環(huán)節(jié),對(duì)確認(rèn)上線內(nèi)容、提高上線p 量起著重要作用。 一人
[0003] 傳統(tǒng)的代碼review方法主要由人工完成,開發(fā)人員根據(jù)經(jīng)驗(yàn)將待上線軟件的代 碼與原始代碼比較,得到軟件之間的差異,完成代碼review。
[0004] 現(xiàn)有方案由于根據(jù)經(jīng)驗(yàn)人工比較,易于出現(xiàn)錯(cuò)判、漏判的情況,從而導(dǎo)致比對(duì)社里 不準(zhǔn)確,比對(duì)速度慢、比對(duì)效率低。 4
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供了一種獲取Net程序集間差異信息的方法和裝置,以解決現(xiàn)有方衣 賴人工比對(duì)造成的比對(duì)結(jié)果不準(zhǔn)確,比對(duì)速度慢、效率低的問題。
[0006] 為達(dá)到上述目的,本發(fā)明實(shí)施例采用了如下技術(shù)方案:
[0007] 本發(fā)明實(shí)施例提供了一種獲取Net程序集間差異信息的方法,該方法包括:
[0008] 按照劃分的Net程序集的組成部分,對(duì)第一 Net程序集和第二Net程序集進(jìn)行反 編譯,得到第一 Net程序集的第一反編譯結(jié)果和第二Net程序集的第二反編譯結(jié)果;
[0009] 從所述第一反編譯結(jié)果中提取所述第一 Net程序集的各組成部分對(duì)應(yīng)的反編譯 結(jié)果,從所述第二反編譯結(jié)果中提取所述第二Net程序集的各組成部分對(duì)應(yīng)的反編譯結(jié) 果;
[0010] 分別將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二Net程序集 中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二Net程序集的差 異信息。
[0011] 本發(fā)明實(shí)施例還提供了一種獲取Net程序集間差異信息的裝置,該裝置包括:
[0012] 反編譯單元,用于按照劃分的Net程序集的組成部分,對(duì)第一 Net程序集和第二 Net程序集進(jìn)行反編譯,得到第一 Net程序集的第一反編譯結(jié)果和第二Net程序集的第二反 編譯結(jié)果;
[0013] 反編譯結(jié)果提取單元,用于從所述第一反編譯結(jié)果中提取所述第一 Net.程序集的 各組成部分對(duì)應(yīng)的反編譯結(jié)果,從所述第二反編譯結(jié)果中提取所述第二Net程序集的各組 成部分對(duì)應(yīng)的反編譯結(jié)果;
[0014] 比對(duì)單元,用于分別將所述第一Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述 第二Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二 Net程序集的差異?目息。
[0015] 本發(fā)明實(shí)施例的有益效果是:
[0016]本發(fā)明實(shí)施例通過對(duì)Net程序集的組成部分進(jìn)行劃分,按照各組成部分對(duì)Net程 序集進(jìn)行反編譯,并提取各組成部分的反編譯結(jié)果進(jìn)行比對(duì),得到差異信息的技術(shù)手段,能 夠?qū)崿F(xiàn)Net程序集之間的自動(dòng)比對(duì),達(dá)到準(zhǔn)確、快速、高效地獲取Net程序集差異的技術(shù)效 果。
【專利附圖】
【附圖說明】
[0017]圖1為本發(fā)明一個(gè)實(shí)施例提供的一種獲取Net程序集間差異信息的方法流程示意 圖; 7、
[0018] 圖2為本發(fā)明又一個(gè)實(shí)施例提供的一種獲取Net程序集間差異信息的裝置結(jié)構(gòu)示 意圖。
【具體實(shí)施方式】
[0019] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。
[0020] 本發(fā)明一個(gè)實(shí)施例提供了一種獲取Net程序集間差異信息的方法,參見圖1,該方 法包括:
[0021] S100 :按照劃分的Net程序集的組成部分,對(duì)第一 Net程序集和第二Net程序集進(jìn) 行反編譯,得到第一 Net程序集的第一反編譯結(jié)果和第二Net程序集的第二反編譯結(jié)果。
[0022] · NET是微軟提出的一種用來實(shí)現(xiàn)XML (Extensible Markup Language,可擴(kuò)展標(biāo)記 語(yǔ)言)、網(wǎng)絡(luò)服務(wù)(Web Services)、S0A (Service-Oriented Architecture,面向服務(wù)的體系 結(jié)構(gòu))和敏捷性的技術(shù)平臺(tái)。
[0023] 在.Net結(jié)構(gòu)中,程序集(Assembly)是自我描述的安裝單元,它可以只包括一個(gè) PE (可移植可執(zhí)行)格式的DLL (Dynamic Link Library,動(dòng)態(tài)鏈接庫(kù))或ΕΧΕ (可執(zhí)行)文 件,也可以由多個(gè)文件組成,例如資源(位圖、JPEG文件、字符串表等)、DLL和ΕΧΕ文件等。
[0024] 其中第一 Net程序集和第二Net程序集可以是針對(duì)同一項(xiàng)目的程序集,也可以是 針對(duì)不同項(xiàng)目的程序集。
[0025] S101 :從第一反編譯結(jié)果中提取第一 Net程序集的各組成部分對(duì)應(yīng)的反編譯結(jié) 果,從第二反編譯結(jié)果中提取第二Net程序集的各組成部分對(duì)應(yīng)的反編譯結(jié)果。
[0026] S102 :分別將第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與第二Net程序集中 相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到第一 Net程序集和第二Net程序集的差異信息。
[0027] 上述步驟S100至步驟S102可以由安裝在計(jì)算機(jī)設(shè)備中的應(yīng)用程序執(zhí)行。
[0028] Net程序集對(duì)應(yīng)的原代碼是以項(xiàng)目的形式進(jìn)行編寫,包含項(xiàng)目結(jié)構(gòu),而對(duì)Net程序 集進(jìn)行反編譯之后得到的代碼不包含項(xiàng)目結(jié)構(gòu),因此反編譯之后的代碼和原代碼具有不同 的結(jié)構(gòu)形式,不能直接實(shí)行自動(dòng)化差異比較,需要進(jìn)行后續(xù)處理后才能進(jìn)行差異比較,具體 的差異比較的實(shí)現(xiàn)上也較本申請(qǐng)的方案而言更復(fù)雜。而本申請(qǐng)中只需要獲取兩個(gè)Net程序 集的位置,然后對(duì)兩個(gè)Net程序集進(jìn)行反編譯,得到的反編譯之后的代碼具有相同的結(jié)構(gòu) 形式,可以直接實(shí)現(xiàn)自動(dòng)化差異比較,實(shí)現(xiàn)簡(jiǎn)單、高效。
[0029] 其中,如果當(dāng)?shù)玫綐?biāo)記第一 Net程序集和第二Net程序集的各組成部分都無(wú)變化 的差異信息時(shí),判定確認(rèn)該第一 Net程序集和第二Net程序集對(duì)應(yīng)的原代碼是同一代碼,BP 該原代碼沒有發(fā)生修改,完成代碼復(fù)查;
[0030]否則,判定該第一 Net程序集和第二Net程序集對(duì)應(yīng)的原代碼不同,兩者之間對(duì)應(yīng) 的原代碼存在修改,后續(xù)可以根據(jù)得到的差異信息完成代碼 review。
[0031]本發(fā)明實(shí)施例通過對(duì)Net程序集的組成部分進(jìn)行劃分,按照各組成部分對(duì)Net程 序集進(jìn)行反編譯,并提取各組成部分的反編譯結(jié)果進(jìn)行比對(duì),得到差異信息的技術(shù)手段,能 夠?qū)崿F(xiàn)Net程序集之間的自動(dòng)比對(duì),達(dá)到準(zhǔn)確、快速、高效地獲取 Net程序集差異的技術(shù)效 果。
[0032]在圖1所示實(shí)施例的基礎(chǔ)上,本發(fā)明另一個(gè)實(shí)施例中,在步驟S100中,采用的Net 程序集的組成部分可以如下表1所示:
[0033] 表 1
【權(quán)利要求】
1. 一種獲取Net程序集間差異信息的方法,其特征在于,所述方法包括: 按照劃分的Net程序集的組成部分,對(duì)第一 Net程序集和第二Net程序集進(jìn)行反編譯, 得到第一 Net程序集的第一反編譯結(jié)果和第二Net程序集的第二反編譯結(jié)果; 從所述第一反編譯結(jié)果中提取所述第一 Net程序集的各組成部分對(duì)應(yīng)的反編譯結(jié)果, 從所述第二反編譯結(jié)果中提取所述第二Net程序集的各組成部分對(duì)應(yīng)的反編譯結(jié)果; 分別將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二Net程序集中相 應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二Net程序集的差異信 息。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述Net程序集的組成部分包括程序集描述節(jié)點(diǎn)、引用節(jié)點(diǎn)、資源節(jié)點(diǎn)和命名空間節(jié) 點(diǎn),或者,所述Net程序集的組成部分包括程序集描述節(jié)點(diǎn)、引用節(jié)點(diǎn)和命名空間節(jié)點(diǎn),其 中, 所述程序集描述節(jié)點(diǎn)包括下述信息項(xiàng): 程序集名稱、版本、區(qū)域性設(shè)置、公鑰;程序集支持的CPU架構(gòu)、程序集所依賴的Net框 架.NetFramework版本;程序集產(chǎn)品名稱、標(biāo)題、描述、版權(quán)、公司、由公共語(yǔ)言運(yùn)行庫(kù)的實(shí) 時(shí)編譯器生成的代碼的嚴(yán)格性、是否對(duì)Com可見、程序集唯一標(biāo)識(shí)、目標(biāo)Framework版本; 所述引用節(jié)點(diǎn)包括至少一個(gè)引用子節(jié)點(diǎn); 所述資源節(jié)點(diǎn)包括至少一個(gè)資源子節(jié)點(diǎn); 所述命名空間節(jié)點(diǎn)包括接口、類、枚舉和結(jié)構(gòu)的邏輯分組。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,通過如下方式,對(duì)Net程序集的程序集描 述節(jié)點(diǎn)進(jìn)行反編譯,得到程序集描述節(jié)點(diǎn)的反編譯結(jié)果: 分別將所述程序集描述中的各信息項(xiàng)反編譯為文本內(nèi)容,得到所述程序集描述節(jié)點(diǎn)的 反編譯結(jié)果; 相應(yīng)的,所述分別將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二 Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二Net程 序集的差異信息包括: 分別將所述第一 Net程序集的程序集描述節(jié)點(diǎn)中各信息項(xiàng)的反編譯結(jié)果,逐項(xiàng)與所述 第二Net程序集的程序集描述節(jié)點(diǎn)中相應(yīng)信息項(xiàng)的反編譯結(jié)果相比較,計(jì)算兩者反編譯結(jié) 果的文本行差異,當(dāng)任一信息項(xiàng)的文本行差異指示存在差異時(shí),得到標(biāo)記所述第一 Net程 序集和第二Net程序集的程序集描述節(jié)點(diǎn)修改的差異信息。
4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,通過如下方式,對(duì)Net程序集的引用節(jié)點(diǎn) 進(jìn)行反編譯,得到引用節(jié)點(diǎn)的反編譯結(jié)果: 分析所述各引用子節(jié)點(diǎn)的引用類型,當(dāng)所述引用子節(jié)點(diǎn)的引用類型為模塊引用時(shí),提 取該引用子節(jié)點(diǎn)的模塊引用名稱,將該引用子節(jié)點(diǎn)反編譯為文本內(nèi)容,記錄該引用子節(jié)點(diǎn) 的引用類型、模塊引用名稱和文本內(nèi)容,得到該引用子節(jié)點(diǎn)的反編譯結(jié)果; 當(dāng)所述引用子節(jié)點(diǎn)的引用類型為程序集引用時(shí),提取該引用子節(jié)點(diǎn)所引用程序集的名 稱,將該引用子節(jié)點(diǎn)反編譯為文本內(nèi)容,記錄該引用子節(jié)點(diǎn)的引用類型、所引用程序集的名 稱和文本內(nèi)容,得到該引用子節(jié)點(diǎn)的反編譯結(jié)果; 相應(yīng)的,所述分別將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二 Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二Net程 序集的差異信息包括: 按照所述引用子節(jié)點(diǎn)的引用類型,利用模塊引用名稱或所引用程序集的名稱查找第一 Net程序集和第二Net程序集中是否存在相對(duì)應(yīng)的引用子節(jié)點(diǎn), 若存在相對(duì)應(yīng)的引用子節(jié)點(diǎn),比較相對(duì)應(yīng)的一對(duì)引用子節(jié)點(diǎn)的文本內(nèi)容是否一致,當(dāng) 至少一對(duì)引用子節(jié)點(diǎn)的文本內(nèi)容不一致時(shí),得到標(biāo)記所述第一 Net程序集和第二Net程序 集的引用節(jié)點(diǎn)修改的差異信息,否則,得到標(biāo)記所述第一 Net程序集和第二Net程序集的引 用節(jié)點(diǎn)無(wú)變化的差異信息; 若不存在相對(duì)應(yīng)的引用子節(jié)點(diǎn),得到標(biāo)記第一 Net程序集的引用節(jié)點(diǎn)為新增且第二 Net程序集的引用節(jié)點(diǎn)為刪除的差異信息,或者,得到標(biāo)記第二Net程序集的引用節(jié)點(diǎn)為新 增且第一 Net程序集的引用節(jié)點(diǎn)為刪除的差異信息。
5. 根據(jù)權(quán)利要求2所述的方法,其特征在于,通過如下方式,對(duì)Net程序集的資源節(jié)點(diǎn) 進(jìn)行反編譯,得到資源節(jié)點(diǎn)的反編譯結(jié)果: 分析所述各資源子節(jié)點(diǎn)的資源類型,當(dāng)資源子節(jié)點(diǎn)的資源類型為文本資源時(shí),提取該 資源子節(jié)點(diǎn)的名稱,將該資源子節(jié)點(diǎn)反編譯為文本內(nèi)容,記錄該資源子節(jié)點(diǎn)的名稱和文本 內(nèi)容,得到該資源子節(jié)點(diǎn)的反編譯結(jié)果; 當(dāng)資源子節(jié)點(diǎn)的資源類型為二進(jìn)制資源時(shí),提取該資源子節(jié)點(diǎn)的名稱,將該資源子節(jié) 點(diǎn)反編譯為字符串編碼值,記錄該資源子節(jié)點(diǎn)的名稱和字符串編碼制,得到該資源子節(jié)點(diǎn) 的反編譯結(jié)果; 相應(yīng)的,所述分別將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二 Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二Net程 序集的差異信息包括: 按照所述資源子節(jié)點(diǎn)的資源類型和名稱,查找第一 Net程序集和第二Net程序集中是 否存在相對(duì)應(yīng)的資源子節(jié)點(diǎn), 若存在相對(duì)應(yīng)的資源子節(jié)點(diǎn),比較相對(duì)應(yīng)的一對(duì)資源子節(jié)點(diǎn)的文本內(nèi)容或字符串編碼 值是否一致,當(dāng)至少一對(duì)資源子節(jié)點(diǎn)的文本內(nèi)容字符串編碼值不一致時(shí),得到標(biāo)記所述第 一 Net程序集和第二Net程序集的資源節(jié)點(diǎn)修改的差異信息,否則,得到標(biāo)記所述第一 Net 程序集和第二Net程序集的資源節(jié)點(diǎn)無(wú)變化的差異信息; 若不存在相對(duì)應(yīng)的資源子節(jié)點(diǎn),得到標(biāo)記第一 Net程序集的資源節(jié)點(diǎn)為新增且第二 Net程序集的資源節(jié)點(diǎn)為刪除的差異信息,或者,得到標(biāo)記第二Net程序集的資源節(jié)點(diǎn)為新 增且第一 Net程序集的資源節(jié)點(diǎn)為刪除的差異信息。
6. 根據(jù)權(quán)利要求2所述的方法,其特征在于,通過如下方式,對(duì)Net程序集的命名空間 節(jié)點(diǎn)進(jìn)行反編譯,得到命名空間節(jié)點(diǎn)的反編譯結(jié)果: 提取所述命名空間節(jié)點(diǎn)的名稱,并分別將所述命名空間節(jié)點(diǎn)的邏輯分組反編譯為文本 內(nèi)容,記錄該命名空間節(jié)點(diǎn)的名稱和文本內(nèi)容,得到該命名空間節(jié)點(diǎn)的反編譯結(jié)果; 相應(yīng)的,所述分別將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二 Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二Net程 序集的差異信息包括: 按照命名空間節(jié)點(diǎn)的名稱,查找第一 Net程序集和第二Net程序集中是否存在相對(duì)應(yīng) 的命名空間節(jié)點(diǎn), 若存在相對(duì)應(yīng)的命名空間節(jié)點(diǎn),比較相對(duì)應(yīng)的一對(duì)命名空間節(jié)點(diǎn)的各邏輯分組的文本 內(nèi)容是否一致,當(dāng)至少一對(duì)命名空間節(jié)點(diǎn)中的至少一個(gè)邏輯分組的文本內(nèi)容不一致時(shí),得 到標(biāo)記所述第一 Net程序集和第二Net程序集的命名空間節(jié)點(diǎn)修改的差異信息,否則,得到 標(biāo)記所述第一 Net程序集和第二Net程序集的命名空間節(jié)點(diǎn)無(wú)變化的差異信息; 若不存在相對(duì)應(yīng)的命名空間節(jié)點(diǎn),得到標(biāo)記第一 Net程序集的命名空間節(jié)點(diǎn)為新增且 第二Net程序集的命名空間節(jié)點(diǎn)為刪除的差異信息,或者,得到標(biāo)記第二Net程序集的命名 空間節(jié)點(diǎn)為新增且第一 Net程序集的命名空間節(jié)點(diǎn)為刪除的差異信息。
7. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述分別將所述第一 Net程序集各組成部 分對(duì)應(yīng)的反編譯結(jié)果與所述第二Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到 所述第一 Net程序集和第二Net程序集的差異信息包括: 當(dāng)?shù)玫綐?biāo)記第一 Net程序集和第二Net程序集的各組成部分都無(wú)變化的差異信息時(shí), 判定確認(rèn)所述第一 Net程序集和第二Net程序集對(duì)應(yīng)的原代碼為同一代碼,且所述原代碼 無(wú)修改;否則,判定所述第一 Net程序集和第二Net程序集分別對(duì)應(yīng)的原代碼之間存在修 改。
8. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 在將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二Net程序集中相應(yīng) 的組成部分的反編譯結(jié)果相比對(duì)時(shí),為比對(duì)出的每個(gè)差異點(diǎn)生成差異信息,記錄該差異信 息并將該信息在交互界面上顯示。
9. 一種獲取Net程序集間差異信息的裝置,其特征在于,所述裝置包括: 反編譯單元,用于按照劃分的Net程序集的組成部分,對(duì)第一 Net程序集和第二Net程 序集進(jìn)行反編譯,得到第一 Net程序集的第一反編譯結(jié)果和第二Net程序集的第二反編譯 結(jié)果; 反編譯結(jié)果提取單元,用于從所述第一反編譯結(jié)果中提取所述第一 Net程序集的各組 成部分對(duì)應(yīng)的反編譯結(jié)果,從所述第二反編譯結(jié)果中提取所述第二Net程序集的各組成部 分對(duì)應(yīng)的反編譯結(jié)果; 比對(duì)單元,用于分別將所述第一 Net程序集各組成部分對(duì)應(yīng)的反編譯結(jié)果與所述第二 Net程序集中相應(yīng)的組成部分的反編譯結(jié)果相比對(duì),得到所述第一 Net程序集和第二Net程 序集的差異息。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述反編譯單元采用的Net程序集的組成部分包括程序集描述節(jié)點(diǎn)、引用節(jié)點(diǎn)、資 源節(jié)點(diǎn)和命名空間節(jié)點(diǎn),或者,所述反編譯單元采用的Net程序集的組成部分包括程序 集描述節(jié)點(diǎn)、引用節(jié)點(diǎn)和命名空間節(jié)點(diǎn);其中,所述程序集描述節(jié)點(diǎn)包括下述信息項(xiàng): 程序集名稱、版本、區(qū)域性設(shè)置、公鑰;程序集支持的CPU架構(gòu)、程序集所依賴的Net框 架.NetFramework版本;程序集產(chǎn)品名稱、標(biāo)題、描述、版權(quán)、公司、由公共語(yǔ)言運(yùn)行庫(kù)的實(shí) 時(shí)編譯器生成的代碼的嚴(yán)格性、是否對(duì)Com可見、程序集唯一標(biāo)識(shí)、目標(biāo)Framework版本;以 及,所述引用節(jié)點(diǎn)包括至少一個(gè)引用子節(jié)點(diǎn);所述資源節(jié)點(diǎn)包括至少一個(gè)資源子節(jié)點(diǎn);所 述命名空間節(jié)點(diǎn)包括接口、類、枚舉和結(jié)構(gòu)的邏輯分組; 所述反編譯單元,用于分別將所述程序集描述中的各信息項(xiàng)反編譯為文本內(nèi)容,得到 所述程序集描述節(jié)點(diǎn)的反編譯結(jié)果; 相應(yīng)的,所述比對(duì)單元,用于分別將所述第一 Net程序集的程序集描述節(jié)點(diǎn)中各信息 項(xiàng)的反編譯結(jié)果,逐項(xiàng)與所述第二Net程序集的程序集描述節(jié)點(diǎn)中相應(yīng)信息項(xiàng)的反編譯結(jié) 果相比較,計(jì)算兩者反編譯結(jié)果的文本行差異,當(dāng)任一信息項(xiàng)的文本行差異指示存在差異 時(shí),得到標(biāo)記所述第一 Net程序集和第二Net程序集的程序集描述節(jié)點(diǎn)修改的差異信息; 以及, 所述反編譯單元,用于分析所述各引用子節(jié)點(diǎn)的引用類型,當(dāng)所述引用子節(jié)點(diǎn)的引用 類型為模塊引用時(shí),提取該引用子節(jié)點(diǎn)的模塊引用名稱,將該引用子節(jié)點(diǎn)反編譯為文本內(nèi) 容,記錄該引用子節(jié)點(diǎn)的引用類型、模塊引用名稱和文本內(nèi)容,得到該引用子節(jié)點(diǎn)的反編譯 結(jié)果;當(dāng)所述引用子節(jié)點(diǎn)的引用類型為程序集引用時(shí),提取該引用子節(jié)點(diǎn)所引用程序集的 名稱,將該引用子節(jié)點(diǎn)反編譯為文本內(nèi)容,記錄該引用子節(jié)點(diǎn)的引用類型、所引用程序集的 名稱和文本內(nèi)容,得到該引用子節(jié)點(diǎn)的反編譯結(jié)果; 相應(yīng)的,所述比對(duì)單元,用于按照所述引用子節(jié)點(diǎn)的引用類型,利用模塊引用名稱或所 引用程序集的名稱查找第一 Net程序集和第二Net程序集中是否存在相對(duì)應(yīng)的引用子節(jié) 點(diǎn),若存在相對(duì)應(yīng)的引用子節(jié)點(diǎn),比較相對(duì)應(yīng)的一對(duì)引用子節(jié)點(diǎn)的文本內(nèi)容是否一致,當(dāng)至 少一對(duì)引用子節(jié)點(diǎn)的文本內(nèi)容不一致時(shí),得到標(biāo)記所述第一 Net程序集和第二Net程序集 的引用節(jié)點(diǎn)修改的差異信息,否則,得到標(biāo)記所述第一 Net程序集和第二Net程序集的引用 節(jié)點(diǎn)無(wú)變化的差異信息;若不存在相對(duì)應(yīng)的引用子節(jié)點(diǎn),得到標(biāo)記第一 Net程序集的引用 節(jié)點(diǎn)為新增且第二Net程序集的引用節(jié)點(diǎn)為刪除的差異信息,或者,得到標(biāo)記第二Net程序 集的引用節(jié)點(diǎn)為新增且第一 Net程序集的引用節(jié)點(diǎn)為刪除的差異信息; 以及, 所述反編譯單元,用于分析所述各資源子節(jié)點(diǎn)的資源類型,當(dāng)資源子節(jié)點(diǎn)的資源類型 為文本資源時(shí),提取該資源子節(jié)點(diǎn)的名稱,將該資源子節(jié)點(diǎn)反編譯為文本內(nèi)容,記錄該資源 子節(jié)點(diǎn)的名稱和文本內(nèi)容,得到該資源子節(jié)點(diǎn)的反編譯結(jié)果;當(dāng)資源子節(jié)點(diǎn)的資源類型為 二進(jìn)制資源時(shí),提取該資源子節(jié)點(diǎn)的名稱,將該資源子節(jié)點(diǎn)反編譯為字符串編碼值,記錄該 資源子節(jié)點(diǎn)的名稱和字符串編碼制,得到該資源子節(jié)點(diǎn)的反編譯結(jié)果; 所述比對(duì)單元,用于按照所述資源子節(jié)點(diǎn)的資源類型和名稱,查找第一 Net程序集和 第二Net程序集中是否存在相對(duì)應(yīng)的資源子節(jié)點(diǎn),若存在相對(duì)應(yīng)的資源子節(jié)點(diǎn),比較相對(duì) 應(yīng)的一對(duì)資源子節(jié)點(diǎn)的文本內(nèi)容或字符串編碼值是否一致,當(dāng)至少一對(duì)資源子節(jié)點(diǎn)的文本 內(nèi)容字符串編碼值不一致時(shí),得到標(biāo)記所述第一 Net程序集和第二Net程序集的資源節(jié)點(diǎn) 修改的差異信息,否則,得到標(biāo)記所述第一 Net程序集和第二Net程序集的資源節(jié)點(diǎn)無(wú)變化 的差異信息;若不存在相對(duì)應(yīng)的資源子節(jié)點(diǎn),得到標(biāo)記第一 Net程序集的資源節(jié)點(diǎn)為新增 且第二Net程序集的資源節(jié)點(diǎn)為刪除的差異信息,或者,得到標(biāo)記第二Net程序集的資源節(jié) 點(diǎn)為新增且第一 Net程序集的資源節(jié)點(diǎn)為刪除的差異信息; 以及, 所述反編譯單元,用于提取所述命名空間節(jié)點(diǎn)的名稱,并分別將所述命名空間節(jié)點(diǎn)的 邏輯分組反編譯為文本內(nèi)容,記錄該命名空間節(jié)點(diǎn)的名稱和文本內(nèi)容,得到該命名空間節(jié) 點(diǎn)的反編譯結(jié)果; 所述比對(duì)單元,用于按照命名空間節(jié)點(diǎn)的名稱,查找第一 Net程序集和第二Net程序 集中是否存在相對(duì)應(yīng)的命名空間節(jié)點(diǎn),若存在相對(duì)應(yīng)的命名空間節(jié)點(diǎn),比較相對(duì)應(yīng)的一對(duì) 命名空間節(jié)點(diǎn)的各邏輯分組的文本內(nèi)容是否一致,當(dāng)至少一對(duì)命名空間節(jié)點(diǎn)中的至少一個(gè) 邏輯分組的文本內(nèi)容不一致時(shí),得到標(biāo)記所述第一 Net程序集和第二Net程序集的命名空 間節(jié)點(diǎn)修改的差異信息,否則,得到標(biāo)記所述第一 Net程序集和第二Net程序集的命名空間 節(jié)點(diǎn)無(wú)變化的差異信息;若不存在相對(duì)應(yīng)的命名空間節(jié)點(diǎn),得到標(biāo)記第一 Net程序集的命 名空間節(jié)點(diǎn)為新增且第二Net程序集的命名空間節(jié)點(diǎn)為刪除的差異信息,或者,得到標(biāo)記 第二Net程序集的命名空間節(jié)點(diǎn)為新增且第一 Net程序集的命名空間節(jié)點(diǎn)為刪除的差異信 肩、。
【文檔編號(hào)】G06F9/45GK104252355SQ201310270955
【公開日】2014年12月31日 申請(qǐng)日期:2013年6月29日 優(yōu)先權(quán)日:2013年6月29日
【發(fā)明者】朱志波 申請(qǐng)人:北京新媒傳信科技有限公司