cmake + clang_tidy - отключить проверку в каталоге - PullRequest
2 голосов
/ 11 октября 2019

У меня большой проект с использованием CMake. Я хочу добавить поддержку clang_tidy-8 со следующим кодом:

set(BORG_CLANG_TIDY OFF CACHE STRING "If enabled, clang-tidy will be used. If set to 'fix', fixes will be done on source")
set_property(CACHE BORG_CLANG_TIDY PROPERTY STRINGS ON OFF fix)
if(BORG_CLANG_TIDY)
    if (BORG_CLANG_TIDY STREQUAL "fix")
        set(maybe_fix -fix)
    endif()

    set(CMAKE_CXX_CLANG_TIDY clang-tidy-8 -extra-arg=-Wno-unknown-warning-option -format-style=file ${maybe_fix} )
endif()

Я поместил правильное значение .clang-tidy в корневой каталог проекта (правильное = с желаемыми проверками). Тем не менее, есть каталоги, которые я не хочу, чтобы clang tidy проверял / исправлял (3-й и старый код, который нельзя изменить, потому что он хрупкий). Поэтому я попытался поместить пустой файл .clang-tidy в эти каталоги (пустой = с -checks=-*). Это не работает, потому что Error: no checks enabled.

Я надеялся найти какую-то подделку -checks=-*,hello-world-do-nothing-check, но ничего не представилось.

Есть ли другой способ отключить проверки в выбранных подкаталогах (/ subtrees)? Эти каталоги являются статическими и при необходимости могут быть жестко закодированы в CMake.

1 Ответ

1 голос
/ 14 октября 2019

Если вам нужна фиктивная проверка, которая ничего не делает, есть хотя бы одна, которую довольно легко отключить с помощью ее параметров: misc-определений в заголовках

Опция HeaderFileExtensionsможет использоваться, чтобы проверка работала только с определенными суффиксами заголовочных файлов. Если вы установите для него несуществующую строку «x», тогда у вас есть альтернатива hello-world-do-nothing-check. Ваш файл clang-tidy будет выглядеть примерно так:

Checks: '-*,misc-definitions-in-headers'
CheckOptions:
  - { key: HeaderFileExtensions,          value: "x" }

Вы также можете проверить https://stackoverflow.com/a/56319752/9874699 и попытаться настроить line-filter для фильтрации файлов из определенных каталогов.

...