You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用clang-tidy搭配compile-commands.json批量分析文件遇问题求助

解决Clang-Tidy读取编译数据库时的"无输入文件"报错

Clang-Tidy的-p参数仅用于指定编译数据库的路径,提供编译环境上下文,但它不会自动扫描并检查编译数据库中的所有源文件——你必须明确给出要检查的文件路径,这就是你遇到报错的原因。

以下是几种可行的解决方法:

  • 用通配符批量指定源文件
    如果你的源文件集中在某个目录(比如src/),可以直接用通配符匹配:

    clang-tidy --config-file ./.clang-tidy -checks=* -p ./target src/*.cpp
    

    若需要递归匹配子目录里的文件,先开启bash的globstar选项,再执行命令:

    shopt -s globstar
    clang-tidy --config-file ./.clang-tidy -checks=* -p ./target src/**/*.cpp
    
  • 从编译数据库提取文件列表
    利用jq工具直接从compile-commands.json中提取所有源文件路径,作为Clang-Tidy的输入:

    clang-tidy --config-file ./.clang-tidy -checks=* -p ./target $(jq -r '.[].file' ./target/compile-commands.json)
    

    这个命令会自动读取编译数据库里记录的所有文件,无需手动罗列。

  • 额外注意事项

    • 确认compile-commands.json中的文件路径是正确的:要么是绝对路径,要么是相对于你执行Clang-Tidy命令的工作目录的相对路径。
    • 若项目包含多种类型的源文件(如.c、.h),可调整通配符或jq的过滤规则来匹配对应文件。

内容的提问来源于stack exchange,提问作者Bruce Adams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:10:17