Adair品科技|阿里云云效智能化代码平台的探索与实践( 二 )


''云豆''可以在智能引导环节分享更规范的工作方法 , 在智能评审环节快速定位问题高效完成工作 , 在智能答疑环节推荐最优解法 。 比如在新建评审环节 , 当选择好评审分支后 , 云豆可以智能推荐最佳评审者;云豆支持预估评审耗时 , 并可以根据预估评审耗时合理安排评审优先级 , 帮助开发者利用好碎片时间评审 。 在代码质量方面 , 云豆具备自动化质量和安全检测能力 , 并可自动推荐修复方案 。
Adair品科技|阿里云云效智能化代码平台的探索与实践
文章图片
我们可以将云效智能研发助手''云豆''提供的智能化评审过程抽象为上面这张图 , 当一个开发者新建了一个代码评审 , 云豆可以结合智能化及传统自动化检测手段对这段代码进行全方位的检测 , 并给出一个非常综合的评审意见 。 此时评审者只需要在云豆提供的评审意见之上 , 结合自己的工作经验及对业务逻辑的理解给出补充的评审意见即可 。
智能研发助手云豆背后的能力:代码缺陷检测与补丁推荐-PRECFIX
在云效智能研发助手云豆提供的智能评审过程中 , 究竟涉及哪些智能化的能力呢?首先 , 我们来看代码缺陷检测与补丁推荐技术-PRECFIX 。
Adair品科技|阿里云云效智能化代码平台的探索与实践
文章图片
在日常研发工作中 , 我们经常会用到P3C、PMD、FindBugs等传统自动化检测工具 , 但这些工具并不能完全解决阿里巴巴面临的代码质量问题 。 因为传统工具多是基于规则匹配 , 泛化能力不强 , 基于业务场景的缺陷很难识别出来 。 因此我们希望有一种对缺陷类型泛化能力比较强的缺陷检测方法或者工具 , 于是提出PRECFIX方法(PatchRecommendationbyEmpiricallyClustering) 。 PRECFIX的目标是通过智能化手段 , 可以实现毫秒级检测 , 能够修复部分偏业务缺陷 , 并给出对应的补丁推荐方案 。
PRECFIX代码检测过程主要分为三个阶段:风险识别、缺陷定位、补丁推荐 。 这个过程会涉及行为数据、代码数据、日志数据的处理 , 以及聚类算法、推荐算法、代码建模、特征提取、深度学习等算法技术 。
PRECFIX的技术实现思路其实并不复杂 , 首先我们从阿里巴巴集团内部海量的公开代码数据中提取代码提交(Commit)信息 , 基于一定规则挖掘出''缺陷修复对''(缺陷代码片段和补丁代码片段的组合) , 然后通过聚类算法将相似的''缺陷修复对''聚类 , 提取出对应的代码模板 。 在用户发起评审时 , 系统会自动扫描变更代码 , 若与缺陷模板库匹配 , 则会推荐给用户补丁模板用于修复 。
Adair品科技|阿里云云效智能化代码平台的探索与实践
文章图片
PRECFIX方法已经在阿里巴巴集团内部落地 , 其误报率在5%以下 , 在内部公开代码库中扫描出了800多种缺陷类型 , 3万多个缺陷 , 提取出了3000多个补丁模板 。
智能研发助手云豆背后的能力:评审耗时预估
Adair品科技|阿里云云效智能化代码平台的探索与实践
文章图片
当存在多个待处理评审的情况时 , ''评审耗时预估''可以帮助评审人预知评审的工作量 , 合理安排评审时间 , 利用碎片化时间进行充分的评审 , 提升评审效率 。
''评审耗时预估''的技术实现思路是怎样的呢?首先从几百万次的代码评审历史浏览数据中抽取特征 , 包括评审总行数、编程语言、历史评审时长、历史逐行时长等几十个维度的特征 , 从而去训练机器学习模型 。 当一个开发者提交了代码评审时 , ''云豆''会从他提交的diff文件中提取这些特征 , 从而估算这次评审需要的耗时 。
智能研发助手云豆背后的能力:敏感信息检测SecretRadar
Adair品科技|阿里云云效智能化代码平台的探索与实践


推荐阅读