静态程序分析(Static program analysis)是指在不运行计算机程序的条件下,进行程序分析的方法。有些程序分析需要在程序运行时才能进行,这种程序分析称为动态程序分析。大部分的静态程序分析的对象是针对特定版本的源代码,也有些静态程序分析的对象是目标代码。静态程序分析一词多半是指配合静态程序分析工具进行的分析,人工进行的分析一般称为程序理解或代码审查。 — 维基百科
这是一个静态分析工具大集合,其中[OSS]代表开源软件,[PROPRIETARY]代表付费软件,欢迎各位补充。
C/C++
CMetrics [OSS] – 测算C文件的大小及复杂性
cqmetrics [OSS] – C代码的质量度量工具
clang-tidy [OSS] – clang静态分析
cppcheck [OSS] – C/C++代码静态分析
flawfinder [OSS] – 寻找可能存在的安全漏洞
flint++ [OSS] – 跨平台, 无依赖端口的flint, 由C++程序开发,Facebook也在用
oclint [OSS] – C/C++代码静态分析
splint [OSS] – C/C++代码静态分析
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)中的项目以及函数库,寻找出代码中会出现的一些常见问题(编译器一般不会检测的问题)
.NET Analyzers [OSS] – 一个专注于开发分析器的组织(特征, 代码修复, 重构) ,使用.NET编译平台
SonarLint for Visual Studio [OSS] – SonarLint是Visual Studio 2015中的一个扩展,其支持向开发者动态反馈新bug以及将质量问题注入.NET代码
Refactoring Essentials [OSS] – Visual Studio 2015扩展用于C#以及VB.NET重构, 提供有关代码质量的建议
ReSharper [PROPRIETARY] – 扩展Visual Studio支持动态代码检测C#, VB.NET, ASP.NET, JavaScript, TypeScript以及其他技术
VSDiagnostics [OSS] – 一个基于Roslyn且集成了VS的静态分析器集合
Wintellect.Analyzers [OSS] – Wintellect写的.NET编译平台(“Roslyn”) 特征分析器以及代码修复工具
容器
clair [OSS] – 用于容器的漏洞静态分析
collector [OSS] – 容器内运行任意脚本,然后收集可用信息
Haskell Dockerfile Linter [OSS] – 一款智能Dockerfile linter,可以帮助你构建Docker镜像最佳实践
CSS
CSS Stats [OSS] – 在样式表中潜在有趣的统计数据
Parker [OSS] – 样式表分析工具
scsslint [OSS] – SCSS文件小工具
Specificity Graph [OSS] – CSS特征性图表生成器
Stylelint – [OSS] – SCSS/CSS文件小工具
Elixir
credo [OSS] – 一款专注于教学以及代码相容性的静态代码分析工具
Go
dingo-hunter [OSS] – 用于在Go程序中找出deadlocks的静态分析器
flen [OSS] – 在Go程序包中获取函数长度信息
go/ast [OSS] – Package ast声明了关于Go程序包用于表示语法树的类型
gocyclo [OSS] – 在Go源代码中测算cyclomatic函数复杂性
Go Meta Linter [OSS] – 同时Go lint工具且工具的输出标准化
go vet [OSS] – 检测Go源代码并报告可疑的构造
ineffassign – 在Go代码中检测无效赋值
safesql [OSS] – Golang静态分析工具,防止SQL注入
Groovy
CodeNarc [OSS] – 一款Groovy源代码静态分析工具, 授权检验和执行大多数编码编著以及最佳实践。
Haskell
HLint [OSS] – HLint是一款提高Haskell代码质量的工具
HTML
HTMLHint [OSS] – HTML静态代码分析工具
HTML Inspector [OSS] – HTML Inspector是一款代码质量工具,用以帮助你的团队写出更好的代码
Java
checkstyle [OSS] – 检测Java源代码以坚持一个代码标准或者一组验证规则(最佳实践)
ckjm [OSS] – 通过处理编译好的Java文件的字节码来计算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编译工具的字节码静态分析器,旨在取代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代码中的错误及潜在问题,并执行你的团队约定好的编码方式。
JSLint [PROPRIETARY] – JavaScript代码质量工具
plato [OSS] – JavaScript可视化源代码复杂度
yardstick [OSS] – Javascript代码度量工具
XO [OSS] – 执行严格的代码风格.
Lua
luacheck [OSS] – Lua代码静态分析工具
Makefile
portlint [OSS] – FreeBSD及DragonFlyBSD端口目录验证器
Packages
lintian[OSS] – Debian程序包静态分析工具
Perl
Perl::Critic [OSS] – Perl源代码最佳实践
PHP
DesignPatternDetector [OSS] – 在PHP代码中检测设计模式
deptrac [OSS] – 在软件层之间执行依赖规则
exakat [OSS] – PHP自动化代码审查引擎
GrumPHP [OSS] – 检测每次提交的代码
phan [OSS] – 来自etsy的现代化静态分析器
php7cc [OSS] – PHP 7 兼容性检查器
php7mar [OSS] – 帮助开发者快速将代码移植到PHP 7
phpcpd [OSS] – 针对PHP代码的复制/粘贴检测工具.
PHP_CodeSniffer [OSS] – 检测违反定义的编码标准
phpdcd [OSS] – 针对PHP代码的无作用代码检测工具
PhpDependencyAnalysis [OSS] – 为项目创建一个依赖关系图标
Php Inspections (EA Extended) [OSS] – PHP静态代码分析工具
phpsa [OSS] – PHP静态分析工具
PHPMD [OSS] – 在你的代码中寻找可能出现的bug
PhpMetrics [OSS] – 预测代码的复杂性度量
PHPQA [OSS] – 一款用于运行QA工具(phploc, phpcpd, phpcs, pdepend, phpmd, phpmetrics)的工具
PHP Refactoring Browser [OSS] – 重构助手
PHP-Token-Reflection [OSS] – 函数库模拟PHP内部反射
PHP-Parser [OSS] – PHP写的一款PHP解析器
RIPS [OSS] – 一款用于PHP脚本漏洞的静态源代码分析工具
Tuli [OSS] – 静态分析引擎
Python
bandit [OSS] – 在Python代码中寻找常见安全问题的工具
jedi [OSS] – Python自动化/静态分析函数库
mccabe [OSS] – 检测McCabe复杂性
mypy [OSS] – Python静态类型分析工具,旨在结合动态类型及静态类型的优点
py-find-injection [OSS] – 从Python代码中寻找SQL注入漏洞
pycodestyle [OSS] – (formerly pep8) Python风格检查工具
pydocstyle [OSS] – Python docstring风格检查工具
pyflakes [OSS] – 检测Python源文件中的错误
pylint [OSS] – 寻找程序错误, 有助于执行编码标准以及嗅探代码异味. 此外它还包括pyreverse (UML图表生成器)以及symilar (一个类似的检测工具). 以及可选的扩展
pyroma [OSS] – 评估Python项目,并列出问题帮助提高代码质量
vulture [OSS] – 寻找Python代码中未使用的类,函数,变量
xenon [OSS] – 使用radon监控代码复杂度
R
lintr [PROPRIETARY] – R静态代码分析工具
Ruby
brakeman [OSS] – Ruby on Rails应用的一个静态分析安全漏洞扫描工具
cane [OSS] – 代码质量标准检查
dawnscanner [OSS] – ruby写的静态分析安全扫描器,支持Sinatra, Padrino以及Ruby on Rails框架
flay [OSS] – Flay 分析代码结构相似之处
flog [OSS] – Flog在一个易于阅读的报告中点出大多数不合规则的代码,评价分数越高,代码就越糟糕
laser [OSS] – Ruby代码的风格小工具集和静态分析工具
Mondrian [OSS] – 静态分析及重构工具
pelusa [OSS] – 静态分析Lint-type工具用以改善你的Ruby面向对象代码
quality [OSS] – 使用社区工具在你的代码中运行质量检测
reek [OSS] – Ruby代码异味检测工具
rubocop [OSS] – Ruby静态代码分析工具, 基于Ruby社区风格指南
rubycritic [OSS] – Ruby代码质量报告工具
ruby-lint [OSS] – Ruby静态代码分析工具
SandyMeter [OSS] – 用于检测遵循Sandi Metz规则的Ruby代码的静态分析工具
Rust
clippy [OSS] – 一个代码小工具集用于捕获常见错误,以及提高Rust代码质量
electrolysis [OSS] – 验证Rust程序的工具
herbie [OSS] – 当使用一个不稳定的浮点表达式时增加警告或者错误
linter-rust [OSS] – Atom扩展,列出你的Rust文件。使用rustc和cargo
rustfix [OSS] – 读取和应用由rustc提出的建议
Shell
shellcheck [OSS] – ShellCheck, 一个精通分析工具,为bash/sh shell脚本提出警告和建议
SQL
sqlint [OSS] – 简单的SQL工具集
Swift
SwiftLint [OSS] – 执行Swift编码风格和约定的工具
Tailor [OSS] – 一个用Swift程序语言写的静态分析工具及源代码工具集