【问题标题】:Clang-tidy cppcoreguidelines-owning-memory warning for Google Test macros谷歌测试宏的 Clang-tidy cppcoreguidelines-owning-memory 警告
【发布时间】:2021-10-23 09:15:24
【问题描述】:

我有一个带有 Bazel 的简单 c++ 项目。 我正在使用 Google 测试框架运行一些简单的测试。 Clang-tidy 似乎抱怨该框架中的几乎每个宏。 有没有办法让铿锵声忽略这些宏? 我尝试使用 //NOLINT 但它似乎没有做任何事情。

我的 clang-tidy 配置文件是这样的:

Checks:          '-*,clang-analyzer-*,
            modernize-avoid-bind,
            modernize-avoid-c-arrays,
            modernize-concat-nested-namespaces,
            modernize-deprecated-headers,
            modernize-deprecated-ios-base-aliases,  
            modernize-loop-convert,     
            modernize-make-shared,  
            modernize-make-unique,  
            modernize-pass-by-value,    
            modernize-raw-string-literal,   
            modernize-redundant-void-arg,   
            modernize-replace-auto-ptr,     
            modernize-replace-disallow-copy-and-assign-macro,   
            modernize-replace-random-shuffle,   
            modernize-return-braced-init-list,  
            modernize-shrink-to-fit,    
            modernize-unary-static-assert,  
            modernize-use-auto,     
            modernize-use-bool-literals,    
            modernize-use-default-member-init,  
            modernize-use-emplace,  
            modernize-use-equals-default,   
            modernize-use-equals-delete,    
            modernize-use-nodiscard,    
            modernize-use-noexcept,     
            modernize-use-nullptr,  
            modernize-use-override,     
            modernize-use-transparent-functors,     
            modernize-use-uncaught-exceptions,  
            modernize-use-using,    
            performance-*,readability*,cppcoreguidelines-*, llvm-*,
            google-*,
            bugprone-*'
  WarningsAsErrors: ''
  HeaderFilterRegex: ''
  AnalyzeTemporaryDtors: false
  CheckOptions:
        [{key: readability-identifier-naming.ClassCase, value: CamelCase},
        {key: readability-identifier-naming.ClassMemberCase, value: lower_case},
        {key: readability-identifier-naming.PrivateMemberPrefix, value: m_},
        {key: readability-identifier-naming.ClassMethodCase, value: lower_case},
        {key: readability-identifier-naming.StructCase, value: lower_case},
        {key: readability-identifier-naming.VariableCase, value: lower_case},
        {key: readability-identifier-naming.GlobalConstantCase, value: UPPER_CASE},
         ]

我得到的警告是 Initializing non-owner argument of type 'testing::internal::TestFactoryBase *' with a newly created 'gsl::owner<>'clang-tidy(cppcoreguidelines-owning-memory)

【问题讨论】:

    标签: c++ googletest clang-tidy


    【解决方案1】:

    //NOLINT 需要放在代码中出现问题的位置,即您使用宏的位置。如果你有很多地方,这可能会很麻烦。

    另一种选择是排除您的测试文件clang-tidy cmake exclude file from check 或者配置 2 个 clang-tidy 运行(一个用于不带检查的测试,一个用于带检查的 prod)。不确定您是否可以在 Bazel 中对此进行建模,因为到目前为止我还没有使用过它

    最后一个选项:在 GitHub https://github.com/google/googletest/issues 中打开一个问题,或者在 googletest 源代码中自行修复它并打开一个拉取请求。

    【讨论】:

    • 我提到我尝试使用 // NOLINT 但它不起作用。
    猜你喜欢
    • 2018-04-10
    • 2017-01-24
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多