Finds classes that not only contain the data (non-static member variables),
but also have logic (non-static member functions), and diagnoses all member
variables that have any other scope other than private. They should be
made private, and manipulated exclusively via the member functions.
Optionally, classes with all member variables being public could be
ignored, and optionally all public member variables could be ignored.
Options
- IgnoreClassesWithAllMemberVariablesBeingPublic
Allows to completely ignore classes if all the member variables in that class have public visibility.
- IgnorePublicMemberVariables
Allows to ignore (not diagnose) all the member variables with public visibility scope.
References:
- MISRA 11-0-1 Member data in non-POD class types shall be private.
- https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c2-use-class-if-the-class-has-an-invariant-use-struct-if-the-data-members-can-vary-independently
- https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rc-private
- https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rh-protected