阿里巴巴代码缺陷检测探索中,还有哪些缺陷检测或补丁推荐技术?
1.Simfix 和 CBCD 主要是基于缺陷报告的补丁生成,利用代码克隆把缺陷报告和补丁迁移到新代码上。 2.Ubisoft 的 CLEVER 首先基于特征做了 commit 级别的缺陷预测,对风险较大的一些 commit 做二次检测,二次检测的方法是将缺陷报告根据代码的 dependency 聚类起来,然后做抽象语法树的节点相似度比较,游戏代码往往有一些相似的缺陷。 3.Bugram 是将代码解析成 token 序列,利用 Ngram 算法来预测出现某一个 token 的概率,概率低的 token 可能是个缺陷点,这种方法当代码复杂度变高或代码词汇数量过大后,效果就急剧下降。 4.Infer,Getafix,Sapfix 都是 Facebook 提出的,做的都很不错。Sapfix 主要是针对移动手机的 UI 做类似 Fuzzing 的缺陷检测,Infer 主要针对代码的 NPE 问题做了偏规则的检查,所以准确率较高,Getafix 是在 Infer 的检测结果的基础之上,对工程师修复的补丁做了模式聚类,将常用的 NPE 修复模式统计生成出来。 5.Tricorder 和 Findbugs 等工具都是比较成熟的代码检测器,开发者可以基于这之上定制自己的 检测机制,但比较依赖规则的人工制定。
答复内容摘自《云原生技术与架构实践年货小红书》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1127
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。