Запуск Clang-Tidy на большом проекте - PullRequest
0 голосов
/ 27 июня 2018

Я запустил 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...
...

Эти файлы скомпилированы с использованием файла Makefile, расположенного в папке ffmpeg. Например, libavformat/apngdec.c находится в ./ffmpeg/libavformat/apngdec.c, где . является корневым каталогом MPlayer-1.3.0. Как я могу решить проблему?

1 Ответ

0 голосов
/ 27 июля 2018

На самом деле это была ошибка в Clang Tidy. Это происходит только в случае экспорта. Это происходит в тех случаях, когда сценарий run-clang-tidy вызывается с ключом -fix. Основная проблема заключается в том, что исправления, хранящиеся в файле экспорта, должны использовать абсолютные пути. Обычно это происходит с проектами, использующими CMAKE для генерации базы данных команд компиляции. Но MPlayer использует Makefile в качестве системы сборки, а я использовал Bear для генерации базы данных. Есть также проблемы с объединением исправлений в том же месте.

В основном, чтобы решить эту проблему, я создал абсолютные пути и внес некоторые другие изменения, аналогичные изменениям в коде без экспорта. Наконец, файл экспорта YAML пересматривается и генерируется. Патч здесь .

...