使用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
相关产品推荐
相关产品推荐

