gpt4 book ai didi

c - 在大型项目上运行 Clang-Tidy

转载 作者:太空宇宙 更新时间:2023-11-04 03:16:27 24 4
gpt4 key购买 nike

我在一个应用程序(MPlayer-1.3.0)源代码的根目录下运行了clang-tidy(Clang-Extra-Tools 6.0.0) .准确的说,我使用的是run-clang-tidy.py python脚本,如下:

run-clang-tidy.py -header-filter='.*' -checks='-*,readability-braces-around-statements' -fix

命令数据库也存储在名为 compile_commands.json 的文件的根目录中。收集所有修复后,它会尝试应用它们,但不会对从 inner 目录编译的任何源文件应用修复。这是错误报告的第一部分:

Applying fixes ...
Described file './libavutil/internal.h' doesn't exist.
Ignoring...
Described file './libavutil/x86/intmath.h' doesn't exist.
Ignoring...
Described file 'libavformat/internal.h' doesn't exist.
Ignoring...
Described file './libavcodec/bytestream.h' doesn't exist.
Ignoring...
Described file './libavcodec/flac.h' doesn't exist.
Ignoring...
Described file './libavcodec/get_bits.h' doesn't exist.
Ignoring...
Described file './libavcodec/internal.h' doesn't exist.
Ignoring...
Described file './libavcodec/mathops.h' doesn't exist.
Ignoring...
Described file './libavcodec/put_bits.h' doesn't exist.
Ignoring...
Described file 'libavformat/matroskaenc.c' doesn't exist.
Ignoring...
Described file 'libavformat/subtitles.h' doesn't exist.
Ignoring...
Described file 'libavformat/apngdec.c' doesn't exist.
Ignoring...
...

这些文件是使用位于文件夹 ffmpeg 中的 Makefile 编译的。例如,libavformat/apngdec.c 位于 ./ffmpeg/libavformat/apngdec.c 其中 . 的根目录>MPlayer-1.3.0。我该如何解决这个问题?

最佳答案

事实上,这是 Clang Tidy 中的一个错误。它只发生在导出的情况下。在使用 -fix 开关调用 run-clang-tidy 脚本时会发生这种情况。主要问题是存储在导出文件中的修复应该使用绝对路径。这通常发生在使用 CMAKE 生成编译命令数据库的项目中。但是 MPlayer 使用 Makefile 作为构建系统,我使用 Bear 生成数据库。将修复程序合并到同一位置也存在问题。

为了解决这个问题,我主要是构建了绝对路径,并做了一些与没有导出的代码类似的其他更改。最后修改生成YAML导出文件。补丁是here .

关于c - 在大型项目上运行 Clang-Tidy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51052128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com