当一个班级违反三级规则时编译器警告(五)

时间:2016-12-07 11:51:11

标签: c++ c++11 gcc compiler-flags

当类破坏三阶规则(或五阶规则)时,是否可以触发编译器警告?

此功能听起来很容易实现,在安全关键软件中非常有用,但我无法在文档或Google搜索结果中找到它。

3 个答案:

答案 0 :(得分:5)

您可以将编译器标志-Weffc++用于GCC

答案 1 :(得分:2)

Visual Studio 2017 RC states有一些" Checkers用于执行C ++核心指南"。自从"规则五"是最容易检查的规则之一,我相信它已经实施。

答案 2 :(得分:2)

clang-tidy可以捕捉到这样的错误。鉴于此文件:

// badstyle.cpp
class Type {
  Type(const Type&) { }

  ~Type() { }
};

这个命令:

$ clang-tidy badstyle.cpp -checks=cppcoreguidelines-*

我的输出是:

badstyle.cpp:2:7: warning: class 'Type' defines a non-default destructor and a 
copy constructor but does not define a copy assignment operator, a move constructor
or a move assignment operator [cppcoreguidelines-special-member-functions]
class Type {
  ^