如何提高代碼質量,推薦 7 個頂級靜態代碼分析工具

發表于:2021-4-13 09:45  作者:Saif Sadiq   來源:CSDN

字體: | 上一篇 | 下一篇 |我要投稿 | 推薦標簽: 質量管理 分析工具

  靜態代碼分析或源代碼分析是指使用靜態代碼分析工具對軟件的“靜態”(不運行的) 代碼進行分析的一種方法,找出代碼中潛在的漏洞。靜態代碼分析器檢查源代碼,找出特定的漏洞,并檢查代碼是否符合各種編碼標準。
  為什么要進行靜態代碼分析?
  · 在執行代碼之前獲取代碼洞見;
  · 與動態分析相比,執行速度更快;
  · 可以對代碼質量維護進行自動化;
  · 在早期階段 (盡管不是所有階段) 可以自動檢索 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 美元。

      本文內容不用于商業目的,如涉及知識產權問題,請權利人聯系51Testing小編(021-64471599-8017),我們將立即處理

評 論

論壇新帖

頂部 底部


建議使用IE 6.0以上瀏覽器,800×600以上分辨率,法律顧問:上海信義律師事務所 項棋律師
版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2021, 滬ICP備05003035號
投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

滬公網安備 31010102002173號

51Testing官方微信

51Testing官方微博

掃一掃 測試知識全知道

农村里的风流韵事