7個頂級靜態(tài)代碼分析工具
作者丨Saif Sadiq 來自:infoQ策劃丨田曉旭
靜態(tài)代碼分析或源代碼分析是指使用靜態(tài)代碼分析工具對軟件的“靜態(tài)”(不運行的) 代碼進行分析的一種方法,找出代碼中潛在的漏洞。靜態(tài)代碼分析器檢查源代碼,找出特定的漏洞,并檢查代碼是否符合各種編碼標(biāo)準(zhǔn)。
在執(zhí)行代碼之前獲取代碼洞見;
與動態(tài)分析相比,執(zhí)行速度更快;
可以對代碼質(zhì)量維護進行自動化;
在早期階段 (盡管不是所有階段) 可以自動檢索 bug;
在早期階段可以自動發(fā)現(xiàn)安全問題;
如果你在使用帶有靜態(tài)分析器的 IDE(例如遵循 PEP8 的 Pycharm),那你已經(jīng)在“船”上了。
在知道了什么是靜態(tài)代碼分析之后,接下來就有必要了解一下市場上有哪些好用的靜態(tài)代碼分析工具。廢話不多說,讓我們來看看現(xiàn)在比較流行的靜態(tài)代碼分析工具。
DeepSource 可以幫你在代碼評審期間自動發(fā)現(xiàn)并修復(fù)代碼中的問題。它可以與 Bitbucket、GitHub 或 GitLab 帳戶集成。這個工具可以找出反模式、bug 風(fēng)險、性能問題。DeepSource 還會生成并跟蹤各種指標(biāo)(例如依賴項計數(shù)、文檔覆蓋率等)。分析器先發(fā)現(xiàn)文件級別的問題 (如在特定位置發(fā)現(xiàn)反模式),并進一步發(fā)現(xiàn)代碼庫級別的問題 (如發(fā)現(xiàn)有些依賴項沒有安裝)。DeepSource Autofix 會為檢測到的問題提出修復(fù)建議,并創(chuàng)建一個修復(fù)的拉取請求。
https://deepsource.io
單個文件配置;
對拉取請求進行質(zhì)量檢查;問題頻譜;
維護活躍度分析器;
可以詳細(xì)了解每一個問題;
跟蹤代碼指標(biāo);
定制分析,可以忽略掉一些問題;
分析器可以為經(jīng)常發(fā)生的問題提出修復(fù)建議,如果允許的話,它們還可以創(chuàng)建修復(fù)過的拉取請求;
對每個代碼提交和拉取請求進行 Black、YAPF、Go fmt 等代碼格式化。不需要進行 CI 設(shè)置。
不支持 PHP。
Python、JavaScript、Go、Ruby、Java、Docker、SQL、Terraform、Shell,以及 TestIdentify 和修復(fù) bug 風(fēng)險、提交代碼中的反模式、性能問題和安全缺陷。
開源項目、學(xué)生和非營利組織可以免費使用。付費用戶從 12 美元 / 月起算。
SonarQube 是一種很流行的靜態(tài)分析工具,用于持續(xù)檢查代碼庫的代碼質(zhì)量和安全性,并在代碼評審期間指導(dǎo)開發(fā)團隊。SonarQube 可與 CI/CD 集成,進行自動化代碼檢查。它還提供了質(zhì)量管理工具幫你主動糾正錯誤:IDE 集成、Jenkins 集成和代碼評審工具。
https://www.sonarqube.org
多語言支持;
安全性分析;
發(fā)布質(zhì)量代碼;
可維護性;
可以識別蹊蹺的問題。
并不是每個 IDE 都支持 SonarQube;
不能選擇忽略團隊不需要去修復(fù)的問題。
25 種以上的編程語言,包括 Java、C#、JavaScript、TypeScript、C/C++、COBOL 及其他。
社區(qū)版是免費和開源的。商業(yè)版起步價為 120 歐元。
Codacy()是一個靜態(tài)分析工具,可以幫助開發(fā)人員處理技術(shù)債務(wù)并提高代碼質(zhì)量。Codacy 監(jiān)控每一次代碼提交和 PR 的代碼質(zhì)量。你可以用它來加強代碼質(zhì)量標(biāo)準(zhǔn),加強安全實踐,并節(jié)省代碼評審時間。
https://www.codacy.com
代碼評審自動化;
代碼質(zhì)量分析;
安全代碼分析;
集群安裝 / 多個實例。
缺乏與其他 SaaS 服務(wù)集成 (Sonatype、Blackduck、AWS API 網(wǎng)關(guān)的 API QOS 指標(biāo)或 UI/E2E SaaS 測試服務(wù)) 的能力;
無法加密項目信息或限制對源代碼的訪問;
社區(qū)相對較小。
30 多種語言,包括 Elixir、Go、Java、JavaScript、JSON、Kotlin、Python、Ruby、Scala、Swift、TypeScript 等等。
對開源免費,付費用戶起步價為 15 美元 / 月。
DeepScan 是一個支持 JavaScript、TypeScript、React 和 Vue.js 的靜態(tài)分析工具。你可以使用 DeepScan 來查找部分運行時錯誤和質(zhì)量問題,而不只是編碼風(fēng)格問題。將 DeepScan 與你的 GitHub 代碼庫集成起來,以此來發(fā)現(xiàn)項目的質(zhì)量問題。
https://deepscan.io
缺陷跟蹤;
自動化構(gòu)建;
代碼評審;
協(xié)作;
持續(xù)集成。
有限的語言支持。
JavaScript、TypeScript、React 和 Vue.js。
對開源免費,付費用戶起步價為 9 美元 / 月。
Embold是一個通用的靜態(tài)分析器,可以幫助開發(fā)人員在關(guān)鍵代碼問題成為障礙之前把它們找出來。它是一個有效診斷、轉(zhuǎn)換和維護應(yīng)用程序的得力工具。它集成了人工智能和機器學(xué)習(xí)技術(shù),可以找出一級問題,提供最佳解決方案,并在必要時重構(gòu)應(yīng)用程序。你可以在已有的 DevOps 技術(shù)棧中使用它,可以在內(nèi)部使用,也可以在私有云和公共云中使用它。
https://embold.io
直觀的 UI;
更深入和更快的代碼檢查;
智能地提高性能;
無縫集成。
價格相對較高。
Java、C、C++、C#、Objective-C、TypeScript、JavaScript、Python、PHP、Go、Kotlin、Solidity、SQL。
對開源免費,付費用戶每月 10 歐元。
Veracode 是一種流行的靜態(tài)代碼分析工具。它只針對安全問題,跨管道執(zhí)行代碼檢查,以便發(fā)現(xiàn)安全漏洞,并將 IDE 掃描、管道掃描和策略掃描作為其服務(wù)的一部分。它會創(chuàng)建用于審計的代碼評估,作為程序的一部分。
https://www.veracode.com/products/binary-static-analysis-sast
編碼時的安全性問題反饋;
在管道中快速獲得結(jié)果;
令人滿意的審計能力;
不需要調(diào)整就可以獲得高精確度;
專注于修復(fù)問題。
不支持自定義掃描規(guī)則;
用戶體驗不是很好。
Java、.Net、JavaScript、Scala、Python、PHP、Ruby on Rails、ColdFusion、Swift、C/C++、COBOL、Visual Basic 6、RPG,等等。
基于項目的規(guī)模定價,你可以在官網(wǎng)上提交表單來獲取報價。
Reshift 是一個基于 SaaS 的軟件平臺,它無縫地集成到軟件開發(fā)工作流中,讓企業(yè)可以持續(xù)地部署安全的軟件產(chǎn)品,而不會減慢它們的速度。Reshift 減少了查找和修復(fù)漏洞、識別數(shù)據(jù)泄露的潛在風(fēng)險以及幫助軟件公司實現(xiàn)合規(guī)性和法規(guī)要求的成本和時間。
https://www.reshiftsecurity.com
快速配置;
安全性掃描;
安全性職責(zé)。
不支持 Java 以外的語言。
Java
對開源免費,付費用戶起步價是每月 99 美元。
?關(guān)注公眾號:Java后端編程,回復(fù)下面關(guān)鍵字?
要Java學(xué)習(xí)完整路線,回復(fù)??路線?
缺Java入門視頻,回復(fù):?視頻?
要Java面試經(jīng)驗,回復(fù)??面試?
缺Java項目,回復(fù):?項目?
進Java粉絲群:?加群?
PS:如果覺得我的分享不錯,歡迎大家隨手點贊、在看。
(完) 加我"微信"?獲取一份 最新Java面試題資料 請備注:666,不然不通過~
最近好文
1、Kafka 3.0重磅發(fā)布,棄用 Java 8 的支持!
最近面試BAT,整理一份面試資料《Java面試BAT通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。 獲取方式:關(guān)注公眾號并回復(fù)?java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。 明天見(??ω??)?

