本发明专利技术涉及一种检测三方代码缺失方法及系统,包括
【技术实现步骤摘要】
一种检测三方代码缺失方法及系统
[0001]本专利技术涉及计算机
,尤其涉及一种检测三方代码缺失方法及系统
。
技术介绍
[0002]Android
项目在使用三方库的时候经常遇到依赖冲突的问题,虽然可以通过指定的策略解决冲突,使项目能够顺利编译,但是在解决冲突的时候可能会引入隐含的错误,例如项目使用了
LibA
和
LibB
,
LibA
使用了
LibC
的
1.0
版本,
LibB
使用了
LibC
的
2.0
版本,系统基于使用最新版本的策略,在编译的使用
LibC
的
2.0
版本,由于
LibC
在
2.0
版本移除了
1.0
版本中一些方法,
LibA
的代码在运行阶段出现了
NoSuchMethodError。Android
的打包过程不会对三方库重新编译,静态代码检查工具也无法检测这种缺陷,在运行阶段就会出现严重问题
。
[0003]Android
的代码缺陷检查工具主要有官方提供的
lint
和
Java
相关的代码检查工具
。
[0004]1.lint
检查工具:
lint
是
Android
默认代码检查工具,集成在
SDK
中,可以检查
Java、Kotlin
和
XML
代码中出现的问题
。
[0005]2.CheckStyle
:
CheckStyle
是一个
Java
静态代码检查工具,主要用来检查代码风格是否符合规范,也可以检测简单的代码缺陷
。
[0006]3.FindBugs
:
FindBugs
是一款
Java
缺陷检测工具,它通过分析静态字节码可以查找出
200
多种错误模式,例如空指针取消引用
、
无限递归循环
、Java
库的错误使用和死锁等
。
[0007]4.PMD
:
PMD
使用
Java
代码静态扫码工具,可以直接对未编译的代码进行检测,发现代码中可能存在的
Bug
和不安全的调用等
。
[0008]Soot
:
Soot
是一个
Java
字节码分析工具,它提供了多种字节码分析和变换功能,通过它可以进行过程内和过程间的分析优化,可以通过
SootApi
实现代码缺陷检查功能
。
[0009]以上所述的代码缺陷检查工具主要是对代码文件或者字节码文件进行静态检查,仅在一个文件范围内对代码进行上下文分析,无法进行过程间的分析,如果代码中调用了不存在的类或方法,上述工具则无法检测
。
其中,
Soot
虽然可以检测出是否调用了不存在的方法,但是必须在编译打包之后,而且实现过程复杂,检测速度比较慢
。
技术实现思路
[0010]为了解决上述
技术介绍
中提到的至少一个,本专利技术提出一种检测三方代码缺失方法及系统,通过在
Android
编译阶段对代码进行检测,查找所有代码缺失的问题,可以检测是否调用了不存在的代码,避免
NoSuchMethodError
和
NoClassDefFoundError
;同时本申请在编译阶段进行检查,利用
Android
编译阶段的插桩机制,检查速度快,可以方便的引入项目中,只需添加一个插件就可以使用,也可以通过添加规则的方式忽略指定的错误
。
[0011]为实现以上目的,本专利技术所采用的技术方案包括:
[0012]一种检测三方代码缺失方法,包括:
[0013]S1、
扫描项目中所有类方法,生成第一签名;
[0014]S2、
获取所述第一签名生成方法数据集合;
[0015]S3、
扫描所述项目中所有的方法调用,获取第二签名;
[0016]S4、
判断所述第一签名是否存在于所述方法数据集合中,若所述方法数据集合中不存在所述第一签名,则所述第二签名的对应的方法在所述项目中未被定义
。
[0017]进一步地,所述第二签名是被调用的方法的签名
。
[0018]进一步地,所述方法还包括:若所述方法数据集合中不存在所述第一签名,继续查找该类的父类和
/
或接口中是否存在所述第一签名对应的方法
。
[0019]进一步地,所述
S4
之后还包括,获取检测结果,生成检测报告
。
[0020]本专利技术还涉及一种检测三方代码缺失系统,包括:
[0021]第一扫描模块,用于扫描项目中所有类方法,生成第一签名;获取所述第一签名生成方法数据集合;
[0022]第二扫描模块,用于扫描所述项目中所有的方法调用,获取第二签名;
[0023]判断模块,用于判断所述第一签名是否存在于所述方法数据集合中,若所述方法数据集合中不存在所述第一签名,则所述第二签名的对应的方法在所述项目中未被定义
。
[0024]本专利技术还涉及一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法
。
[0025]本专利技术还涉及一种电子设备,包括存储器
、
处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法
。
[0026]本专利技术还涉及一种计算机程序产品,包括计算机程序和
/
或指令,其特征在于,该计算机程序和
/
或指令被处理器执行时实现上述方法的步骤
。
[0027]本专利技术的有益效果为:
[0028]本申请通过在
Android
编译阶段对代码进行检测,查找所有代码缺失的问题,可以检测是否调用了不存在的代码,避免
NoSuchMethodError
和
NoClassDefFoundError
;同时本申请在编译阶段进行检查,利用
Android
编译阶段的插桩机制,检查速度快,可以方便的引入项目中,只需添加一个插件就可以使用,也可以通过添加规则的方式忽略指定的错误
。
附图说明
[0029]图1为本专利技术检测三方代码缺失方法流程示意图
。
[0030]图2为本专利技术检测三方代码缺失系统结本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种检测三方代码缺失方法,其特征在于,包括:
S1、
扫描项目中所有类方法,生成第一签名;
S2、
获取所述第一签名生成方法数据集合;
S3、
扫描所述项目中所有的方法调用,获取第二签名;
S4、
判断所述第一签名是否存在于所述方法数据集合中,若所述方法数据集合中不存在所述第一签名,则所述第二签名的对应的方法在所述项目中未被定义
。2.
如权利要求1所述的方法,其特征在于,所述第二签名是被调用的方法的签名
。3.
如权利要求2所述的方法,其特征在于,所述方法还包括:若所述方法数据集合中不存在所述第一签名,继续查找该类的父类和
/
或接口中是否存在所述第一签名对应的方法
。4.
如权利要求3所述的方法,其特征在于,所述
S4
之后还包括,获取检测结果,生成检测报告
。5.
一种检测三方代码缺失...
【专利技术属性】
技术研发人员:孙伟,
申请(专利权)人:中信百信银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。