基于软件分析的智能化开发新型服务与技术

梁广泰,华为云软件分析 Lab 技术专家 / Team Leader,北京大学计算机系博士。研究领域是软件分析、智能化开发、软件工程领域等。

本文以技术文章的方式回顾梁老师在 SIG-程序分析 技术沙龙上的分享,回顾视频也已经上传 B 站,欢迎小伙伴们点开观看。

https://www.bilibili.com/video/BV1a44y187eKhttps://www.bilibili.com/video/BV1a44y187eK


大家好,非常感谢大家来参加我们今天的 SIG-程序分析技术沙龙。我是来自华为云软件分析 Lab 的梁广泰,今天给大家分享的主题是 基于软件分析的智能化开发新型服务与技术

技术趋势分析 #

先来看一下业界相关的技术趋势。我从云服务厂商的角度来给大家介绍一下,当前业界围绕该领域有做哪些事情。

缺陷检测与修复领域

首先看一下缺陷检测与修复 领域。

## Amazon - CodeGuru

Amazon 推出了一个叫 CodeGuru [1] 的 offering,其主要功能是通过全方位的缺陷检测和扫描,帮助程序员更快地识别出有问题的代码,并提供智能建议以进行代码修复。

图片

CodeGuru: 自动执行代码审查、持续监控性能并识别低效代码,提供智能建议以提高代码质量,降低代码维护及运行总体成本 [1]

该 offering 提供了两个子服务:

CodeGuru Reviewer

顾名思义,Reviewer 子服务其实就是用机器学习的方式,通过自动化推理的算法提供智能化代码审查的服务,帮助程序员进行各种类型的代码查找,提供代码修复的建议。

图片

CodeGuru Profiler

与其对应的另一个子服务是 Profiler。该服务更多的是利用插桩技术来监控程序运行时的状态,包括内存的消耗、CPU 的使用率等。通过分析运行时数据,提高程序的运行效率,甚至帮助程序员找到运行成本高昂的代码行。

图片

图片

## Microsoft - Azure

我们再来看一下微软的 Azure。

Github Code Scanning

Github 作为一个代码托管平台,同时也是全球最大的代码数据中心之一。围绕这个中心,Github 开展了各种各样的代码分析服务。微软收购 Github 之后,Azure 和 Github 进行了充分的集成,其中就包括了 Github 的 code scanning [2] 服务,可以在 Azure 上针对高危的 security issues 提供扫描的能力。

如下图示,在 Github 的代码提交页面上,Code Scanning 会自动地将识别到的缺陷告警显示在页面上,帮助程序员更快地去发现问题,从而在代码入库前拦截掉这些问题。

图片

Github Code Scanning [2]

Pipeline

除此之外,Azure 的 Pipeline [3] 也支持配置各种类型代码扫描的任务。与其他云厂商思路不同的是,Pipeline 的缺陷分析工具并不是由微软自己来提供,用户可以自由地配置外部的 static analyzer。例如,用户可以在本地部署一些静态分析的服务,在 Azure 里配置相关的链接,包括扫描的命令等,从而将本地和云端进行一个有机的集成。

图片

图片

支持设置代码扫描任务,覆盖主流缺陷检测工具 [3]

Monitor within Visual Studio

与此同时,微软也在不断地繁荣自己的代码分析能力。如下图示,Visual Studio 提供了一些监控的手段,用来帮助程序员更快地识别程序里的潜在问题,并给出更新提示。这其实和刚才提到的 Amazon CodeGuru Profiler 有类似之处。

图片

通过监控识别潜在性能问题,并给出优化建议 [4]

## 阿里云 - CodeUp

阿里云通过 CodeUp [5] 代码托管平台,也有在持续地拓展软件分析的能力。

依托 PMD 和 Sonar 插件完成合规检查

CodeUp 主要依托 开源代码扫描工具 PMD(Programming Mistake Detector)[6] 和 Sonar 插件(主要用于代码库全量自动化扫描阶段) 来完成相关的合规检查。

图片

代码质量 - 规约检测 P3C [7]

融合 AI 提供自动修复 / 敏感信息检查 / 评审智能化

阿里云在 ICSE-SEIP’20 上发表了代码自动修复技术 PRECFIX [8],能够基于数据挖掘的方式做模式挖掘,从而提供代码修复能力。

图片

代码质量 - PRECFIX [7]

提供多层敏感信息检测工具。

图片

代码安全 - 敏感信息检测 SecretRadar [7]

提供代码智能评审,以提高程序员研发效率。

图片

研发提效 - 智能评审 [7]

## CODING 平台

CODING [9] 平台(腾云扣钉科技有限公司,腾讯旗下全资子公司)也提供了代码扫描的能力。CODING 目前在内部集成了多种代码扫描工具、数千条规则,提供了很多主流编程语言的漏洞检测和修复的能力,同时支持用户配置方案,支持集成外部工具。

CODING 提供了分支代码质量分析的功能,可以帮助管理者快速了解分支的代码质量,例如:

图片

分支概览

图片

圈复杂度

查看 CODING 文档了解代码扫描更多功能:https://help.coding.net/docs/code-scan/intro.html

## 小结

  • 国内该类 DevOps - 检查产品还不够成熟,目前各大云厂商也是初步布局阶段,尚未形成稳定格局,市场机会尤在

  • 企业设施云化、数字化转型趋势下,软件质量(可用性、可靠性、安全、韧性)属性关注度将日益增强

  • 主流云服务厂商,目前全部涉足该领域,对代码缺陷检测与修复关注度持续增强,进一步确认了该研究方向的投资价值和必要性

  • 阿里围绕缺陷修复数据挖掘有研究成果发布,微软提供了 CodeQL 查询语言等,进一步确认了该项目关键技术路径(基于用户修复数据进行历史学习、基于 dsl 等提高缺陷检测能力可扩展性等)的合理性

开源成分治理领域

在这个部分我们介绍一下开源成分(即 Open-Source Components [10])治理。前面讲到的缺陷分析领域,更多是针对程序员自己开发出来的代码来分析,看里面是否有各种类型的问题。而开源成分更主要是围绕程序员在开发的过程中,可能大量复用的外部第三方的开源成分。

现代软件开发中开源成分的使用比例与日俱增,业界关注度也越来越高。那么,结合了开源成分的代码应该如何进行质量的保障?其实这也是需要通过一系列的智能化开发服务,或者软件分析服务来做到的。

那么,在开源成分治理领域,相关的云服务厂商正在做哪些实践呢?

## Microsoft Azure - Github Dependabot

我们还是先来看一下微软的 Azure。微软在 Github 上通过 Dependabot [11]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值