建議嘗試的七大靜態(tài)密碼分析工具
譯文【51CTO.com快譯】靜態(tài)代碼分析,或稱為源代碼分析,是一種將靜態(tài)代碼分析工具,以非運行的方式運用到軟件源代碼上,以審查其是否符合既定的編碼標準,進而發(fā)現(xiàn)各種潛在漏洞的方法。通常,靜態(tài)分析可以為我們帶來如下好處:
- 在代碼被執(zhí)行之前,獲取對其的深入洞見
- 與動態(tài)分析相比,靜態(tài)分析的執(zhí)行速度更快
- 可自動化維護代碼的質(zhì)量
- 能夠在早期階段自動搜索出部分錯誤(盡管不是全部)
- 可以在早期階段自動發(fā)現(xiàn)各種安全問題
在實際運用中,您可以使用任何帶有靜態(tài)分析器的IDE(如:Pycharm使用的是pep8),來開展靜態(tài)分析。下面,讓我們一起來探討一下,目前市場上七種領(lǐng)先的靜態(tài)代碼分析工具:
DeepSource可幫助您在代碼審查期間,自動查找并修復(fù)代碼中的各類問題。在使用過程中,它可以與用戶的Bitbucket、GitHub或GitLab帳戶相集成。該工具可以查找反模式(anti-patterns)、Bug風(fēng)險、以及由性能引發(fā)的各種問題。同時,DeepSource還會生成并跟蹤例如:依賴項數(shù)量、文檔覆蓋率等相關(guān)指標。
該分析器既可以運行在文件級別,在特定位置發(fā)現(xiàn)反模式;又可以運行在存儲庫級別,發(fā)現(xiàn)某些依賴項尚未安裝等深層次問題。此外,DeepSource的Autofix還會為發(fā)現(xiàn)的問題提供修復(fù)建議,并根據(jù)更改建議創(chuàng)建拉取式請求。
主要特征
- 提供單個文件配置
- 對拉取式請求進行質(zhì)量審查
- 能夠覆蓋廣泛的問題
- 提供主動且可維護的分析器
- 可詳細解析每個問題
- 可跟蹤代碼的各項指標
- 可通過自定義分析,選擇性忽略某些問題
- 可針對常見問題提出修復(fù)建議,如適合,可根據(jù)更改建議創(chuàng)建拉取式請求
- 無需設(shè)置CI,即可在每一次提交和拉取請求上,運行Black、YAPF、Go fmt等代碼格式化文件。
缺點
- 不支持PHP語言
語言支持
- 支持Python、JavaScript、Go、Ruby、Java、Docker、TestIdentify
- 能夠在每一次提交和拉取請求中覆蓋SQL、Terraform、Shell
定價:
- DeepSource免費提供給開源組織、學(xué)生組織、以及非營利組織使用。其付費計劃從每用戶、每月12美元起,具體請參見--https://deepsource.io/pricing/?utm_source=dzone。
作為一種流行的靜態(tài)分析工具,SonarQube可用于持續(xù)審查代碼庫中的代碼質(zhì)量和安全性,并在代碼審查期間給予開發(fā)團隊相應(yīng)的指導(dǎo)。同時,它也可被用于帶有CI/CD集成的自動化代碼審查中。此外,SonarQube還通過提供質(zhì)量管理工具,來主動協(xié)助IDE集成、Jenkins集成、持續(xù)集成服務(wù)器、以及確保代碼查看工具的正確設(shè)置。
主要特征
- 支持多語言
- 提供安全分析
- 確保代碼的發(fā)布質(zhì)量
- 具有可維護性
- 可識別出較為棘手的問題
缺點
- 并非所有的IDE都能夠支持SonarQube
- 無法為那些團隊暫時繞開,或暫緩解決的問題提供忽略選項
語言支持
- 支持包括Java、C#、JavaScript、TypeScript、C/C ++、以及COBOL等25種以上的編程語言
定價:
- SonarQube的社區(qū)版是免費和開源的。其商業(yè)版許可證的售價為120歐元起,具體請參見--https://www.sonarsource.com/plans-and-pricing/。
3.Codacy
Codacy是一種靜態(tài)分析工具,可以幫助開發(fā)人員解決技術(shù)問題,并提高代碼質(zhì)量。Codacy在每一次提交和PR(產(chǎn)品迭代)中監(jiān)視代碼質(zhì)量。您可以用它來執(zhí)行代碼質(zhì)量標準,執(zhí)行安全性實踐,并節(jié)省代碼審查的時間。
主要特征
- 提供代碼審查的自動化
- 提供代碼質(zhì)量分析
- 支持代碼安全性分析
- 支持集群安裝與多實例
缺點
- 缺乏與某些SaaS服務(wù)的集成,其中包括:Sonatype、Blackduck、AWS API網(wǎng)關(guān)的API QOS各項指標、以及UI/E2E的各種Saas測試服務(wù)
- 無法對項目的相關(guān)信息進行加密,或是限制對UI中的源代碼進行訪問
- 其擁有的社區(qū)相對較小
語言支持
- 支持包括Elixir、Go、Java、JavaScript、JSON、Kotlin、Python、Ruby、Scala、Swift、TypeScript等30多種語言。
定價:
- Codacy具有免費的開源版本。其高級版本的起價為每用戶、每月15美元,具體請參見--https://www.codacy.com/pricing。
4.DeepScan
DeepScan是一款業(yè)界技術(shù)領(lǐng)先的靜態(tài)分析工具。它能夠方便開發(fā)人員查找運行時(runtime)中的各項錯誤與質(zhì)量問題,而不僅僅停留在編碼規(guī)則的層面上。通過將DeepScan與目標GitHub存儲庫的集成,您可以對自己項目的產(chǎn)品質(zhì)量進行深入了解。
主要特征
- 錯誤追蹤
- 自動化構(gòu)建
- 代碼審查
- 協(xié)作
- 持續(xù)集成
缺點
- 支持的編程語言較為有限
語言支持
- 能夠支持JavaScript、TypeScript、React和Vue.js。
定價:
- DeepScan對于開源項目是免費的。其付費計劃從每用戶、每月9美元起,具體請參見--https://deepscan.io/pricing/。
5.Embold
作為一種通用的靜態(tài)分析器,Embold既可幫助開發(fā)人員在那些關(guān)鍵代碼問題出現(xiàn)在產(chǎn)品中之前,事先查找并定位它們,又能夠針對應(yīng)用程序,提供診斷、轉(zhuǎn)換和運維等服務(wù)。
由于整合了AI和機器學(xué)習(xí)技術(shù),Embold能夠通過評級機制,對發(fā)現(xiàn)的問題提出最佳解決方案,并按需對應(yīng)用進行重構(gòu)。而且,它可運行在諸如DevOps技術(shù)棧、本地系統(tǒng)、私有云、以及公有云中。
主要特征
- 直觀的用戶界面
- 提供更加深入和快速的審查
- 增強的智能性能
- 提供無縫的集成
缺點
- 定價過高
語言支持
- Java、C、C ++、C#、Objective-C、TypeScript、JavaScript、Python、PHP、Go、Kotlin、Solidity、SQL
定價:
- Embold的基本版本是免費開源的。其高級版本的售價從每月10歐元起,具體請參見--https://embold.io/pricing-cloud。
6.Veracode
Veracode是一款僅針對安全性問題的流行靜態(tài)代碼分析工具。它能夠通過IDE掃描、管道(pipeline)掃描、以及策略掃描等方式,在整個管道中執(zhí)行代碼審查,以發(fā)現(xiàn)安全漏洞。通過創(chuàng)建對于代碼的評估,Veracode能夠被作為程序的一部分進行審計。
主要特征
- 提供編碼時的安全性反饋
- 在管道中提供快速的運行成果
- 滿足審計員的各項要求
- 分析的精度較高,無需額外調(diào)優(yōu)
- 提供修復(fù)建議
缺點
- 不提供任何可自定義的掃描規(guī)則
- UX(用戶體驗)不太好
語言支持
Java、.NET、JavaScript、Scala、Python、PHP、Ruby on Rails、ColdFusion、Swift、C/C ++、COBOL、Visual Basic 6、RPG等
定價:
- Embold許可證的定價取決于目標項目的規(guī)模。您可以通過鏈接—https://info.veracode.com/request-quote.html,獲悉詳細報價。
7.Reshift
Reshift是一個基于SaaS的軟件平臺。它可以無縫地被集成到軟件開發(fā)的工作流程中。項目團隊可以用它來加速交付流程,并確保持續(xù)部署過程中的安全性。Reshift能夠減少他們花費在查找與修復(fù)漏洞,識別數(shù)據(jù)泄露的潛在風(fēng)險,以及協(xié)助軟件產(chǎn)品合規(guī)性等方面的成本和時間。
主要特征
- 能夠快速被設(shè)置
- 提供安全掃描
缺點
- 除Java之外,并不支持其他語言
語言支持
- Java
定價:
- Reshift的基本版本是免費開源的。其商業(yè)版的售價為每月99美元起,具體請參見--https://www.reshiftsecurity.com/pricing/。
原文標題:Top 7 Static Code Analysis Tools,作者:Saif Sadiq
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】