[clang] [analyzer][NFC] Document check::ASTCodeBody checker callback (PR #84160)
Balazs Benics via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 6 04:58:32 PST 2024
https://github.com/steakhal updated https://github.com/llvm/llvm-project/pull/84160
>From a3da80aa7114d938e9cc3f03ec79417777c91fbf Mon Sep 17 00:00:00 2001
From: Balazs Benics <benicsbalazs at gmail.com>
Date: Wed, 6 Mar 2024 13:05:44 +0100
Subject: [PATCH 1/2] [analyzer][NFC] Document check::ASTCodeBody checker
callback
Fixes #73764
With this patch, now all the callbacks are demonstrated here.
---
.../Checkers/CheckerDocumentation.cpp | 58 +++++++++++--------
1 file changed, 34 insertions(+), 24 deletions(-)
diff --git a/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp b/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
index 01e0bed54cc6ed..ba66a2254cc777 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
@@ -33,30 +33,33 @@ namespace ento {
/// checking.
///
/// \sa CheckerContext
-class CheckerDocumentation : public Checker< check::PreStmt<ReturnStmt>,
- check::PostStmt<DeclStmt>,
- check::PreObjCMessage,
- check::PostObjCMessage,
- check::ObjCMessageNil,
- check::PreCall,
- check::PostCall,
- check::BranchCondition,
- check::NewAllocator,
- check::Location,
- check::Bind,
- check::DeadSymbols,
- check::BeginFunction,
- check::EndFunction,
- check::EndAnalysis,
- check::EndOfTranslationUnit,
- eval::Call,
- eval::Assume,
- check::LiveSymbols,
- check::RegionChanges,
- check::PointerEscape,
- check::ConstPointerEscape,
- check::Event<ImplicitNullDerefEvent>,
- check::ASTDecl<FunctionDecl> > {
+class CheckerDocumentation : public Checker< //
+ check::ASTCodeBody, //
+ check::ASTDecl<FunctionDecl>, //
+ check::BeginFunction, //
+ check::Bind, //
+ check::BranchCondition, //
+ check::ConstPointerEscape, //
+ check::DeadSymbols, //
+ check::EndAnalysis, //
+ check::EndFunction, //
+ check::EndOfTranslationUnit, //
+ check::Event<ImplicitNullDerefEvent>, //
+ check::LiveSymbols, //
+ check::Location, //
+ check::NewAllocator, //
+ check::ObjCMessageNil, //
+ check::PointerEscape, //
+ check::PostCall, //
+ check::PostObjCMessage, //
+ check::PostStmt<DeclStmt>, //
+ check::PreCall, //
+ check::PreObjCMessage, //
+ check::PreStmt<ReturnStmt>, //
+ check::RegionChanges, //
+ eval::Assume, //
+ eval::Call //
+ > {
public:
/// Pre-visit the Statement.
///
@@ -321,6 +324,13 @@ class CheckerDocumentation : public Checker< check::PreStmt<ReturnStmt>,
void checkASTDecl(const FunctionDecl *D,
AnalysisManager &Mgr,
BugReporter &BR) const {}
+
+ /// Check every declaration that has a statement body in the AST.
+ ///
+ /// As AST traversal callback, which should only be used when the checker is
+ /// not path sensitive. It will be called for every Declaration in the AST.
+ void checkASTCodeBody(const Decl *D, AnalysisManager &Mgr,
+ BugReporter &BR) const {}
};
void CheckerDocumentation::checkPostStmt(const DeclStmt *DS,
>From e7ee37d91774d2add3901cb1c5da81a3a9a824ed Mon Sep 17 00:00:00 2001
From: Balazs Benics <benicsbalazs at gmail.com>
Date: Wed, 6 Mar 2024 13:57:42 +0100
Subject: [PATCH 2/2] Use clang-format off-on
---
.../Checkers/CheckerDocumentation.cpp | 57 ++++++++++---------
1 file changed, 30 insertions(+), 27 deletions(-)
diff --git a/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp b/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
index ba66a2254cc777..153a1b1acbfa19 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
@@ -33,33 +33,36 @@ namespace ento {
/// checking.
///
/// \sa CheckerContext
-class CheckerDocumentation : public Checker< //
- check::ASTCodeBody, //
- check::ASTDecl<FunctionDecl>, //
- check::BeginFunction, //
- check::Bind, //
- check::BranchCondition, //
- check::ConstPointerEscape, //
- check::DeadSymbols, //
- check::EndAnalysis, //
- check::EndFunction, //
- check::EndOfTranslationUnit, //
- check::Event<ImplicitNullDerefEvent>, //
- check::LiveSymbols, //
- check::Location, //
- check::NewAllocator, //
- check::ObjCMessageNil, //
- check::PointerEscape, //
- check::PostCall, //
- check::PostObjCMessage, //
- check::PostStmt<DeclStmt>, //
- check::PreCall, //
- check::PreObjCMessage, //
- check::PreStmt<ReturnStmt>, //
- check::RegionChanges, //
- eval::Assume, //
- eval::Call //
- > {
+class CheckerDocumentation
+ : public Checker<
+ // clang-format off
+ check::ASTCodeBody,
+ check::ASTDecl<FunctionDecl>,
+ check::BeginFunction,
+ check::Bind,
+ check::BranchCondition,
+ check::ConstPointerEscape,
+ check::DeadSymbols,
+ check::EndAnalysis,
+ check::EndFunction,
+ check::EndOfTranslationUnit,
+ check::Event<ImplicitNullDerefEvent>,
+ check::LiveSymbols,
+ check::Location,
+ check::NewAllocator,
+ check::ObjCMessageNil,
+ check::PointerEscape,
+ check::PostCall,
+ check::PostObjCMessage,
+ check::PostStmt<DeclStmt>,
+ check::PreCall,
+ check::PreObjCMessage,
+ check::PreStmt<ReturnStmt>,
+ check::RegionChanges,
+ eval::Assume,
+ eval::Call
+ // clang-format on
+ > {
public:
/// Pre-visit the Statement.
///
More information about the cfe-commits
mailing list