clang-tools 20.0.0git
Classes | Functions | Variables
clang::tidy::cppcoreguidelines Namespace Reference

Classes

struct  AssignmentPair
 
class  AvoidCapturingLambdaCoroutinesCheck
 Flags C++20 coroutine lambdas with non-empty capture lists that may cause use-after-free errors and suggests avoiding captures or ensuring the lambda closure object has a guaranteed lifetime. More...
 
class  AvoidConstOrRefDataMembersCheck
 Const-qualified or reference data members in classes should be avoided, as they make the class non-copy-assignable. More...
 
class  AvoidDoWhileCheck
 do-while loops are less readable than plan while loops, and can lead to subtle bugs. More...
 
class  AvoidGotoCheck
 The usage of goto for control flow is error prone and should be replaced with looping constructs. More...
 
class  AvoidNonConstGlobalVariablesCheck
 Non-const global variables hide dependencies and make the dependencies subject to unpredictable changes. More...
 
class  AvoidReferenceCoroutineParametersCheck
 Warns on coroutines that accept reference parameters. More...
 
class  CppCoreGuidelinesModule
 A module containing checks of the C++ Core Guidelines. More...
 
class  InitVariablesCheck
 Find uninitialized local variables. More...
 
class  InterfacesGlobalInitCheck
 Flags possible initialization order issues of static variables. More...
 
class  MacroUsageCheck
 Find macro usage that is considered problematic because better language constructs exist for the task. More...
 
class  MisleadingCaptureDefaultByValueCheck
 Warns when lambda specify a by-value capture default and capture this. More...
 
class  MissingStdForwardCheck
 Warns when a function accepting a forwarding reference does anything besides forwarding (with std::forward) the parameter in the body of the function. More...
 
class  NarrowingConversionsCheck
 Checks for narrowing conversions, e.g: int i = 0; i += 0.1;. More...
 
class  NoMallocCheck
 This checker is concerned with C-style memory management and suggest modern alternatives to it. More...
 
class  NoSuspendWithLockCheck
 Flag coroutines that suspend while any lock guard is alive. More...
 
class  OwningMemoryCheck
 Checks for common use cases for gsl::owner and enforces the unique owner nature of it whenever possible. More...
 
class  PreferMemberInitializerCheck
 Finds member initializations in the constructor body which can be placed into the initialization list instead. More...
 
class  ProBoundsArrayToPointerDecayCheck
 This check flags all array to pointer decays. More...
 
class  ProBoundsConstantArrayIndexCheck
 This checks that all array subscriptions on static arrays and std::arrays have a constant index and are within bounds. More...
 
class  ProBoundsPointerArithmeticCheck
 Flags all kinds of pointer arithmetic that have result of pointer type, i.e. More...
 
class  ProTypeConstCastCheck
 Imposes limitations on the use of const_cast within C++ code. More...
 
class  ProTypeCstyleCastCheck
 This check flags all use of C-style casts that perform a static_cast downcast, const_cast, or reinterpret_cast. More...
 
class  ProTypeMemberInitCheck
 Implements C++ Core Guidelines Type.6. More...
 
class  ProTypeReinterpretCastCheck
 Flags all occurrences of reinterpret_cast. More...
 
class  ProTypeStaticCastDowncastCheck
 Checks for usages of static_cast, where a base class is downcasted to a derived class. More...
 
class  ProTypeUnionAccessCheck
 This check flags all access to members of unions. More...
 
class  ProTypeVarargCheck
 This check flags all calls to c-style variadic functions and all use of va_arg. More...
 
class  RvalueReferenceParamNotMovedCheck
 Warns when an rvalue reference function parameter is never moved within the function body. More...
 
class  SlicingCheck
 Flags slicing (incomplete copying of an object's state) of member variables or vtable. More...
 
class  SpecialMemberFunctionsCheck
 Checks for classes where some, but not all, of the special member functions are defined. More...
 
class  VirtualClassDestructorCheck
 Finds base classes whose destructor is neither public and virtual nor protected and non-virtual. More...
 

Functions

static bool isCopyConstructible (CXXRecordDecl const &Node)
 
static bool isMoveConstructible (CXXRecordDecl const &Node)
 
static bool isCopyAssignable (CXXRecordDecl const &Node)
 
static bool isMoveAssignable (CXXRecordDecl const &Node)
 
static ClangTidyModuleRegistry::Add< CppCoreGuidelinesModuleX ("cppcoreguidelines-module", "Adds checks for the C++ Core Guidelines.")
 
static bool isCapsOnly (StringRef Name)
 
static SourceLocation findDefaultCaptureEnd (const LambdaExpr *Lambda, ASTContext &Context)
 
static std::string createReplacementText (const LambdaExpr *Lambda)
 
static const BuiltinType * getBuiltinType (const Expr &E)
 
static QualType getUnqualifiedType (const Expr &E)
 
static APValue getConstantExprValue (const ASTContext &Ctx, const Expr &E)
 
static bool getIntegerConstantExprValue (const ASTContext &Context, const Expr &E, llvm::APSInt &Value)
 
static bool getFloatingConstantExprValue (const ASTContext &Context, const Expr &E, llvm::APFloat &Value)
 
static IntegerRange createFromType (const ASTContext &Context, const BuiltinType &T)
 
static bool isWideEnoughToHold (const ASTContext &Context, const BuiltinType &FromType, const BuiltinType &ToType)
 
static bool isWideEnoughToHold (const ASTContext &Context, const llvm::APSInt &IntegerConstant, const BuiltinType &ToType)
 
static bool isFloatExactlyRepresentable (const ASTContext &Context, const llvm::APFloat &FloatConstant, const QualType &DestType)
 
static llvm::SmallString< 64 > getValueAsString (const llvm::APSInt &Value, uint64_t HexBits)
 
static bool isControlStatement (const Stmt *S)
 
static bool isNoReturnCallStatement (const Stmt *S)
 
static bool canAdvanceAssignment (AssignedLevel Level)
 
static void updateAssignmentLevel (const FieldDecl *Field, const Expr *Init, const CXXConstructorDecl *Ctor, llvm::DenseMap< const FieldDecl *, AssignedLevel > &AssignedFields)
 
static std::optional< AssignmentPairisAssignmentToMemberOf (const CXXRecordDecl *Rec, const Stmt *S, const CXXConstructorDecl *Ctor)
 
static bool hasConstQualifier (QualType Type)
 
static bool hasVolatileQualifier (QualType Type)
 
static bool needsConstCast (QualType SourceType, QualType DestType)
 
static bool isIncompleteOrZeroLengthArrayType (ASTContext &Context, QualType T)
 
static bool isEmpty (ASTContext &Context, const QualType &Type)
 
static const char * getInitializer (QualType QT, bool UseAssignment)
 
static bool hasSingleVariadicArgumentWithValue (const CallExpr *C, uint64_t I)
 
static llvm::StringRef toString (SpecialMemberFunctionsCheck::SpecialMemberFunctionKind K)
 
static std::string join (ArrayRef< SpecialMemberFunctionsCheck::SpecialMemberFunctionKind > SMFS, llvm::StringRef AndOr)
 
 AST_MATCHER (CXXRecordDecl, hasPublicVirtualOrProtectedNonVirtualDestructor)
 
static std::optional< CharSourceRange > getVirtualKeywordRange (const CXXDestructorDecl &Destructor, const SourceManager &SM, const LangOptions &LangOpts)
 
static const AccessSpecDecl * getPublicASDecl (const CXXRecordDecl &StructOrClass)
 
static FixItHint generateUserDeclaredDestructor (const CXXRecordDecl &StructOrClass, const SourceManager &SourceManager)
 
static std::string getSourceText (const CXXDestructorDecl &Destructor)
 
static std::string eraseKeyword (std::string &DestructorString, const std::string &Keyword)
 
static FixItHint changePrivateDestructorVisibilityTo (const std::string &Visibility, const CXXDestructorDecl &Destructor, const SourceManager &SM, const LangOptions &LangOpts)
 

Variables

const internal::VariadicDynCastAllOfMatcher< Stmt, VAArgExpr > VAArgExpr
 
static constexpr StringRef AllowedVariadics []
 
static constexpr StringRef VaArgWarningMessage
 

Function Documentation

◆ AST_MATCHER()

clang::tidy::cppcoreguidelines::AST_MATCHER ( CXXRecordDecl  ,
hasPublicVirtualOrProtectedNonVirtualDestructor   
)

Definition at line 21 of file VirtualClassDestructorCheck.cpp.

References Node.

◆ canAdvanceAssignment()

static bool clang::tidy::cppcoreguidelines::canAdvanceAssignment ( AssignedLevel  Level)
static

◆ changePrivateDestructorVisibilityTo()

static FixItHint clang::tidy::cppcoreguidelines::changePrivateDestructorVisibilityTo ( const std::string &  Visibility,
const CXXDestructorDecl &  Destructor,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Semicolons ending an explicitly defaulted destructor have to be deleted. Otherwise, the left-over semicolon trails the private: access specifier.

Definition at line 130 of file VirtualClassDestructorCheck.cpp.

References eraseKeyword(), clang::tidy::utils::lexer::findNextTerminator(), and getSourceText().

Referenced by clang::tidy::cppcoreguidelines::VirtualClassDestructorCheck::check().

◆ createFromType()

static IntegerRange clang::tidy::cppcoreguidelines::createFromType ( const ASTContext &  Context,
const BuiltinType &  T 
)
static

Definition at line 244 of file NarrowingConversionsCheck.cpp.

Referenced by isWideEnoughToHold().

◆ createReplacementText()

static std::string clang::tidy::cppcoreguidelines::createReplacementText ( const LambdaExpr *  Lambda)
static

◆ eraseKeyword()

static std::string clang::tidy::cppcoreguidelines::eraseKeyword ( std::string &  DestructorString,
const std::string &  Keyword 
)
static

◆ findDefaultCaptureEnd()

static SourceLocation clang::tidy::cppcoreguidelines::findDefaultCaptureEnd ( const LambdaExpr *  Lambda,
ASTContext &  Context 
)
static

◆ generateUserDeclaredDestructor()

static FixItHint clang::tidy::cppcoreguidelines::generateUserDeclaredDestructor ( const CXXRecordDecl &  StructOrClass,
const SourceManager &  SourceManager 
)
static

◆ getBuiltinType()

static const BuiltinType * clang::tidy::cppcoreguidelines::getBuiltinType ( const Expr &  E)
static

Definition at line 190 of file NarrowingConversionsCheck.cpp.

References E.

◆ getConstantExprValue()

static APValue clang::tidy::cppcoreguidelines::getConstantExprValue ( const ASTContext &  Ctx,
const Expr &  E 
)
static

Definition at line 198 of file NarrowingConversionsCheck.cpp.

References E.

Referenced by getFloatingConstantExprValue(), and getIntegerConstantExprValue().

◆ getFloatingConstantExprValue()

static bool clang::tidy::cppcoreguidelines::getFloatingConstantExprValue ( const ASTContext &  Context,
const Expr &  E,
llvm::APFloat &  Value 
)
static

Definition at line 216 of file NarrowingConversionsCheck.cpp.

References E, and getConstantExprValue().

◆ getInitializer()

static const char * clang::tidy::cppcoreguidelines::getInitializer ( QualType  QT,
bool  UseAssignment 
)
static

Definition at line 376 of file ProTypeMemberInitCheck.cpp.

◆ getIntegerConstantExprValue()

static bool clang::tidy::cppcoreguidelines::getIntegerConstantExprValue ( const ASTContext &  Context,
const Expr &  E,
llvm::APSInt &  Value 
)
static

Definition at line 207 of file NarrowingConversionsCheck.cpp.

References E, and getConstantExprValue().

◆ getPublicASDecl()

static const AccessSpecDecl * clang::tidy::cppcoreguidelines::getPublicASDecl ( const CXXRecordDecl &  StructOrClass)
static

Definition at line 73 of file VirtualClassDestructorCheck.cpp.

Referenced by generateUserDeclaredDestructor().

◆ getSourceText()

static std::string clang::tidy::cppcoreguidelines::getSourceText ( const CXXDestructorDecl &  Destructor)
static

◆ getUnqualifiedType()

static QualType clang::tidy::cppcoreguidelines::getUnqualifiedType ( const Expr &  E)
static

Definition at line 194 of file NarrowingConversionsCheck.cpp.

References E.

◆ getValueAsString()

static llvm::SmallString< 64 > clang::tidy::cppcoreguidelines::getValueAsString ( const llvm::APSInt &  Value,
uint64_t  HexBits 
)
static

Definition at line 303 of file NarrowingConversionsCheck.cpp.

◆ getVirtualKeywordRange()

static std::optional< CharSourceRange > clang::tidy::cppcoreguidelines::getVirtualKeywordRange ( const CXXDestructorDecl &  Destructor,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Range ends with StartOfNextToken so that any whitespace after virtual is included.

Definition at line 50 of file VirtualClassDestructorCheck.cpp.

Referenced by clang::tidy::cppcoreguidelines::VirtualClassDestructorCheck::check().

◆ hasConstQualifier()

static bool clang::tidy::cppcoreguidelines::hasConstQualifier ( QualType  Type)
static

◆ hasSingleVariadicArgumentWithValue()

static bool clang::tidy::cppcoreguidelines::hasSingleVariadicArgumentWithValue ( const CallExpr *  C,
uint64_t  I 
)
static

Definition at line 157 of file ProTypeVarargCheck.cpp.

References C.

Referenced by clang::tidy::cppcoreguidelines::ProTypeVarargCheck::check().

◆ hasVolatileQualifier()

static bool clang::tidy::cppcoreguidelines::hasVolatileQualifier ( QualType  Type)
static

◆ isAssignmentToMemberOf()

static std::optional< AssignmentPair > clang::tidy::cppcoreguidelines::isAssignmentToMemberOf ( const CXXRecordDecl *  Rec,
const Stmt *  S,
const CXXConstructorDecl *  Ctor 
)
static

◆ isCapsOnly()

static bool clang::tidy::cppcoreguidelines::isCapsOnly ( StringRef  Name)
static

Definition at line 21 of file MacroUsageCheck.cpp.

References C, and Name.

◆ isControlStatement()

static bool clang::tidy::cppcoreguidelines::isControlStatement ( const Stmt *  S)
static

◆ isCopyAssignable()

static bool clang::tidy::cppcoreguidelines::isCopyAssignable ( CXXRecordDecl const &  Node)
static

Definition at line 53 of file AvoidConstOrRefDataMembersCheck.cpp.

References isCopyAssignable(), and Node.

Referenced by isCopyAssignable().

◆ isCopyConstructible()

static bool clang::tidy::cppcoreguidelines::isCopyConstructible ( CXXRecordDecl const &  Node)
static

Definition at line 17 of file AvoidConstOrRefDataMembersCheck.cpp.

References isCopyConstructible(), and Node.

Referenced by isCopyConstructible().

◆ isEmpty()

static bool clang::tidy::cppcoreguidelines::isEmpty ( ASTContext &  Context,
const QualType &  Type 
)
static

Definition at line 369 of file ProTypeMemberInitCheck.cpp.

References isIncompleteOrZeroLengthArrayType(), and Type.

◆ isFloatExactlyRepresentable()

static bool clang::tidy::cppcoreguidelines::isFloatExactlyRepresentable ( const ASTContext &  Context,
const llvm::APFloat &  FloatConstant,
const QualType &  DestType 
)
static

Definition at line 290 of file NarrowingConversionsCheck.cpp.

◆ isIncompleteOrZeroLengthArrayType()

static bool clang::tidy::cppcoreguidelines::isIncompleteOrZeroLengthArrayType ( ASTContext &  Context,
QualType  T 
)
static

Definition at line 355 of file ProTypeMemberInitCheck.cpp.

Referenced by isEmpty().

◆ isMoveAssignable()

static bool clang::tidy::cppcoreguidelines::isMoveAssignable ( CXXRecordDecl const &  Node)
static

Definition at line 71 of file AvoidConstOrRefDataMembersCheck.cpp.

References isMoveAssignable(), and Node.

Referenced by isMoveAssignable().

◆ isMoveConstructible()

static bool clang::tidy::cppcoreguidelines::isMoveConstructible ( CXXRecordDecl const &  Node)
static

Definition at line 35 of file AvoidConstOrRefDataMembersCheck.cpp.

References isMoveConstructible(), and Node.

Referenced by isMoveConstructible().

◆ isNoReturnCallStatement()

static bool clang::tidy::cppcoreguidelines::isNoReturnCallStatement ( const Stmt *  S)
static

◆ isWideEnoughToHold() [1/2]

static bool clang::tidy::cppcoreguidelines::isWideEnoughToHold ( const ASTContext &  Context,
const BuiltinType &  FromType,
const BuiltinType &  ToType 
)
static

Definition at line 272 of file NarrowingConversionsCheck.cpp.

References createFromType().

◆ isWideEnoughToHold() [2/2]

static bool clang::tidy::cppcoreguidelines::isWideEnoughToHold ( const ASTContext &  Context,
const llvm::APSInt &  IntegerConstant,
const BuiltinType &  ToType 
)
static

Definition at line 280 of file NarrowingConversionsCheck.cpp.

References createFromType().

◆ join()

static std::string clang::tidy::cppcoreguidelines::join ( ArrayRef< SpecialMemberFunctionsCheck::SpecialMemberFunctionKind SMFS,
llvm::StringRef  AndOr 
)
static

Definition at line 95 of file SpecialMemberFunctionsCheck.cpp.

References toString().

◆ needsConstCast()

static bool clang::tidy::cppcoreguidelines::needsConstCast ( QualType  SourceType,
QualType  DestType 
)
static

◆ toString()

static llvm::StringRef clang::tidy::cppcoreguidelines::toString ( SpecialMemberFunctionsCheck::SpecialMemberFunctionKind  K)
static

◆ updateAssignmentLevel()

static void clang::tidy::cppcoreguidelines::updateAssignmentLevel ( const FieldDecl *  Field,
const Expr *  Init,
const CXXConstructorDecl *  Ctor,
llvm::DenseMap< const FieldDecl *, AssignedLevel > &  AssignedFields 
)
static

◆ X()

static ClangTidyModuleRegistry::Add< CppCoreGuidelinesModule > clang::tidy::cppcoreguidelines::X ( "cppcoreguidelines-module"  ,
"Adds checks for the C++ Core Guidelines."   
)
static

Variable Documentation

◆ AllowedVariadics

constexpr StringRef clang::tidy::cppcoreguidelines::AllowedVariadics[]
staticconstexpr

◆ VAArgExpr

const internal::VariadicDynCastAllOfMatcher<Stmt, VAArgExpr> clang::tidy::cppcoreguidelines::VAArgExpr

◆ VaArgWarningMessage

constexpr StringRef clang::tidy::cppcoreguidelines::VaArgWarningMessage
staticconstexpr
Initial value:
=
"do not use va_arg to define c-style vararg functions; "
"use variadic templates instead"

Definition at line 62 of file ProTypeVarargCheck.cpp.

Referenced by clang::tidy::cppcoreguidelines::ProTypeVarargCheck::check().