设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Facebook开源Haskell代码重构工具Retrie

2020-7-9 17:14| 发布者: joejoe0332| 查看: 1057| 评论: 0|原作者: oschina|来自: oschina

摘要: Facebook 开源了 Haskell 代码重构工具 Retrie,该工具能够使代码重构的过程更轻松、速度更快,也能够令重构后的代码更加安全。Retrie 拥有重写表达式、类型和模式的功能,还具有重写脚本和附加条件的能力,并包含一 ...
Facebook 开源了 Haskell 代码重构工具 Retrie,该工具能够使代码重构的过程更轻松、速度更快,也能够令重构后的代码更加安全。Retrie 拥有重写表达式、类型和模式的功能,还具有重写脚本和附加条件的能力,并包含一个用于编写更高级重写脚本的库。

根据 Facebook 给出的信息,开发者可以利用 Retrie 重新编写超过 100 万行的大型代码库,并且是使用 Haskell 语法的方程式,而非正则表达式,以避免出现大型类别的重构错误。

代码重构对改善代码库的总体设计来说很有必要,但这一过程也十分繁琐且耗时。因此,Facebook 表示,重构工作通常手动完成,增量也较小,这样才能尽可能地防止错误。然而,随着代码库大小的增长,这种方法会越来越行不通,必须依靠工具的辅助。

重构工具可粗略地归为两类:一类是查找和替换字符串操作工具,例如 sed,这类工具速度很快,但是很难表达复杂的重写概念;另一类是用于解析和处理抽象语法树(AST)的工具,这类工具功能较为强大,但需要的领域知识更广泛,与前一类工具相比来说,速度也较慢。

此次新开源的 Retrie 则介于这二者之间。与使用复杂的正则表达式或 AST 遍历相比,使用 Haskell 语法以方程式进行重构更加容易。Facebook 还介绍说,由于方程式比正则表达式更强大,并且可以编写脚本,因此 Retrie 比单独的字符串替换更好用。同时,Retrie 能够利用多种解析技术,有效地缩小匹配项目的搜索空间,比经典的 AST 操作工具要快。

Retrie 此前已在现实中得到了应用。Facebook 有一个名为 Sigma 的反规则滥用引擎,用来阻止垃圾邮件、网络钓鱼攻击和恶意软件。为了应对不断增长的数据规模和渐趋复杂的规则,Facebook 在 2015 年将 Sigma 迁移到了 Haskell 上,这次迁移正是通过 Retrie 来进行,Facebook 称它“快速又安全”。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部