goblint/analyzer

GitHub: goblint/analyzer

Goblint 是一个面向 C 语言的静态分析框架,专注于并发安全与深层代码缺陷检测,为安全审计和学术研究提供可扩展的分析能力。

Stars: 236 | Forks: 88

# Goblint [![GitHub 发布状态](https://img.shields.io/github/v/release/goblint/analyzer)](https://github.com/goblint/analyzer/releases) [![opam 包状态](https://badgen.net/opam/v/goblint)](https://opam.ocaml.org/packages/goblint) [![Zenodo DOI](https://zenodo.org/badge/2066905.svg)](https://zenodo.org/badge/latestdoi/2066905) [![locked 工作流状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/bdb4ea14af151224.svg)](https://github.com/goblint/analyzer/actions/workflows/locked.yml) [![unlocked 工作流状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c4ec84226b151225.svg)](https://github.com/goblint/analyzer/actions/workflows/unlocked.yml) [![覆盖率状态](https://coveralls.io/repos/github/goblint/analyzer/badge.svg?branch=master)](https://coveralls.io/github/goblint/analyzer?branch=master) [![docker 工作流状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1fa8522ebc151227.svg)](https://github.com/goblint/analyzer/actions/workflows/docker.yml) [![文档状态](https://readthedocs.org/projects/goblint/badge/?version=latest)](https://goblint.readthedocs.io/en/latest/?badge=latest) [![项目聊天](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://goblint.zulipchat.com) 文档可以在 [Read the Docs](https://goblint.readthedocs.io/en/latest/) 或 [GitHub](./docs/) 上浏览。 ## 安装说明 无论是为了使用最新版本的 Goblint,还是为了进行开发,最好的方法是通过克隆此仓库从源码进行安装。 如需对 Goblint 进行性能基准测试,请遵循 [Read the Docs 上的基准测试指南](https://goblint.readthedocs.io/en/latest/user-guide/benchmarking/)。 ### Linux 1. 安装 [opam](https://opam.ocaml.org/doc/Install.html)。 2. 确保已安装以下依赖:`git`、`patch`、`m4`、`autoconf`、`libgmp-dev`、`libmpfr-dev` 和 `pkg-config`。 3. 运行 `make setup` 以通过 opam 安装 OCaml 及相关依赖。 4. 运行 `make` 构建 Goblint 本体。 5. 运行 `make install` 将 Goblint 安装到 opam switch 中,以便通过该 switch 的 `PATH` 使用。 6. _可选:_ 参考 [`scripts/bash-completion.sh`](./scripts/bash-completion.sh) 为 Goblint 的参数设置 bash 自动补全。 ### MacOS 1. 使用 `brew install gcc grep` 安装 GCC(如果你不想从源码构建,请先运行 `xcode-select --install`)。Goblint 需要 GCC,而 macOS 默认的 `cpp` 是 Clang,无法正常工作。 2. 仅限 M1 (ARM64) 处理器:homebrew 将其安装路径从 `/usr/local/` 更改为了 `/opt/homebrew/`。为了让软件包能找到其依赖项,请执行 `sudo ln -s /opt/homebrew/{include,lib} /usr/local/`。 3. 继续按照 Linux 的说明操作(在 brew 中,对应 `patch`、`libgmp-dev`、`libmpfr-dev` 的包名分别为 `gpatch`、`gmp`、`mpfr`)。 ### Windows 1. 安装 [WSL2](https://docs.microsoft.com/en-us/windows/wsl/install-win10)。Goblint 与 WSL1 不兼容。 2. 在 WSL 中继续按照 Linux 的说明操作。 ### 其他方式 * **[opam](https://opam.ocaml.org/packages/goblint/)**。安装 [opam](https://opam.ocaml.org/doc/Install.html) 并运行 `opam install goblint`。 * **[devcontainer](./.devcontainer/).** 在 VS Code 中选择“在容器中重新打开”,然后按照 Linux 的说明在 devcontainer 中继续执行 `make`。 * **[Docker (GitHub Container Registry)](https://github.com/goblint/analyzer/pkgs/container/analyzer)**。运行 `docker pull ghcr.io/goblint/analyzer:latest`(或 `:nightly`)。 * **Docker (仓库)。** 克隆仓库并运行 `docker build -t goblint .`。 * **Vagrant。** 克隆仓库并运行 `vagrant up && vagrant ssh`。 ## 运行 要确认构建是否成功,你可以尝试如下运行 Goblint: ``` ./goblint tests/regression/04-mutex/01-simple_rc.c ``` 要确认安装到 opam switch 是否成功,你可以尝试如下运行 Goblint: ``` goblint tests/regression/04-mutex/01-simple_rc.c ``` 要确认 Docker 容器是否正常运行,你可以尝试如下运行 Goblint: ``` docker run -it --rm -v $(pwd):/data goblint /data/tests/regression/04-mutex/01-simple_rc.c ``` 如果是从 GitHub Container Registry 拉取的镜像,请改用容器名称 `ghcr.io/goblint/analyzer:latest`(或 `:nightly`)。 了解更多信息,请参阅[文档](https://goblint.readthedocs.io/en/latest/user-guide/running/)。 ## 致谢 Goblint 的开发工作部分由 Deutsche Forschungsgemeinschaft (DFG) (47140942/1480 [PUMA](https://gepris.dfg.de/gepris/projekt/4714094), 378803395/2428 [ConVeY](http://convey.in.tum.de))、ARTEMIS Joint Undertaking (269335 MBAT)、ITEA3 项目 14014 ASSUME、格鲁吉亚 Shota Rustaveli 国家科学基金会 [FR-21-7973](https://viam.science.tsu.ge/new/index.php?lang=eng&page=projects&subpage=111)、爱沙尼亚研究委员会 ([IUT2-1](https://www.etis.ee/Portal/Projects/Display/561b7b1d-d1dd-43a2-90e5-0661de823823?lang=ENG), [PSG61](https://www.etis.ee/Portal/Projects/Display/743243bb-15c2-47b3-9c10-e7d86a9a276d?lang=ENG)),以及由欧洲区域发展基金资助的爱沙尼亚 IT 卓越中心 (EXCITE) 提供支持。 我们还要感谢 [Zulip](https://zulip.com) 为 Goblint 项目提供免费的 Zulip Cloud Standard 托管服务。Zulip 是一款开源的现代团队聊天应用,旨在使实时与异步对话保持条理清晰。
标签:ASN解析, DNS解析, DNS重绑定攻击, Goblint, OCaml, TLS抓取, Web安全扫描, 云安全监控, 代码安全, 分析框架, 可配置连接, 安全专业人员, 开源项目, 抽象解释, 漏洞数据库, 漏洞枚举, 程序分析, 编译器, 请求拦截, 软件安全, 错误基检测, 静态代码分析, 静态分析