[发明专利]一种Java代码检测方法及装置有效
申请号: | 201611192742.4 | 申请日: | 2016-12-21 |
公开(公告)号: | CN106874184B | 公开(公告)日: | 2020-07-14 |
发明(设计)人: | 杨磊磊 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 代码 检测 方法 装置 | ||
本申请提供一种Java代码检测方法及装置,所述方法包括:接收待检测的源代码;分析源代码的函数调用关系,得出所述源代码的所有子结构代码;获取所述源代码以及每一个子结构代码调用的jar包集合;判断所获取的各个jar包集合是否存在冲突jar包;在所述获取的各个jar包集合存在冲突jar包的情况下,输出所述源代码存在混淆后功能不一致的检测结果。应用本申请实施例,可以实现提前发现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包;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611192742.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种纺织印染脱水退捻开幅设备
- 下一篇:一种纱质纺织印染品开幅设备