hanchenye-llvm-project/clang-tools-extra/clang-tidy/misc
Roman Lebedev 6cfa38f1f1 [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-18 20:16:44 +00:00
..
CMakeLists.txt [clang-tidy] Non-private member variables in classes (MISRA, CppCoreGuidelines, HICPP) 2018-10-18 20:16:44 +00:00
DefinitionsInHeadersCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
DefinitionsInHeadersCheck.h
MiscTidyModule.cpp [clang-tidy] Non-private member variables in classes (MISRA, CppCoreGuidelines, HICPP) 2018-10-18 20:16:44 +00:00
MisplacedConstCheck.cpp
MisplacedConstCheck.h
NewDeleteOverloadsCheck.cpp
NewDeleteOverloadsCheck.h
NonCopyableObjects.cpp
NonCopyableObjects.h
NonPrivateMemberVariablesInClassesCheck.cpp [clang-tidy] Non-private member variables in classes (MISRA, CppCoreGuidelines, HICPP) 2018-10-18 20:16:44 +00:00
NonPrivateMemberVariablesInClassesCheck.h [clang-tidy] Non-private member variables in classes (MISRA, CppCoreGuidelines, HICPP) 2018-10-18 20:16:44 +00:00
RedundantExpressionCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
RedundantExpressionCheck.h
StaticAssertCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
StaticAssertCheck.h
ThrowByValueCatchByReferenceCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
ThrowByValueCatchByReferenceCheck.h
UnconventionalAssignOperatorCheck.cpp Port getLocStart -> getBeginLoc 2018-08-09 22:42:26 +00:00
UnconventionalAssignOperatorCheck.h
UniqueptrResetReleaseCheck.cpp
UniqueptrResetReleaseCheck.h
UnusedAliasDeclsCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
UnusedAliasDeclsCheck.h
UnusedParametersCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
UnusedParametersCheck.h [clang-tidy] misc-unused-parameters - retain old behavior under StrictMode 2018-06-28 15:21:25 +00:00
UnusedUsingDeclsCheck.cpp Port getLocEnd -> getEndLoc 2018-08-09 22:43:02 +00:00
UnusedUsingDeclsCheck.h