靜態代碼分析或源代碼分析是指使用靜態代碼分析工具對軟件的“靜態”(不運行的) 代碼進行分析的一種方法,找出代碼中潛在的漏洞。靜態代碼分析器檢查源代碼,找出特定的漏洞,並檢查代碼是否符合各種編碼標準。
爲什麼要進行靜態代碼分析?
在執行代碼之前獲取代碼洞見;
與動態分析相比,執行速度更快;
可以對代碼質量維護進行自動化;
在早期階段 (儘管不是所有階段) 可以自動檢索 bug;
在早期階段可以自動發現安全問題;
如果你在使用帶有靜態分析器的 IDE(例如遵循 PEP8 的 Pycharm),那你已經在“船”上了。
在知道了什麼是靜態代碼分析之後,接下來就有必要了解一下市場上有哪些好用的靜態代碼分析工具。廢話不多說,讓我們來看看現在比較流行的靜態代碼分析工具。
DeepSource
DeepSource 可以幫你在代碼評審期間自動發現並修復代碼中的問題。它可以與 Bitbucket、GitHub 或 GitLab 帳戶集成。這個工具可以找出反模式、bug 風險、性能問題。DeepSource 還會生成並跟蹤各種指標(例如依賴項計數、文檔覆蓋率等)。分析器先發現文件級別的問題 (如在特定位置發現反模式),並進一步發現代碼庫級別的問題 (如發現有些依賴項沒有安裝)。DeepSource Autofix 會爲檢測到的問題提出修復建議,並創建一個修復的拉取請求。
https://deepsource.io
關鍵特性
單個文件配置;
對拉取請求進行質量檢查;問題頻譜;
維護活躍度分析器;
可以詳細瞭解每一個問題;
跟蹤代碼指標;
定製分析,可以忽略掉一些問題;
分析器可以爲經常發生的問題提出修復建議,如果允許的話,它們還可以創建修復過的拉取請求;
對每個代碼提交和拉取請求進行 Black、YAPF、Go fmt 等代碼格式化。不需要進行 CI 設置。
缺點
不支持 PHP。
支持的語言
Python、JavaScript、Go、Ruby、Java、Docker、SQL、Terraform、Shell,以及 TestIdentify 和修復 bug 風險、提交代碼中的反模式、性能問題和安全缺陷。
定價
開源項目、學生和非營利組織可以免費使用。付費用戶從 12 美元 / 月起算。
SonarQube
SonarQube 是一種很流行的靜態分析工具,用於持續檢查代碼庫的代碼質量和安全性,並在代碼評審期間指導開發團隊。SonarQube 可與 CI/CD 集成,進行自動化代碼檢查。它還提供了質量管理工具幫你主動糾正錯誤:IDE 集成、Jenkins 集成和代碼評審工具。
https://www.sonarqube.org
關鍵特性
多語言支持;
安全性分析;
發佈質量代碼;
可維護性;
可以識別蹊蹺的問題。
缺點
並不是每個 IDE 都支持 SonarQube;
不能選擇忽略團隊不需要去修復的問題。
支持的語言
25 種以上的編程語言,包括 Java、C#、JavaScript、TypeScript、C/C++、COBOL 及其他。
定價
社區版是免費和開源的。商業版起步價爲 120 歐元。
Codacy
Codacy()是一個靜態分析工具,可以幫助開發人員處理技術債務並提高代碼質量。Codacy 監控每一次代碼提交和 PR 的代碼質量。你可以用它來加強代碼質量標準,加強安全實踐,並節省代碼評審時間。
https://www.codacy.com
關鍵特性
代碼評審自動化;
代碼質量分析;
安全代碼分析;
集羣安裝 / 多個實例。
缺點
缺乏與其他 SaaS 服務集成 (Sonatype、Blackduck、AWS API 網關的 API QOS 指標或 UI/E2E SaaS 測試服務) 的能力;
無法加密項目信息或限制對源代碼的訪問;
社區相對較小。
支持的語言
30 多種語言,包括 Elixir、Go、Java、JavaScript、JSON、Kotlin、Python、Ruby、Scala、Swift、TypeScript 等等。
定價
對開源免費,付費用戶起步價爲 15 美元 / 月。
DeepScan
DeepScan 是一個支持 JavaScript、TypeScript、React 和 Vue.js 的靜態分析工具。你可以使用 DeepScan 來查找部分運行時錯誤和質量問題,而不只是編碼風格問題。將 DeepScan 與你的 GitHub 代碼庫集成起來,以此來發現項目的質量問題。
https://deepscan.io
關鍵特性
缺陷跟蹤;
自動化構建;
代碼評審;
協作;
持續集成。
缺點
有限的語言支持。
支持的語言
JavaScript、TypeScript、React 和 Vue.js。
定價
對開源免費,付費用戶起步價爲 9 美元 / 月。
Embold
Embold 是一個通用的靜態分析器,可以幫助開發人員在關鍵代碼問題成爲障礙之前把它們找出來。它是一個有效診斷、轉換和維護應用程序的得力工具。它集成了人工智能和機器學習技術,可以找出一級問題,提供最佳解決方案,並在必要時重構應用程序。你可以在已有的 DevOps 技術棧中使用它,可以在內部使用,也可以在私有云和公共雲中使用它。
https://embold.io
關鍵特性
直觀的 UI;
更深入和更快的代碼檢查;
智能地提高性能;
無縫集成。
缺點
價格相對較高。
支持的語言
Java、C、C++、C#、Objective-C、TypeScript、JavaScript、Python、PHP、Go、Kotlin、Solidity、SQL。
定價
對開源免費,付費用戶每月 10 歐元。
Veracode
Veracode 是一種流行的靜態代碼分析工具。它只針對安全問題,跨管道執行代碼檢查,以便發現安全漏洞,並將 IDE 掃描、管道掃描和策略掃描作爲其服務的一部分。它會創建用於審計的代碼評估,作爲程序的一部分。
https://www.veracode.com/products/binary-static-analysis-sast
關鍵特性
編碼時的安全性問題反饋;
在管道中快速獲得結果;
令人滿意的審計能力;
不需要調整就可以獲得高精確度;
專注於修復問題。
缺點
不支持自定義掃描規則;
用戶體驗不是很好。
支持的語言
Java、.Net、JavaScript、Scala、Python、PHP、Ruby on Rails、ColdFusion、Swift、C/C++、COBOL、Visual Basic 6、RPG,等等。
定價
基於項目的規模定價,你可以在官網上提交表單來獲取報價。
Reshift
Reshift 是一個基於 SaaS 的軟件平臺,它無縫地集成到軟件開發工作流中,讓企業可以持續地部署安全的軟件產品,而不會減慢它們的速度。Reshift 減少了查找和修復漏洞、識別數據泄露的潛在風險以及幫助軟件公司實現合規性和法規要求的成本和時間。
https://www.reshiftsecurity.com
關鍵特性
快速配置;
安全性掃描;
安全性職責。
缺點
不支持 Java 以外的語言。
支持的語言
Java
定價
對開源免費,付費用戶起步價是每月 99 美元。
後臺回覆 學習資料 領取學習視頻
如有收穫,點個在看,誠摯感謝
本文分享自微信公衆號 - 猿天地(cxytiandi)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。