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