Uber 开源 Piranha,可自动删除过时代码
Uber 開源了一款自動化工具 Piranha,該工具能夠自動從應用程序代碼庫中刪除過時的和未使用的代碼。
▲Piranha,意為“食人魚”
根據 Uber 官方博客的介紹,開發 Piranha 的初衷是消除過時代碼帶來的負面影響。當一項特性已 100% 推送給用戶后,或某些實驗性功能失敗后,代碼中的特性標識(feature flags)就已過時。而它可能導致技術債的產生,使應用程序變得更加臃腫,開發人員為此要執行更多不必要的操作,甚至可能影響到程序的整體性能。消除技術債不僅耗時,也會影響到新功能的開發。
為了使該過程自動化,Uber 開發了Piranha,它可以通過掃描源代碼,來刪除與過時的特性標識相關的代碼,從而使代碼庫更清潔、更安全、性能更高,且更易于維護。對于企業來說,Piranha 有助于加快開發周期、降低維護成本,并改善用戶體驗。
目前為止,Piranha 已經在Uber 的Android 和 iOS 代碼庫中運行了相當長一段時間,被用來刪除了約兩千個過時的特性標識及相關代碼。開源后的Piranha 包含三個獨立的版本,分別支持三種不同的語言:Objective-C、Swift 和 Java。
Piranha 首先會輸入標識的名稱、預期的處理行為以及標識作者的名稱,接著分析程序的抽象語法樹(AST)以生成適當的重構,并將其打包到 diff 中,分配給對應的作者進一步檢查,作者可以將更改提交到主代碼庫,或者在必要時執行其他重構。
Uber 表示,Piranha 作為獨立工具可執行代碼重構,也可作為工作流管道的一部分。該管道可定期自動生成 diff 和任務,以清除過時的特性標識。
上圖展示了 Piranha 管道的架構圖。Piranha 會先生成一個 diff,將其放入代碼審查系統,該標識的原始作者為默認審查者。作者可以按原樣接受 diff,根據需要對其進行修改,也可以拒絕并將其標記為not being stale(未過時)。這個管道還在任務管理系統中生成了一個清理任務,以跟蹤每個 diff 的狀態。另外,由于開發人員并不總是能夠及時地對它們采取行動,這里還引入了一個被稱作PiranhaTidy 的提醒機器人,以定期添加 Piranha 相關任務的提醒。
Piranha 管道采用啟發式(heuristic)方法,將超過特定時間段未修改的標識視為過時,并為它們生成 diff。至于具體的時間段設置,可以自定義。根據Uber 的說法,Piranha 能夠處理數百萬行代碼,平均不到 3 分鐘即可生成 diff。
接下來,Piranha 有可能會擴展至更多語言,Uber 號召更多開發人員來一起為它做出貢獻。
有關Piranha 的更多信息可查看 Uber 博客原文:https://eng.uber.com/piranha/
總結
以上是生活随笔為你收集整理的Uber 开源 Piranha,可自动删除过时代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 是谁吹破了美股的泡沫?
- 下一篇: 都2020年了,无人驾驶汽车怎么还没来?