首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在clang-tidy中,如何设置一个接受at数字列表的检查选项

在clang-tidy中,如何设置一个接受at数字列表的检查选项
EN

Stack Overflow用户
提问于 2020-04-01 22:38:17
回答 2查看 964关注 0票数 2

我正在使用带有.clang-tidy配置文件的clang-tidy。文件被正确读取,我可以设置任何类型的检查选项,除了以数字列表作为值的检查选项。

下面是我的.clang-tidy文件,它尝试设置检查选项modernize-use-nullptr.NullMacrosreadability-magic-numbers.IgnoredIntegerValues

代码语言:javascript
运行
复制
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时,我得到以下结果:

代码语言:javascript
运行
复制
---
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会产生以下结果:

代码语言:javascript
运行
复制
LLVM (http://llvm.org/):
  LLVM version 9.0.1
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: ivybridge
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-02 16:36:58

这似乎是仅用于readability-magic-numbers检查的--dump-config中的错误。据我所知,你整洁的文件工作得很好。

我在这个示例代码上用你的.clang-tidy文件运行clang-tidy:

代码语言:javascript
运行
复制
int badGlobalInt = 5;

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

命令行:

代码语言:javascript
运行
复制
N:\xxx>clang-tidy.exe xxx.cpp --

结果不出所料:

代码语言:javascript
运行
复制
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的结果完全相同。

票数 1
EN

Stack Overflow用户

发布于 2020-08-05 11:47:38

FWIW我在我的配置中使用了更像JSON的语法,它产生了你从一个细微不同的输入中看到的输出:

代码语言:javascript
运行
复制
- { key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic, value: 1 }

请注意逗号前面的值以及花括号。被转储为

代码语言:javascript
运行
复制
- key:             cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
  value:           '1'

似乎有一些灵活性,因为我有一个宽屏幕,垂直对齐的长线使它更容易阅读。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60973459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档