Facebook開(kāi)源Haskell重構(gòu)工具Retrie

來(lái)源:十輪網(wǎng)
作者:十輪網(wǎng)編輯
時(shí)間:2020-07-13
2713
臉書(shū)在GitHub上開(kāi)源了Haskell程序代碼重構(gòu)工具Retrie,該工具可簡(jiǎn)化Haskell程序重構(gòu)工作,提升整體重構(gòu)速度,并且使重構(gòu)程序代碼更加安全,臉書(shū)提到,開(kāi)發(fā)人員可以利用Retrie,重新編寫(xiě)超過(guò)100萬(wàn)行程序代碼的大型Haskell程序,其使用Haskell語(yǔ)法中的方程式,而非正規(guī)表達(dá)式,因此更為簡(jiǎn)單,且Retrie還能避免出現(xiàn)大型類別的重構(gòu)錯(cuò)誤。

臉書(shū)在GitHub上開(kāi)源了Haskell程序代碼重構(gòu)工具Retrie,該工具可簡(jiǎn)化Haskell程序重構(gòu)工作,提升整體重構(gòu)速度,并且使重構(gòu)程序代碼更加安全,臉書(shū)提到,開(kāi)發(fā)人員可以利用Retrie,重新編寫(xiě)超過(guò)100萬(wàn)行程序代碼的大型Haskell程序,其使用Haskell語(yǔ)法中的方程式,而非正規(guī)表達(dá)式,因此更為簡(jiǎn)單,且Retrie還能避免出現(xiàn)大型類別的重構(gòu)錯(cuò)誤。

fireshot_capture_756_-_retrie_a_powerful_easy-to-use_codemodding_tool_for_haskell._-_hackage.haskell.org_.jpg

重構(gòu)程序代碼可以改善程序代碼庫(kù)的整體設(shè)計(jì),但整個(gè)過(guò)程可能相當(dāng)繁瑣耗時(shí),臉書(shū)表示,重構(gòu)時(shí)為了避免錯(cuò)誤,通常是以人工手動(dòng)更改的方式進(jìn)行,并且每次少量的漸增進(jìn)行,但是隨著程序代碼增加,這種方法越來(lái)越不可行,需要使用工具來(lái)協(xié)助重構(gòu)進(jìn)行。

而重構(gòu)工具主要分為兩類,一類是查詢和替代字符串工具,這類工具雖然執(zhí)行快速,但是很難表達(dá)復(fù)雜的重寫(xiě)概念,而另一種則是解析和操作抽象語(yǔ)法樹(shù)(Abstract Syntax Tree,AST)的工具,但因?yàn)樾枰獜V泛的領(lǐng)域知識(shí)門檻較高,且較字符串替代的方法慢。

Retrie的定位則在兩者中間,相較定義正規(guī)表達(dá)式和AST走訪,以Haskell語(yǔ)法方程式進(jìn)行重新編寫(xiě)更容易,臉書(shū)表示,因?yàn)榉匠淌奖日?guī)表達(dá)式更強(qiáng)大,而且可以編寫(xiě)腳本,因此Retrie比單純?nèi)〈址姆椒ǜ`活,而且Retrie還利用多種解析技術(shù),縮小尋找相符項(xiàng)目的搜索空間,比典型的AST工具更快。

臉書(shū)提到,在2015年的時(shí)候,他們發(fā)現(xiàn)反濫用規(guī)則引擎Sigma的規(guī)則日益增加,為了更容易地管理其規(guī)模以及復(fù)雜性,便把Sigma移植到了Haskell上,臉書(shū)利用Sigma來(lái)阻擋垃圾郵件、網(wǎng)絡(luò)釣魚(yú)攻擊和惡意軟件,進(jìn)而保護(hù)臉書(shū)上的用戶。Retrie可以讓臉書(shū)快速安全地將Sigma的規(guī)則,搬遷到新的API以及函數(shù)庫(kù)上。

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
版權(quán)說(shuō)明:本文內(nèi)容來(lái)自于十輪網(wǎng),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家