Loading...
Uber开源Piranha——一种自动删除陈旧代码的工具
勿扰心安 发布于 03/18 09:22 浏览 210

今天,优步推出了开源软件Piranha,这是一款自动从应用程序代码库中删除过时和未使用代码的工具。该公司表示,它消除了工程师亲自参与代码删除任务的需要,这通常使他们无法使用较新的功能。

具体而言,Piranha可以帮助维护应用程序的企业加快其开发生命周期,进而可以降低成本并改善最终用户体验。

“在Uber,我们使用功能标记来自定义我们的移动应用执行,为不同的用户组提供不同的功能。例如,这些标志使我们能够将用户的体验本地化到我们运营的不同区域,更重要的是,逐步向我们的用户推出功能并尝试使用相同功能的不同变体,” Uber在博客中写道。“然而,当一个功能被100%发布给我们的用户,或者一个实验功能被认为不成功时,代码中的功能标志就会过时。”这些非功能性特征标志代表技术负担,使开发人员难以在代码库上工作,并可能使我们的应用程序膨胀,需要不必要的操作,从而影响最终用户的性能,并可能影响整个应用程序的可靠性。”

Piranha扫描Objective-C、Swift和Java中的源代码,删除与过时的特性标志相关的代码,理论上生成更干净、更高效、更可维护的代码库。优步表示,其Android和iOS代码库正在运行Piranha,该工具已被用于删除大约2000个过时的特征标志和相关代码。

Piranha将标志名称,预期的处理行为以及标志作者的名称作为输入。然后,它分析程序的抽象语法树以生成重构(不影响行为的代码结构更改),该重构打包到所谓的diff中,并标记要删除的代码路径。将差异分配给标志的作者以进行进一步检查,后者可以将更改提交到主代码库,或者在必要时执行其他重构。

Uber指出,Piranha既可以用作独立工具,也可以用作管道的一部分。在管道配置中,它查询标记管理系统以获取陈旧标记的列表,并为每个标记提供陈旧标记的名称,其所有者以及预期的输出行为。Piranha生成一个差异并将其放入代码审查系统中,该标志的原始作者为默认审查者。(作者可以按原样接受diff,根据需要对其进行修改,也可以拒绝并标记该标记为不过期。)然后使用提醒机器人PiranhaTidy生成清理任务,以跟踪每个生成的diff的状态。会定期添加有关与Piranha相关的任务的提醒。

Piranha管道使用启发式方法来考虑在标记管理系统中未修改超过特定时间段(例如8周)的标记,并为这些标记生成差异。负责处理Piranha的输出差异的各个团队为标志的陈旧性配置准确的时间段。

根据Uber的说法,Piranha可以处理数百万行代码,平均不到3分钟即可生成差异。从今天开始,它可用于广泛使用功能标记并具有特定API来控制功能标记行为的代码。“我们欢迎开发人员为Piranha做出贡献,” Uber继续说道。“欢迎所有能力的开发人员,并且进行Piranha的实施工作可能是了解该地区非专家进行程序分析的微妙方式的好方法。”

优步最近一直处于开源状态。Piranha的发布是在Manifold揭幕之后发布的。Manifold是用于调试AI和机器学习模型的可视化工具。随后发布了Plato,这是一个用于构建,培训和部署对话式AI和机器学习的平台。去年初,该公司首次推出了Ludwig,这是一个基于Google TensorFlow框架构建的开源工具箱,该工具箱使用户无需编写代码即可训练和测试AI模型。在2019年2月,Uber推出了自主可视化系统(AVS),这是一种基于Web的独立技术,用于了解和共享自主系统数据。


声明:本文由易百纳技术社区编写,文章内容来自venturebeat,版权归原作者所有,转载请注明出处,如有侵权请联系删除。

*本文仅代表作者观点,不代表易百纳技术社区立场。系作者授权易百纳技术社区发表,未经许可不得转载。

点赞0
收藏0

精彩评论

内容存在敏感词
确定要删除此文章、专栏、评论吗?
确定
取消

详细的问题描述有助于平台快速解决问题

屏幕截图
问题描述