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

Я хочу изменить проверки, которые выполняет программа анализатора кода clang-tidy, но похоже, что содержимое файла конфигурации .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

person Igor    schedule 12.09.2020    source источник


Ответы (1)


Чтобы увидеть изменение, нужно включить проверку:

Checks:          'google-readability-function-size'

Вы можете увидеть его изменение в действующей конфигурации с помощью:

clang-tidy --dump-config

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

person Acorn    schedule 12.09.2020