脸书在GitHub上开源了Haskell程序代码重构工具Retrie,该工具可简化Haskell程序重构工作,提升整体重构速度,并且使重构程序代码更加安全,脸书提到,开发人员可以利用Retrie,重新编写超过100万行程序代码的大型Haskell程序,其使用Haskell语法中的方程式,而非正规表达式,因此更为简单,且Retrie还能避免出现大型类别的重构错误。
重构程序代码可以改善程序代码库的整体设计,但整个过程可能相当繁琐耗时,脸书表示,重构时为了避免错误,通常是以人工手动更改的方式进行,并且每次少量的渐增进行,但是随着程序代码增加,这种方法越来越不可行,需要使用工具来协助重构进行。
而重构工具主要分为两类,一类是查询和替代字符串工具,这类工具虽然执行快速,但是很难表达复杂的重写概念,而另一种则是解析和操作抽象语法树(Abstract Syntax Tree,AST)的工具,但因为需要广泛的领域知识门槛较高,且较字符串替代的方法慢。
Retrie的定位则在两者中间,相较定义正规表达式和AST走访,以Haskell语法方程式进行重新编写更容易,脸书表示,因为方程式比正规表达式更强大,而且可以编写脚本,因此Retrie比单纯取代字符串的方法更灵活,而且Retrie还利用多种解析技术,缩小寻找相符项目的搜索空间,比典型的AST工具更快。
脸书提到,在2015年的时候,他们发现反滥用规则引擎Sigma的规则日益增加,为了更容易地管理其规模以及复杂性,便把Sigma移植到了Haskell上,脸书利用Sigma来阻挡垃圾邮件、网络钓鱼攻击和恶意软件,进而保护脸书上的用户。Retrie可以让脸书快速安全地将Sigma的规则,搬迁到新的API以及函数库上。