Android有静态分析工具吗

2026年09月26日 12:28
有1个网友回答
网友(1):

目前主流的静态分析工具有Klocwork,Coverity, TestBad...
因为他们的出发点不同,所以各有特点,在国内的发展情况也不一样。
klocwork注重代码质量与安全漏洞,在尽可能多的发现严重缺陷与准确的发现缺陷(工具都会有误报)之间找平衡。能够发现的安卓方面的问题包括:

未经验证的片段类名,未验证的外部数据;

空对象解引用 - 在 Android 应用中;

媒体播放器在退出前未释放;

媒体录制器在退出前未释放;

Sql 连接在退出前未关闭;

Sql 对象在退出前未关闭;

使用已回收的 bitmap;

使用已释放的 camera;

使用已释放的媒体播放器;

使用已释放的媒体录制器;

...
能够发现的java语言的缺陷包括:

Struts 问题

信息泄露

冗余代码

出错处理不当

可能的运行时故障

复制缺陷

弱加密

弱封装

影响可维护性的问题

影响质量安全的编码实践

忽略返回值

性能问题

拒绝服务

数据注入

未经验证的用户输入

特定规则

相等与哈希码问题

线程与同步问题

资源泄漏

跨站点脚本攻击 (XSS)

进程与路径注入

释放后使用
...
除了上面缺陷类型,它还支持分析c/c++、java、C#语言。
Klocwork支持年付与永久授权,在民口, BAT、 华为、 中兴 ...都在使用;在军口,使用的单位更多。

Coverity也是一款比较优秀的软件,但是前面已经提过,它追求的不一样,是尽可能的减少误报。不支持永久授权。

TestBad也是一款优秀的软件,相对于前面两种软件来说,更加注重于编码规范,软件编程标准。如MISRA.