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