自动推理指机器进行逻辑推导的能力,其常见应用场景包括软件验证(确保计算机程序按预期执行)。尽管该领域已持续研究50年,但直到最近验证技术才适用于数百万行代码的工业级代码库。
自2019年起,某中心Prime Video自动推理团队开始创建软件开发工具,利用这些验证技术为视频平台应用的开发者提供更高代码可靠性保障。该应用需兼容数千种硬件配置,整合全球数十个团队用多种编程语言开发的组件,构成自动推理技术的特殊挑战环境。
2021年3月26日起,所有Prime Video开发者开始使用名为BugBear的自动推理机器人进行代码审查。该工具能在15分钟内提供反馈,支持C/C++、Java和TypeScript语言的分析。
在2020年下半年启动的试点中,BugBear执行了1000多次自动代码审查,发现约100个潜在问题,其中80%被开发者确认需要修改。其分析能力包括:
技术架构采用以下方案:
示例:若契约要求函数F中必须在use_resource()前调用open_resource,对应的Datalog规则如下:
violation(F) :-
calls(F, use_resource),
not called_before(open_resource, use_resource, F).构建精确的调用图(call graph)是不可判定问题,团队主要研究如何平衡近似图的精度与性能。当前正在开发按需验证系统,允许开发者在代码中添加"BugBear断言"进行针对性分析。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。