#clang #clang-tidy
#clang #clang-tidy
Вопрос:
Я хочу изменить проверки, которые clang-tidy
выполняет программа code analyzer, но, похоже, содержимое файла конфигурации .clang-tidy
игнорируется.
- Я создаю файл, вызывая его
clang-tidy
с флагом-dump-config
, и перенаправляю выходные данные в файл.clang-tidy
. - Затем я вызываю,
sed
чтобы заменить значение800
значением700
, которое соответствует параметру с ключомgoogle-readability-function-size.StatementThreshold
. Конкретный параметр для меня не важен, это просто для тестирования. - Я проверяю, что значение действительно было изменено.
- Наконец, я перезапускаю
clang-tidy
, чтобы посмотреть, принял ли он новую конфигурацию, но она остается неизменной.
# generate config
clang-tidy -dump-config > .clang-tidy
# change config
sed -i 's/800/700/' .clang-tidy
# verify change
grep '700' .clang-tidy
# use config, does not work
clang-tidy -config '' -dump-config
Параметр CheckOption остается со значением по умолчанию, содержимое файла конфигурации было проигнорировано:
CheckOptions:
# some lines omitted for brevity
- key: google-readability-function-size.StatementThreshold
value: '800'
Запуск clang-tidy -config '' -dump-config -explain-config
показывает, что файл конфигурации, по крайней мере, найден, т.Е. в обнаруженном файле конфигурации включено множество проверок, специфичных для clang-analyzer, но проверка google-readability-function-size.StatementThreshold
отсутствует в списке.
Я также попытался передать конфигурацию напрямую в качестве параметра командной строки с помощью команды clang-tidy -config="{CheckOptions: [ {key: google-readability-function-size.StatementThreshold, value: 700} ]}" -dump-config
, но получил тот же результат.
Команда clang-tidy --version
выдает следующий вывод, выполняемый в Ubuntu 20.04:
LLVM (http://llvm.org/):
LLVM version 10.0.0
Optimized build.
Default target: x86_64-pc-linux-gnu
Host CPU: haswell
Ответ №1:
Чтобы увидеть изменения, вам необходимо включить проверку:
Checks: 'google-readability-function-size'
Вы можете увидеть, как оно изменилось в действующей конфигурации с помощью:
clang-tidy --dump-config
Еще одна ошибка, о которой следует знать, заключается в том, что ошибки при разборе значений будут автоматически отброшены.