содержимое файла конфигурации clang-tidy игнорируется

#clang #clang-tidy

#clang #clang-tidy

Вопрос:

Я хочу изменить проверки, которые clang-tidy выполняет программа code analyzer, но, похоже, содержимое файла конфигурации .clang-tidy игнорируется.

  1. Я создаю файл, вызывая его clang-tidy с флагом -dump-config , и перенаправляю выходные данные в файл .clang-tidy .
  2. Затем я вызываю, sed чтобы заменить значение 800 значением 700 , которое соответствует параметру с ключом google-readability-function-size.StatementThreshold . Конкретный параметр для меня не важен, это просто для тестирования.
  3. Я проверяю, что значение действительно было изменено.
  4. Наконец, я перезапускаю 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
  

Еще одна ошибка, о которой следует знать, заключается в том, что ошибки при разборе значений будут автоматически отброшены.