
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是一个多阶段构建的Docker镜像,提供自包含、可复现的环境,用于静态分析、代码格式化、复杂度测量、许可证合规检查和文档生成,主要面向嵌入式C/C++项目。
源码地址: https://github.com/gilleshenrard/docker-c-linters
维护者说明: 工具版本在本README中硬编码,每次Dockerfile更新版本时请记得更新此表格。
| 工具 | 版本 | 用途 |
|---|---|---|
| CppCheck | 2.21.0 | 静态分析(从源码构建) |
| https://clang.llvm.org/docs/ClangFormat.html | 22.1.8 | 代码格式化 |
| https://clang.llvm.org/extra/clang-tidy/ | 22.1.8 | 代码 linting 和静态分析 |
| https://clang.llvm.org/extra/clang-tidy/#using-clang-tidy | 22.1.8 | 并行 Clang-Tidy 运行器 |
| https://github.com/terryyin/lizard | 1.23.0 | 圈复杂度测量 |
| REUSE | 6.2.0 | SPDX许可证合规检查 |
| Doxygen | 构建时最新版本 | 文档生成(通过apt安装) |
该镜像托管在Docker Hub,可通过以下命令拉取:
bashdocker pull docker.xuanyuan.run/gilleshenrard/c-linters:latest
bash# 静态分析 docker run --rm -v "$(pwd)":/src <镜像名称>:<镜像版本> cppcheck --enable=all /src # 格式检查 docker run --rm -v "$(pwd)":/src <镜像名称>:<镜像版本> clang-format --dry-run --Werror /src/main.c # 复杂度报告 docker run --rm -v "$(pwd)":/src <镜像名称>:<镜像版本> lizard /src # 许可证合规检查 docker run --rm -v "$(pwd)":/src <镜像名称>:<镜像版本> reuse lint
bashdocker run --rm -it -v "$(pwd)":/src <镜像名称>:<镜像版本> bash
yamljobs: lint: runs-on: ubuntu-latest container: image: docker.xuanyuan.run/gilleshenrard/c-linters:latest steps: - uses: actions/checkout@v4 - name: 静态分析(CppCheck) run: cppcheck --enable=all --error-exitcode=1 src/ - name: 格式检查(Clang-Format) run: | find src/ -name '*.c' -o -name '*.h' | \ xargs clang-format --dry-run --Werror - name: Linting(Clang-Tidy) run: run-clang-tidy -p build/ - name: 复杂度检查(Lizard) run: lizard src/ --CCN 10 --length 50 --arguments 5 - name: 许可证合规检查(REUSE) run: reuse lint - name: 文档生成(Doxygen) run: doxygen Doxyfile
bashdocker build -t <镜像名称>:<镜像版本> .
所有版本在Dockerfile顶部以ARG声明,可在构建时覆盖:
bashdocker build \ --build-arg CPPCHECKVERSION="2.21.0" \ --build-arg CLANGVERSION="22.2.0" \ --build-arg CLANGVERSIONMAJOR="22" \ --build-arg LIZARDVERSION="1.23.1" \ --build-arg REUSEVERSION="6.3.0" \ -t <镜像名称>:<镜像版本> .
注意:
CLANGVERSIONMAJOR必须与CLANGVERSION的主版本号一致(例如22对应22.1.0)。它们分开是因为LLVM归档路径使用完整版本字符串,而内部头文件目录仅使用主版本号。
该镜像使用两阶段构建以保持最终镜像精简:
+-----------------------------------------------+ | 阶段1:构建(debian:trixie-slim) | | | | - 从源码编译CppCheck | | - 从LLVM发布版提取Clang二进制文件 | | - 在Python虚拟环境中安装Lizard + REUSE | +------------------------|----------------------+ | COPY /opt +------------------------|----------------------+ | 阶段2:运行(debian:trixie-slim) | | | | - 安装python3、doxygen、git、 | | file、ca-certificates | | - 将工具路径添加到PATH | +-----------------------------------------------+
最终镜像中不包含构建工具链(cmake、ninja、wget、gcc等)。
| 路径 | 内容 |
|---|---|
/opt/cppcheck/bin/ | cppcheck二进制文件 |
/opt/clang/bin/ | clang-format、clang-tidy、run-clang-tidy |
/opt/clang/lib/clang/22/ | Clang内置头文件 |
/opt/pip-packages/bin/ | lizard、reuse |
以上所有路径均已添加到PATH,因此所有工具可直接通过名称调用。
本Dockerfile基于https://opensource.org/licenses/MIT分发。
© 2026 Gilles Henrard <***>
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务