运行 大型项目中的 Clang-Tidy
Running Clang-Tidy on a Large Project
I 运行 clang-tidy
(Clang-Extra-Tools 6.0.0) 在应用程序源代码的根目录下(MPlayer-1.3.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.
I 运行 clang-tidy
(Clang-Extra-Tools 6.0.0) 在应用程序源代码的根目录下(MPlayer-1.3.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.