七大自動化持續(xù)代碼審查工具
譯文【51CTO.com快譯】眾所周知,靜態(tài)代碼分析可以協(xié)助開發(fā)人員改進(jìn)程序代碼的質(zhì)量。而在DevOps實踐中,我們通過將靜態(tài)分析集成到正在開發(fā)的工作流程中,從而在開發(fā)的早期階段解決代碼的質(zhì)量問題。當(dāng)然,這也使得持續(xù)集成(CI)流程增加了一個額外的階段--每當(dāng)有新的代碼產(chǎn)生合并請求時,CI服務(wù)器(或第三方服務(wù))便會開始分析代碼的質(zhì)量,并將結(jié)果放入合并請求中,以供提交者和代碼審查者使用。
為了讓審查者更需專注于代碼本身,我們往往需要自動化的代碼審查工具,與開發(fā)周期相集成,以實現(xiàn)即使新的代碼尚未合并到主代碼庫中,也能夠執(zhí)行代碼審查。您可以根據(jù)實際項目所用到的技術(shù)棧,從如下七種工具中進(jìn)行選擇,并無縫地集成到現(xiàn)有的工作流中。
1. DeepSource
DeepSource是一種靜態(tài)分析工具,可用于查找反模式、代碼缺陷、運行性能等方面的問題。除了代碼檢測,DeepSource還會生成并跟蹤諸如:依賴項計數(shù)、文檔覆蓋率等指標(biāo)。DeepSource的Autofix功能可以提出各種修復(fù)建議,并使用戶能夠針對常見問題創(chuàng)建提取請求。目前,DeepSource能夠與Bitbucket、GitHub或GitLab等帳戶輕松地相整合。此外,DeepSource還提供自動化的拉取請求,以方便分析器掃描已更改的文件,并將識別出的問題,直接報告并發(fā)送給UI。
主要特點
- 相對其他工具,其分析器能夠檢測到更多的缺陷。
- 能夠自動修復(fù)各種問題,以及格式化代碼。
- 提供更好的集成和開發(fā)人員體驗。
- 能夠保證誤報率低于5%。
- 可選擇性地忽略某些暫不處理的問題。
缺點
- 不支持PHP語言。
價格:DeepSource可被免費用于開源組織、學(xué)生組織、以及非營利組織。其售價為每用戶每月12美元。
2. Codacy
Codacy能夠協(xié)助開發(fā)人員通過解決程序中的技術(shù)難題,來提高代碼的質(zhì)量。它可以從代碼復(fù)雜性、兼容性、易錯性、安全性、以及代碼樣式等方面,來衡量代碼的質(zhì)量。Codacy也可以根據(jù)待實現(xiàn)的項目目標(biāo),按照文件或類別,來提供需要遵循的步驟、以及解決問題的建議。
主要特點
- 能夠從代碼樣式、安全性、錯誤傾向性、性能、以及未用到的代碼等類別跟蹤問題。
- 可分析提交和拉取請求。
- 能夠?qū)μ峤缓屠≌埱髮崿F(xiàn)自動注釋。
缺點
- 缺乏與其他SaaS服務(wù)的集成,包括:Sonatype、Blackduck、由AWS API Gateway提供的API QOS指標(biāo),以及UI/E2E的各種Saas測試服務(wù)。
- 無法加密項目的相關(guān)信息,或限制對UI源代碼的訪問。
- 其用戶社區(qū)相對較小。
價格:Codacy既提供免費的開源計劃,又具有起售價為每用戶每月15美元的高級計劃。
3. Code Climate
Code Climate既是一種代碼覆蓋率工具,又是一種自動化的源代碼審查器。通過與GitHub等平臺的集成,它能夠在持續(xù)集成的過程中,針對代碼庫的重復(fù)性、復(fù)雜性、樣式等因素進(jìn)行維護(hù)檢查。同時,Code Climate能夠根據(jù)各種既定的標(biāo)準(zhǔn),對目標(biāo)代碼環(huán)境的可維護(hù)性,進(jìn)行從A到F的分級。
主要特點
- 對拉取請求提供代碼審查級的注釋。
- 能為每個拉取請求生成測試覆蓋率。
- 使用CLI或IDE集成的方式,在本地執(zhí)行分析。
缺點
- 無法預(yù)測API。
- 不支持Objective-C。
- 其報告中只有帶有源代碼的標(biāo)頭,不提供對于發(fā)現(xiàn)問題的詳細(xì)描述。
- 只能將所有問題都以分頁列表的形式顯示,無法提供搜索/過濾。
價格:Code Climate對于10個用戶數(shù)以下的團(tuán)隊是免費的,其入門版的起售價為449美元,而企業(yè)版的起售價為649美元。
4. Codebeat
作為一種自動化代碼審查工具,Codebeat可以將靜態(tài)代碼分析的結(jié)果,收集到一個包含了代碼風(fēng)格、安全漏洞、待改進(jìn)代碼等信息的實時報告中。與流行工具--Code Climate的A到F分級標(biāo)準(zhǔn)類似,Codebeat使用的是4.0的等級系統(tǒng)。不過,與Code Climate不同的是,Codebeat通過使用算法,來分析代碼的復(fù)雜性。
主要特點
- 作為一款出色的團(tuán)隊管理工具,它可以為項目中的流動人員分配不同的訪問級別。
- 能夠與Slack、GitHub、Bitbucket和GitLab相集成。
缺點
- 無法檢測安全相關(guān)問題。
- 不支持CSS/SCSS的分析。
價格:Codebeat公共存儲庫是免費的,而私有存儲庫則需每月收費20美元(https://codebeat.co/pricing)。
5. Sonarcloud
Sonarcloud是一種基于云的代碼質(zhì)量工具與安全服務(wù)。它通過強大的靜態(tài)代碼分析能力,來跟蹤成千上萬種難以被發(fā)現(xiàn)的錯誤和質(zhì)量問題。同時,它也能根據(jù)檢測報告,估算代碼的覆蓋率。Sonarcloud為分析器提供了大量的規(guī)則,其中包括有關(guān)代碼風(fēng)格、錯誤、以及漏洞等方面的186種不同類型的JavaScript規(guī)則。
主要特點
- 當(dāng)檢測到特定的違規(guī)代碼時,它能夠阻斷拉取請求。
- 能夠發(fā)送帶有注釋的分析報告。
- 如果代碼質(zhì)量或安全性與需求不匹配,則會將管道設(shè)置為失敗。
缺點
- 不提供對于已編譯語言的自動掃描。
價格:Sonarcloud的社區(qū)版是免費且開源的。如果用戶的代碼行數(shù)(LOC)達(dá)到100k,則起售價為每月10歐元。
6. Embold
作為一個靜態(tài)分析平臺,Embold提供了AI輔助代碼測試,可識別代碼的脆弱性與漏洞,并能提出相應(yīng)的解決方案。它不但提供了云端和本地實例,而且為Intellij IDEA提供了免費的插件,因此您可以使用其快速掃描程序,來檢測Java代碼中潛在的錯誤、漏洞和代碼風(fēng)格,并在團(tuán)隊編輯代碼時提供實時的反饋。通過其評級功能,用戶可以一次性了解代碼的整體質(zhì)量,并獲悉存在問題的區(qū)域。
主要特點
- 其質(zhì)量門(Quality Gates)功能允許用戶設(shè)置存儲庫的質(zhì)量閾值。
- 其推薦引擎(Recommendation Engine,beta版)可以通過“學(xué)習(xí)”曾在代碼庫中發(fā)現(xiàn)到的問題,提前在新的代碼被提交之前,解決各種潛在問題。
- 其反模式可視化(Antipattern Visualization)功能能夠以圖形化的表示形式,解讀各種反模式。
缺點
- 售價偏高。
價格:Embold的基本版本是開源免費的。如果用戶的代碼行數(shù)(LOC)達(dá)到500k,則起售價為每月10歐元。
7. CodePeer
CodePeer是針對Ada和Java語言的代碼審查工具。通過逐行分析代碼的方式,它既能發(fā)現(xiàn)運行時可能出現(xiàn)的失敗點,又能發(fā)現(xiàn)疑似多余的、以及不能被代碼庫訪問的程序代碼。此外,CodePeer還能夠在前置條件和后置條件的環(huán)境中,對每個子程序進(jìn)行詳細(xì)分析,以發(fā)現(xiàn)潛在的錯誤和漏洞。
主要特點
- 可作為獨立工具運行在Windows和Linux平臺上。
- 可被用于集成測試和單元測試。
- 隨附有諸如編碼標(biāo)準(zhǔn)檢查器(GNATcheck),指標(biāo)計算器/報告器(GNATmetric)等其他工具。
缺點
- 售價較貴。
- 用戶社區(qū)較小。
價格:請參見鏈接--https://www.adacore.com/pricing。
小結(jié)
綜上所述,我們在選擇自動化持續(xù)代碼審查工具時,需要綜合考慮到如下方面:
- 可否分析具有大量規(guī)則的靜態(tài)代碼。
- 是否支持集成的種類與數(shù)量。
- 是否有完備的文檔。
- 是否易于使用、且靈活。
- 各種更新策略。
- 許可證的費用。
- 客戶支持的力度。
原文標(biāo)題:7 Continuous Code Quality and Automated Code Review Tools,作者:Shubhendra Chauhan
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】