5 votes

Avertissement du compilateur lorsqu'une classe enfreint la règle des trois (cinq)

Est-il possible de déclencher un avertissement du compilateur lorsqu'une classe enfreint la règle des trois (ou des cinq) ?

Cette fonctionnalité semble facile à mettre en œuvre et est très utile dans les logiciels critiques en matière de sécurité, mais je ne la trouve nulle part dans la documentation ou les résultats de recherche Google.

5voto

Swapnil Points 744

Vous pouvez utiliser le drapeau du compilateur -Weffc++ pour GCC

2voto

alexeykuzmin0 Points 692

Visual Studio 2017 RC indique avoir des "Vérificateurs pour appliquer les directives de base de C++". Comme la "Règle des cinq" est l'une des règles les plus facilement vérifiables, je crois qu'elle est implémentée.

1voto

Ryan Haining Points 5355

clang-tidy peut attraper de telles erreurs. Étant donné ce fichier :

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

  ~Type() { }
};

Et cette commande :

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

Ma sortie est :

badstyle.cpp:2:7: avertissement : la classe 'Type' définit un destructeur non par défaut et un constructeur de copie mais ne définit pas un opérateur d'assignation par copie, un constructeur de déplacement ou un opérateur de déplacement [cppcoreguidelines-special-member-functions]
class Type {
  ^

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X