我正在使用带有.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;'当我运行带有--dump-config选项的clang-tidy时,我得到以下结果:
---
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 check选项?
运行clang-tidy --version会产生以下结果:
LLVM (http://llvm.org/):
LLVM version 9.0.1
Optimized build.
Default target: x86_64-pc-linux-gnu
Host CPU: ivybridge发布于 2020-04-02 16:36:58
这似乎是仅用于readability-magic-numbers检查的--dump-config中的错误。据我所知,你整洁的文件工作得很好。
我在这个示例代码上用你的.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的结果完全相同。
发布于 2020-08-05 11:47:38
FWIW我在我的配置中使用了更像JSON的语法,它产生了你从一个细微不同的输入中看到的输出:
- { key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic, value: 1 }请注意逗号前面的值以及花括号。被转储为
- key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
value: '1'似乎有一些灵活性,因为我有一个宽屏幕,垂直对齐的长线使它更容易阅读。
https://stackoverflow.com/questions/60973459
复制相似问题