llvm-project/clang-tools-extra/docs/clang-tidy/checks/misc-non-private-member-var...

27 lines
952 B
ReStructuredText
Raw Normal View History

[clang-tidy] Non-private member variables in classes (MISRA, CppCoreGuidelines, HICPP) Summary: 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 Reviewers: JonasToth, aaron.ballman, alexfh, hokein, xazax.hun Reviewed By: aaron.ballman Subscribers: Eugene.Zelenko, zinovy.nis, cfe-commits, rnkovacs, nemanjai, mgorny, xazax.hun, kbarton Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D52771 llvm-svn: 344757
2018-10-19 04:16:44 +08:00
.. title:: clang-tidy - misc-non-private-member-variables-in-classes
misc-non-private-member-variables-in-classes
============================================
`cppcoreguidelines-non-private-member-variables-in-classes` redirects here
as an alias for this check.
Finds classes that contain non-static data members in addition to non-static
member functions and diagnose all data members declared with a non-``public``
access specifier. The data members should be declared as ``private`` and
accessed through member functions instead of exposed to derived classes or
class consumers.
Options
-------
.. option:: IgnoreClassesWithAllMemberVariablesBeingPublic
Allows to completely ignore classes if **all** the member variables in that
class a declared with a ``public`` access specifier.
.. option:: IgnorePublicMemberVariables
Allows to ignore (not diagnose) **all** the member variables declared with
a ``public`` access specifier.