[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:08:14 PST 2024


https://github.com/steakhal created https://github.com/llvm/llvm-project/pull/84160

Fixes #73764

With this patch, now all the callbacks are demonstrated here.

>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] [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,



More information about the cfe-commits mailing list