
面向编程语言、配置、构建工具和 CI 的静态分析(SAST)工具与代码检查工具精选目录,致力于提升代码质量。
本仓库列出了适用于所有编程语言、构建工具、配置文件等的静态分析工具。重点关注能够提升代码质量的工具,例如 linter 和 formatter。 官方网站 analysis-tools.dev 基于本仓库构建,并为每个工具添加了排名、用户评论以及视频等额外资源。
如果没有赞助商的慷慨支持,本项目将无法实现。
|
|
|
|
如果你也想支持本项目,请访问我们的 GitHub Sponsors 页面。
也请查看姊妹项目 awesome-dynamic-analysis。
abaplint — 用 TypeScript 编写的 ABAP linter。
abapOpenChecks — 通过新的可自定义检查增强 SAP Code Inspector。
Polyspace for Ada ©️ — 提供代码验证,证明源代码中不存在溢出、除零、数组越界访问以及某些其他运行时错误。
SPARK ©️ — 面向 Ada 的静态分析和形式化验证工具集。
Astrée ©️ — Astrée 可自动证明 C/C++ 应用程序中不存在运行时错误和无效的并发行为。它对浮点计算是可靠的,速度非常快,并且极其精确。该分析器还会检查 MISRA/CERT/CWE/Adaptive Autosar 编码规则,并支持 ISO 26262、DO-178C A 级及其他安全标准的认证。提供 Jenkins 和 Eclipse 插件。
CBMC — 用于 C 程序的有界模型检查器,支持用户定义断言、标准断言以及多种覆盖率指标分析。
clang-tidy — 基于 Clang 的 C++ linter 工具,也具备(有限的)修复问题能力。
clazy — 基于 Clang 框架的面向 Qt 的静态代码分析器。clazy 是一个编译器插件,使 clang 能够理解 Qt 语义。你可以获得 50 多个与 Qt 相关的编译器警告,涵盖从不需要的内存分配到 API 误用,并包含用于自动重构的 fix-it。
CMetrics ⚠️ — 测量 C 文件的大小和复杂度。
codechecker — 面向 Clang Static Analyzer 的缺陷数据库和查看器扩展,带有 Web GUI。
CPAchecker — 一个用于 C 程序可配置软件验证的工具。选择 CPAchecker 这一名称是为了体现该工具基于 CPA 概念,并用于检查软件程序。
cppcheck — 对 C/C++ 代码进行静态分析。
CppDepend ©️ — 测量、查询并可视化你的代码,避免意外问题、技术债务和复杂性。
cpplint — 遵循 Google 风格指南的自动化 C++ 检查器。
cqmetrics ⚠️ — C 代码的质量指标。
CScout — C 和 C 预处理器代码的复杂度和质量指标。
ENRE-cpp ⚠️ — ENRE(ENtity Relationship Extractor)是一个用于从源代码中提取代码实体依赖或关系的工具。ENRE-cpp 是基于 @eclipse/CDT 的 C/C++ 实体关系提取器。(开发中)
ESBMC — ESBMC 是一个开源、采用宽松许可证、基于可满足性模理论的上下文有界模型检查器,用于验证单线程和多线程 C/C++ 程序。
flawfinder — 查找可能的安全弱点。
flint++ ⚠️ — flint 的跨平台、零依赖移植版本,flint 是 Facebook 开发和使用的 C++ lint 程序。
Frama-C — 一个可靠且可扩展的 C 代码静态分析器。
GCC — GCC 编译器自版本 10 起具备静态分析能力。仅当 GCC 在配置时启用了分析器支持,此选项才可用。它还可以将诊断信息以 SARIF 格式输出到 JSON 文件(自 v13 起)。
Goblint — 一个用于分析多线程 C 程序的静态分析器。其主要关注点是检测数据竞争,但也会报告其他运行时错误,例如缓冲区溢出和空指针解引用。
Helix QAC ©️ — 面向嵌入式软件的企业级静态分析。支持 MISRA、CERT 和 AUTOSAR 编码标准。
IKOS ⚠️ — 一个基于 LLVM 的可靠 C/C++ 代码静态分析器。
KLEE — 一个构建在 LLVM 编译器基础设施之上的动态符号执行引擎。它可以为程序自动生成测试用例,使测试用例尽可能多地覆盖程序。