В clang-tidy, как установить опцию проверки, которая принимает в списке номеров - PullRequest
1 голос
/ 01 апреля 2020

Я использую clang-tidy с файлом конфигурации .clang-tidy. Файл прочитан правильно, и я могу установить любые параметры проверки, кроме параметров проверки, которые принимают список чисел в качестве значения.

Вот мой файл .clang-tidy, который пытается установить опции проверки modernize-use-nullptr.NullMacros и readability-magic-numbers.IgnoredIntegerValues:

Checks: 'modernize-use-nullptr,readability-magic-numbers'
CheckOptions:
  - key:             modernize-use-nullptr.NullMacros
    value:           IT_WORKS_WITH_A_SIMPLE_VALUE
  - key:             readability-magic-numbers.IgnoredIntegerValues
    value:           '5;6;7;8;'

Когда я запускаю clang-tidy с опцией --dump-config, я получаю следующий результат:

---
Checks:          'clang-diagnostic-*,clang-analyzer-*,modernize-use-nullptr,readability-magic-numbers'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
FormatStyle:     none
User:            user
CheckOptions:
  - key:             cert-dcl16-c.NewSuffixes
    value:           'L;LL;LU;LLU'
  - key:             cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField
    value:           '0'
  - key:             cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors
    value:           '1'
  - key:             cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value:           '1'
  - key:             google-readability-braces-around-statements.ShortStatementLines
    value:           '1'
  - key:             google-readability-function-size.StatementThreshold
    value:           '800'
  - key:             google-readability-namespace-comments.ShortNamespaceLines
    value:           '10'
  - key:             google-readability-namespace-comments.SpacesBeforeComments
    value:           '2'
  - key:             modernize-loop-convert.MaxCopySize
    value:           '16'
  - key:             modernize-loop-convert.MinConfidence
    value:           reasonable
  - key:             modernize-loop-convert.NamingStyle
    value:           CamelCase
  - key:             modernize-pass-by-value.IncludeStyle
    value:           llvm
  - key:             modernize-replace-auto-ptr.IncludeStyle
    value:           llvm
  - key:             modernize-use-nullptr.NullMacros
    value:           IT_WORKS_WITH_A_SIMPLE_VALUE
  - key:             readability-magic-numbers.IgnoredFloatingPointValues
    value:           '1.0;100.0;'
  - key:             readability-magic-numbers.IgnoredIntegerValues
    value:           '1;2;3;4;'
...

Как вы видно, опция проверки modernize-use-nullptr.NullMacros установлена ​​правильно, но опция проверки readability-magic-numbers.IgnoredIntegerValues не установлена.

Я думаю, что это, вероятно, проблема синтаксиса, но я использую тот же синтаксис, что и синтаксис --dump-config

Как установить опцию readability-magic-numbers.IgnoredIntegerValues?

Running clang-tidy --version дает следующий результат:

LLVM (http://llvm.org/):
  LLVM version 9.0.1
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: ivybridge

1 Ответ

0 голосов
/ 02 апреля 2020

Это похоже на ошибку в проверке --dump-config только для readability-magic-numbers. Насколько я могу судить, ваш файл clang-tidy работает отлично.

Я запустил clang-tidy с вашим файлом .clang-tidy в этом примере кода:

int badGlobalInt = 5;

int main()
{
    int badLocalInt = 8;
    int unfilteredBadLocalInt = 9;
    return 0;
}

Командная строка:

N:\xxx>clang-tidy.exe xxx.cpp --

Результат был таким же, как и ожидалось:

1 warning generated.
N:\xxx\xxx.cpp:6:30: warning: 9 is a magic number; consider replacing it with a named constant [readability-magic-numbers]
        int unfilteredBadLocalInt = 9;
                                    ^

Результаты были точно такими же для clang-tidy 9 и 10.

...