天天看点

使用AI大规模删除Google二十多年累积下来十亿行中的无效程序代码。任何一个大型项目都一定会积累很多死码,即是那些不再

作者:电脑新视野

使用AI大规模删除Google二十多年累积下来十亿行中的无效程序代码。任何一个大型项目都一定会积累很多死码,即是那些不再使用的模块,或者存在多年无效的程序。据Google介绍,该项目非常成功,每个星期可提交超过1000个待删除的变更列表,而且截至目前已经删除Google整个C++程序代码中的5%。

这些死码会不断产生成本,自动化测试系统并不知道哪些程序代码不需要再测试,同时也需要耗费大量时间维护。那么,能不能在减少程序代码量来降低维护成本,如何清除程序代码库里面不再使用的死码。

Google与其他公司不同的地方,就是它只有一个程序代码库,全公司的程序代码都放在这个库里面,二十多年来,几万名软件工程师为同一个包含数十亿行的程序代码库提交贡献。这套程序代码库存储在Piper系统中,与编码相关的共享库原始码、生产服务、实验程序、诊断和调试工具等都聚集在这里。

这样单一程序代码库,最坏的情况就是不小心删除原始码,Google SRE首席软件工程师说,这意味着Google使用的每个数据中心、每个工作站都会突然停止运行,不仅是关闭,甚至连存储也无法使用。

那么,他们是怎么清理这些死码,Google在其部落格中介绍Sesenmann「自动删除程序代码」项目,该项目的目标是自动辨识出无效程序代码,再发送程序代码审查请求以将其删除。

Google创建的Blaze系统是完成这个目标的重点:它会以一致且可造访的方式表示二进制目标、库、测试和源文件之间的相互关系,维护者跟据此建立关系图找到未连接至任何二进制文件的库,并将其视为潜在的删除对象。

那么二进制文件又如何处理,对于内部二进制文件,程序在运行时会写入一个日志条目,记录下时间和对应的特定二进制文件。通过汇总,获得Google内部使用的各个二进制文件的活跃度讯号。如果某个程序有一段很长时间都没有被使用,该项目就会尝试发送相应的删除以变更列表。

Source:Sensenmann: Code Deletion at Scale

使用AI大规模删除Google二十多年累积下来十亿行中的无效程序代码。任何一个大型项目都一定会积累很多死码,即是那些不再
使用AI大规模删除Google二十多年累积下来十亿行中的无效程序代码。任何一个大型项目都一定会积累很多死码,即是那些不再
使用AI大规模删除Google二十多年累积下来十亿行中的无效程序代码。任何一个大型项目都一定会积累很多死码,即是那些不再

继续阅读