• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種Java代碼檢測方法及裝置制造方法及圖紙

    技術編號:15690777 閱讀:287 留言:0更新日期:2017-06-24 03:26
    本申請提供一種Java代碼檢測方法及裝置,所述方法包括:接收待檢測的源代碼;分析源代碼的函數調用關系,得出所述源代碼的所有子結構代碼;獲取所述源代碼以及每一個子結構代碼調用的jar包集合;判斷所獲取的各個jar包集合是否存在沖突jar包;在所述獲取的各個jar包集合存在沖突jar包的情況下,輸出所述源代碼存在混淆后功能不一致的檢測結果。應用本申請實施例,可以實現提前發現java代碼存在混淆后代碼功能不一致的情況。

    Java code detecting method and device

    This application provides a Java code detection method and device, the method comprises: receiving the detected source code; analysis of source code of function calls, all the sub structure of the code to get the source code; obtaining the source code as well as each sub structure code to call the jar package set; each jar judgment gets a collection of packets if there is a conflict jar package; each jar gets in the packet conflict set jar packet, output of the source code to detect the presence of inconsistent results function after confusion. Applying this application example, it is possible to realize the inconsistent function of the code in advance when the Java code is confused.

    【技術實現步驟摘要】
    一種Java代碼檢測方法及裝置
    本申請涉及軟件開發
    ,尤其涉及一種Java代碼檢測方法及裝置。
    技術介紹
    在軟件開發過程中,對于編寫好的Java代碼通常可以使用代碼混淆工具(如proguard工具)對代碼進行混淆。混淆后的Java代碼相對于混淆前的Java代碼可以具有減少代碼量、增加代碼被破譯的難度等優點。然而,使用代碼混淆工具后,經常會發送混淆后的Java代碼功能與混淆前的Java代碼功能不一致,甚至混淆后代碼功能不可用的情況。現有技術中,針對混淆后代碼功能不一致的情況,通常會對混淆后的代碼進行測試。測試過程中需要用到測試用例。由于導致混淆后代碼功能不一致的原因多種多樣,一般一個測試用例只能發現一種原因,所以需要編寫盡可能多的測試用例。然而,編寫測試用例需要很高的成本,基于成本考慮無法無限制地增加測試用例,因此基于測試用例的測試無法覆蓋所有混淆后代碼功能不一致的情況,導致存在不能及時發現混淆后java代碼功能不一致的問題。
    技術實現思路
    本申請提供的一種Java代碼檢測方法及裝置,以解決現有技術中存在不能及時發現混淆后Java代碼功能不一致的問題。根據本申請實施例提供的一種Java代碼檢測方法,所述方法包括:接收待檢測的源代碼;分析源代碼的函數調用關系,得出所述源代碼的所有子結構代碼;獲取所述源代碼以及每一個子結構代碼調用的jar包集合;判斷所獲取的各個jar包集合是否存在沖突jar包;在所述獲取的各個jar包集合存在沖突jar包的情況下,輸出Java代碼存在混淆后功能不一致的檢測結果。可選的,所述獲取所述源代碼以及每一個子結構代碼調用的jar包集合,具體包括:讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包;讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包;將所述源代碼調用的jar包以及所述每一個子結構代碼調用的jar包,存入對應的jar包集合。可選的,所述讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包,具體包括:讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包的名稱以及版本號;所述讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包,具體包括:讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包的名稱以及版本號。可選的,所述配置文件包括pom文件或者build.gradle文件。可選的,所述判斷所獲取的各個jar包集合是否存在沖突jar包,具體包括:獲取所獲取的各個jar包集合中jar包的名稱以及版本號;判斷是否存在相同名稱、不同版本號的jar包;相應地,所述在所述獲取的各個jar包集合存在沖突jar包的情況下,輸出Java代碼存在混淆后功能不一致的檢測結果,具體包括:在存在相同名稱、不同版本號的jar包的情況下,將其加入到沖突jar包集合;輸出所述沖突jar包集合以及Java代碼存在混淆后功能不一致的檢測結果。根據本申請實施例提供的一種Java代碼檢測裝置,所述裝置包括:接收單元,接收待檢測的源代碼;分析單元,分析源代碼的函數調用關系,得出所述源代碼的所有子結構代碼;獲取單元,獲取所述源代碼以及每一個子結構代碼調用的jar包集合;判斷單元,判斷所獲取的各個jar包集合是否存在沖突jar包;輸出單元,在所述獲取的各個jar包集合存在沖突jar包的情況下,輸出Java代碼存在混淆后功能不一致的檢測結果。可選的,所述獲取單元,具體包括:第一讀取子單元,讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包;第二讀取子單元,讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包;存儲子單元,將所述源代碼調用的jar包以及所述每一個子結構代碼調用的jar包,存入對應的jar包集合。可選的,所述第一讀取子單元,具體包括:讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包的名稱以及版本號;所述第二讀取子單元,具體包括:讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包的名稱以及版本號。可選的,所述配置文件包括pom文件或者build.gradle文件。可選的,所述判斷單元,具體包括:獲取子單元,獲取所獲取的各個jar包集合中jar包的名稱以及版本號;判斷子單元,判斷是否存在相同名稱、不同版本號的jar包;相應地,所述輸出單元,具體包括:存儲子單元,在存在相同名稱、不同版本號的jar包的情況下,將其加入到沖突jar包集合;輸出子單元,輸出所述沖突jar包集合以及Java代碼存在混淆后功能不一致的檢測結果。本申請實施例中,java代碼混淆后不一致的原因是由于調用相同jar包的版本號存在不一致;所以通過分析源代碼的所有子結構代碼,從而獲取所述源代碼和所有子結構代碼調用的jar包集合;在所述獲取的各個jar包集合存在沖突jar包的情況下,可以得出Java代碼存在混淆后功能不一致的檢測結果。如此,無需通過編寫測試用例,僅通過掃描混淆前的源代碼既可以提前發現使用混淆工具后出現的功能不一致的情況。附圖說明圖1是本申請提供的代碼結構的示意圖;圖2是本申請一實施例提供的Java代碼檢測方法的流程圖;圖3是圖2中步驟130的具體步驟的流程圖;圖4是本申請提供的Java代碼檢測裝置所在設備的一種硬件結構圖;圖5是本申請一實施例提供的Java代碼檢測裝置的模塊示意圖。具體實施方式這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯的列出項目的任何或所有可能組合。應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。本申請實施例可以應用在對Java代碼進行測試的測試客戶端。所述測試客戶端可以是軟件上的測試程序。所述測試客戶端也可以是指軟硬結合的客戶端,例如安裝了測試程序的設備。如今隨著應用功能的越來越多,越來越全,滿足了用戶需求的同時,對于編程人員來說,則意味著越來越多的代碼,為了方便區分不同的代碼所實現的功能,如今普遍采用的是分層架構也稱為多層架構(例如三層架構)的方式來編寫代碼。分層架構可以將大量代碼按照不同功能進行區分,不同層的代碼各司其職,不會相互影響;便于后期進行維護、擴展功能。如此,對于一個完整的Java代碼來說,其是由多個實現不同功能的子結構代碼組成的。所述子結構代碼一般會被封裝為一個函數例如addA();不同子結構代碼之間可以通過調用函數來傳遞本文檔來自技高網...
    一種Java代碼檢測方法及裝置

    【技術保護點】
    一種Java代碼檢測方法,其特征在于,所述方法包括:接收待檢測的源代碼;分析源代碼的函數調用關系,得出所述源代碼的所有子結構代碼;獲取所述源代碼以及每一個子結構代碼調用的jar包集合;判斷所獲取的各個jar包集合是否存在沖突jar包;在所述獲取的各個jar包集合存在沖突jar包的情況下,輸出所述源代碼存在混淆后功能不一致的檢測結果。

    【技術特征摘要】
    1.一種Java代碼檢測方法,其特征在于,所述方法包括:接收待檢測的源代碼;分析源代碼的函數調用關系,得出所述源代碼的所有子結構代碼;獲取所述源代碼以及每一個子結構代碼調用的jar包集合;判斷所獲取的各個jar包集合是否存在沖突jar包;在所述獲取的各個jar包集合存在沖突jar包的情況下,輸出所述源代碼存在混淆后功能不一致的檢測結果。2.根據權利要求1所述的方法,其特征在于,所述獲取所述源代碼以及每一個子結構代碼調用的jar包集合,具體包括:讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包;讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包;將所述源代碼調用的jar包以及所述每一個子結構代碼調用的jar包,存入對應的jar包集合。3.根據權利要求2所述的方法,其特征在于,所述讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包,具體包括:讀取所述源代碼的配置文件中記錄的所述源代碼調用的jar包的名稱以及版本號;所述讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包,具體包括:讀取所述子結構代碼的配置文件中記錄的所述子結構代碼調用的jar包的名稱以及版本號。4.根據權利要求2或3所述的方法,其特征在于,所述配置文件包括pom文件或者build.gradle文件。5.根據權利要求1所述的方法,其特征在于,所述判斷所獲取的各個jar包集合是否存在沖突jar包,具體包括:獲取所獲取的各個jar包集合中jar包的名稱以及版本號;判斷是否存在相同名稱、不同版本號的jar包;相應地,所述在所述獲取的各個jar包集合存在沖突jar包的情況下,輸出Java代碼存在混淆后功能不一致的檢測結果,具體包括:在存在相同名稱、不同版本號的jar包的情況下,將其加入到沖突jar包集合;輸出所述沖...

    【專利技術屬性】
    技術研發人員:楊磊磊
    申請(專利權)人:阿里巴巴集團控股有限公司
    類型:發明
    國別省市:開曼群島,KY

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 日韩乱码人妻无码系列中文字幕| 亚洲午夜AV无码专区在线播放| 久久国产精品无码一区二区三区 | 亚洲AV无码乱码国产麻豆| 国产精品午夜无码体验区 | 亚洲日韩乱码中文无码蜜桃臀网站| 国产AV无码专区亚洲AV手机麻豆| 成人免费午夜无码视频| 东京热加勒比无码视频| 国产精品久久无码一区二区三区网| 熟妇人妻中文a∨无码| 国产精品无码免费播放| 久久综合精品国产二区无码| 无码精品蜜桃一区二区三区WW| 亚洲性无码av在线| 亚洲Av永久无码精品三区在线 | 久久精品成人无码观看56| 无码国模国产在线观看免费| 精品无码一区二区三区爱欲| 亚洲国产精品无码专区| 国产成人无码a区在线视频| 国产精品va无码免费麻豆 | 无码中文字幕一区二区三区| 无码专区狠狠躁躁天天躁| 国产成人精品一区二区三区无码| 少妇极品熟妇人妻无码| 久久久久亚洲精品无码网址色欲| 久久99精品久久久久久hb无码| 亚洲成AV人片在线观看无码| 亚洲中文字幕无码一区| 亚洲永久无码3D动漫一区| 最新国产精品无码| 国精品无码一区二区三区左线| 岛国无码av不卡一区二区| 特级做A爰片毛片免费看无码| 国产精品国产免费无码专区不卡 | 亚洲AV中文无码乱人伦在线视色| 免费人妻av无码专区| 久久精品无码一区二区日韩AV| 免费无码国产在线观国内自拍中文字幕| 无码办公室丝袜OL中文字幕|