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