[clang] [analyzer][NFC] Document check::ASTCodeBody checker callback (PR #84160)

via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 6 04:08:36 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-static-analyzer-1

Author: Balazs Benics (steakhal)

<details>
<summary>Changes</summary>

Fixes #<!-- -->73764

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

---
Full diff: https://github.com/llvm/llvm-project/pull/84160.diff


1 Files Affected:

- (modified) clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp (+34-24) 


``````````diff
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,

``````````

</details>


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


More information about the cfe-commits mailing list