靜態(tài)程序分析(Static program analysis)是指在不運行計算機程序的條件下震束,進行程序分析的方法。有些程序分析需要在程序運行時才能進行返咱,這種程序分析稱為動態(tài)程序分析。大部分的靜態(tài)程序分析的對象是針對特定版本的源代碼策吠,也有些靜態(tài)程序分析的對象是目標代碼茄猫。靜態(tài)程序分析一詞多半是指配合靜態(tài)程序分析工具進行的分析,人工進行的分析一般稱為程序理解或代碼審查列牺。 — 維基百科
這是一個靜態(tài)分析工具大集合整陌,其中[OSS]代表開源軟件,[PROPRIETARY]代表付費軟件瞎领,歡迎各位補充泌辫。
C/C++
CMetrics[OSS] – 測算C文件的大小及復雜性
cqmetrics[OSS] – C代碼的質量度量工具
clang-tidy[OSS] – clang靜態(tài)分析
cppcheck[OSS] – C/C++代碼靜態(tài)分析
flawfinder[OSS] – 尋找可能存在的安全漏洞
flint++[OSS] – 跨平臺, 無依賴端口的flint, 由C++程序開發(fā),F(xiàn)acebook也在用
oclint[OSS] – C/C++代碼靜態(tài)分析
splint[OSS] – C/C++代碼靜態(tài)分析
tis-interpreter[OSS] – 由標準C寫的一款用于尋找敏感bug的解釋器
vera++[OSS] – Vera++是一個可用于驗證九默,分析以及變換C++源代碼的可編程工具
C
Code Analysis Rule Collection[OSS] – 包含一組特征, 代碼修復以及在Microsoft .NET編譯器平臺”Roslyn”進行了重構
code-cracker[OSS] – 一款適用于C#和VB的分析庫震放,且使用Roslyn進行重構, 代碼分析
CSharpEssentials[OSS] – C# Essentials是一個Roslyn特征分析程序集合, 代碼修復以及進行重構讓其更能適應C# 6語言的特性
Designite[PROPRIETARY] – Designite是一款設計質量評估工具,測算各種各樣的代碼質量度量以及趨勢分析
Gendarme[OSS] – Gendarme 檢測包含在ECMA CIL 格式 (Mono and .NET)中的項目以及函數(shù)庫荤西,尋找出代碼中會出現(xiàn)的一些常見問題(編譯器一般不會檢測的問題)
.NET Analyzers[OSS] – 一個專注于開發(fā)分析器的組織(特征, 代碼修復, 重構) ,使用.NET編譯平臺
SonarLint for Visual Studio[OSS] – SonarLint是Visual Studio 2015中的一個擴展伍俘,其支持向開發(fā)者動態(tài)反饋新bug以及將質量問題注入.NET代碼
Refactoring Essentials[OSS] – Visual Studio 2015擴展用于C#以及VB.NET重構, 提供有關代碼質量的建議
ReSharper[PROPRIETARY] – 擴展Visual Studio支持動態(tài)代碼檢測C#, VB.NET, ASP.NET, JavaScript, TypeScript以及其他技術
VSDiagnostics[OSS] – 一個基于Roslyn且集成了VS的靜態(tài)分析器集合
Wintellect.Analyzers[OSS] – Wintellect寫的.NET編譯平臺(“Roslyn”) 特征分析器以及代碼修復工具
容器
clair[OSS] – 用于容器的漏洞靜態(tài)分析
collector[OSS] – 容器內(nèi)運行任意腳本,然后收集可用信息
Haskell Dockerfile Linter[OSS] – 一款智能Dockerfile linter邪锌,可以幫助你構建Docker鏡像最佳實踐
CSS
CSS Stats[OSS] – 在樣式表中潛在有趣的統(tǒng)計數(shù)據(jù)
Parker[OSS] – 樣式表分析工具
scsslint[OSS] – SCSS文件小工具
Specificity Graph[OSS] – CSS特征性圖表生成器
Stylelint– [OSS] – SCSS/CSS文件小工具
Elixir
credo[OSS] – 一款專注于教學以及代碼相容性的靜態(tài)代碼分析工具
Go
dingo-hunter[OSS] – 用于在Go程序中找出deadlocks的靜態(tài)分析器
flen[OSS] – 在Go程序包中獲取函數(shù)長度信息
go/ast[OSS] – Package ast聲明了關于Go程序包用于表示語法樹的類型
gocyclo[OSS] – 在Go源代碼中測算cyclomatic函數(shù)復雜性
Go Meta Linter[OSS] – 同時Go lint工具且工具的輸出標準化
go vet[OSS] – 檢測Go源代碼并報告可疑的構造
ineffassign– 在Go代碼中檢測無效賦值
safesql[OSS] – Golang靜態(tài)分析工具,防止SQL注入
Groovy
CodeNarc[OSS] – 一款Groovy源代碼靜態(tài)分析工具, 授權檢驗和執(zhí)行大多數(shù)編碼編著以及最佳實踐癌瘾。
Haskell
HLint[OSS] – HLint是一款提高Haskell代碼質量的工具
HTML
HTMLHint[OSS] – HTML靜態(tài)代碼分析工具
HTML Inspector[OSS] – HTML Inspector是一款代碼質量工具觅丰,用以幫助你的團隊寫出更好的代碼
Java
checkstyle[OSS] – 檢測Java源代碼以堅持一個代碼標準或者一組驗證規(guī)則(最佳實踐)
ckjm[OSS] – 通過處理編譯好的Java文件的字節(jié)碼來計算Chidamber和Kemerer面向對象度量工具
Error-prone[OSS] – 隨著編譯時錯誤信息捕獲Java常見的錯誤
fb-contrib[OSS] – FindBugs的一個插件,支持額外的bug檢測
Findbugs[OSS] – FindBugs是一個從Java程序中找到bugs的工具妨退,它的查找模式可能存在誤差
find-sec-bugs[OSS] – IDE/Sonarcube插件用于Java web應用程序的安全審計
HuntBugs[OSS] – 基于Procyon編譯工具的字節(jié)碼靜態(tài)分析器妇萄,旨在取代FindBugs.
PMD[OSS] – Java源代碼分析器
JavaScript
aether[OSS] – 程序集, 分析, 標準化, 重構, 沙盒, 運行, 單步調試, 以及可視化
ClosureLinter[OSS] – 確保你項目的所有JavaScript代碼遵循Google Javascript樣式指南蜕企,同時他還可以自動修復許多常見錯誤
complexity-report[OSS] – 針對JavaScript項目的軟件復雜性分析
escomplex[OSS] – 針對JavaScript系的抽象語法樹軟件復雜性分析
eslint[OSS] – 在Javascript代碼中對模式進行識別及報告
Esprima[OSS] – ECMAScript解析標準,支持多用途分析
quality[OSS] – 零配置代碼和模塊化程序集
jshint[OSS] – 檢測JavaScript代碼中的錯誤及潛在問題冠句,并執(zhí)行你的團隊約定好的編碼方式轻掩。
JSLint[PROPRIETARY] – JavaScript代碼質量工具
plato[OSS] – JavaScript可視化源代碼復雜度
yardstick[OSS] – Javascript代碼度量工具
XO[OSS] – 執(zhí)行嚴格的代碼風格.
Lua
luacheck[OSS] – Lua代碼靜態(tài)分析工具
Makefile
portlint[OSS] – FreeBSD及DragonFlyBSD端口目錄驗證器
Packages
lintian[OSS] – Debian程序包靜態(tài)分析工具
Perl
Perl::Critic[OSS] – Perl源代碼最佳實踐
PHP
DesignPatternDetector[OSS] – 在PHP代碼中檢測設計模式
deptrac[OSS] – 在軟件層之間執(zhí)行依賴規(guī)則
exakat[OSS] – PHP自動化代碼審查引擎
GrumPHP[OSS] – 檢測每次提交的代碼
phan[OSS] – 來自etsy的現(xiàn)代化靜態(tài)分析器
php7cc[OSS] – PHP 7 兼容性檢查器
php7mar[OSS] – 幫助開發(fā)者快速將代碼移植到PHP 7
phpcpd[OSS] – 針對PHP代碼的復制/粘貼檢測工具.
PHP_CodeSniffer[OSS] – 檢測違反定義的編碼標準
phpdcd[OSS] – 針對PHP代碼的無作用代碼檢測工具
PhpDependencyAnalysis[OSS] – 為項目創(chuàng)建一個依賴關系圖標
Php Inspections (EA Extended)[OSS] – PHP靜態(tài)代碼分析工具
phpsa[OSS] – PHP靜態(tài)分析工具
PHPMD[OSS] – 在你的代碼中尋找可能出現(xiàn)的bug
PhpMetrics[OSS] – 預測代碼的復雜性度量
PHPQA[OSS] – 一款用于運行QA工具(phploc, phpcpd, phpcs, pdepend, phpmd, phpmetrics)的工具
PHP Refactoring Browser[OSS] – 重構助手
PHP-Token-Reflection[OSS] – 函數(shù)庫模擬PHP內(nèi)部反射
PHP-Parser[OSS] – PHP寫的一款PHP解析器
RIPS[OSS] – 一款用于PHP腳本漏洞的靜態(tài)源代碼分析工具
Tuli[OSS] – 靜態(tài)分析引擎
Python
bandit[OSS] – 在Python代碼中尋找常見安全問題的工具
jedi[OSS] – Python自動化/靜態(tài)分析函數(shù)庫
mccabe[OSS] – 檢測McCabe復雜性
mypy[OSS] – Python靜態(tài)類型分析工具,旨在結合動態(tài)類型及靜態(tài)類型的優(yōu)點
py-find-injection[OSS] – 從Python代碼中尋找SQL注入漏洞
pycodestyle[OSS] – (formerly pep8) Python風格檢查工具
pydocstyle[OSS] – Python docstring風格檢查工具
pyflakes[OSS] – 檢測Python源文件中的錯誤
pylint[OSS] – 尋找程序錯誤, 有助于執(zhí)行編碼標準以及嗅探代碼異味. 此外它還包括pyreverse (UML圖表生成器)以及symilar (一個類似的檢測工具). 以及可選的擴展
pyroma[OSS] – 評估Python項目懦底,并列出問題幫助提高代碼質量
vulture[OSS] – 尋找Python代碼中未使用的類,函數(shù)唇牧,變量
xenon[OSS] – 使用radon監(jiān)控代碼復雜度
R
lintr[PROPRIETARY] – R靜態(tài)代碼分析工具
Ruby
brakeman[OSS] – Ruby on Rails應用的一個靜態(tài)分析安全漏洞掃描工具
cane[OSS] – 代碼質量標準檢查
dawnscanner[OSS] – ruby寫的靜態(tài)分析安全掃描器,支持Sinatra, Padrino以及Ruby on Rails框架
flay[OSS] – Flay 分析代碼結構相似之處
flog[OSS] – Flog在一個易于閱讀的報告中點出大多數(shù)不合規(guī)則的代碼聚唐,評價分數(shù)越高丐重,代碼就越糟糕
laser[OSS] – Ruby代碼的風格小工具集和靜態(tài)分析工具
Mondrian[OSS] – 靜態(tài)分析及重構工具
pelusa[OSS] – 靜態(tài)分析Lint-type工具用以改善你的Ruby面向對象代碼
quality[OSS] – 使用社區(qū)工具在你的代碼中運行質量檢測
reek[OSS] – Ruby代碼異味檢測工具
rubocop[OSS] – Ruby靜態(tài)代碼分析工具, 基于Ruby社區(qū)風格指南
rubycritic[OSS] – Ruby代碼質量報告工具
ruby-lint[OSS] – Ruby靜態(tài)代碼分析工具
SandyMeter[OSS] – 用于檢測遵循Sandi Metz規(guī)則的Ruby代碼的靜態(tài)分析工具
Rust
clippy[OSS] – 一個代碼小工具集用于捕獲常見錯誤,以及提高Rust代碼質量
electrolysis[OSS] – 驗證Rust程序的工具
herbie[OSS] – 當使用一個不穩(wěn)定的浮點表達式時增加警告或者錯誤
linter-rust[OSS] – Atom擴展杆查,列出你的Rust文件扮惦。使用rustc和cargo
rustfix[OSS] – 讀取和應用由rustc提出的建議
Shell
shellcheck[OSS] – ShellCheck, 一個精通分析工具,為bash/sh shell腳本提出警告和建議
SQL
sqlint[OSS] – 簡單的SQL工具集
Swift
SwiftLint[OSS] – 執(zhí)行Swift編碼風格和約定的工具
Tailor[OSS] – 一個用Swift程序語言寫的靜態(tài)分析工具及源代碼工具集