File indexing completed on 2024-04-06 12:31:50
0001 #ifndef Utilities_StaticAnalyzers_MemberDumper_h
0002 #define Utilities_StaticAnalyzers_MemberDumper_h
0003 #include <clang/AST/DeclCXX.h>
0004 #include <clang/AST/Decl.h>
0005 #include <clang/AST/DeclTemplate.h>
0006 #include <clang/AST/StmtVisitor.h>
0007 #include <clang/AST/ParentMap.h>
0008 #include <clang/Analysis/CFGStmtMap.h>
0009 #include <llvm/Support/SaveAndRestore.h>
0010 #include <clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h>
0011 #include <clang/StaticAnalyzer/Core/Checker.h>
0012 #include <clang/StaticAnalyzer/Core/BugReporter/BugReporter.h>
0013 #include <clang/StaticAnalyzer/Core/BugReporter/BugType.h>
0014 #include <llvm/ADT/SmallString.h>
0015 #include <string>
0016 #include "CmsException.h"
0017 #include "CmsSupport.h"
0018
0019 namespace clangcms {
0020
0021 class ClassDumper : public clang::ento::Checker<clang::ento::check::ASTDecl<clang::CXXRecordDecl> > {
0022 public:
0023 void checkASTDecl(const clang::CXXRecordDecl *CRD,
0024 clang::ento::AnalysisManager &mgr,
0025 clang::ento::BugReporter &BR,
0026 std::string tname) const;
0027
0028 void checkASTDecl(const clang::CXXRecordDecl *RD,
0029 clang::ento::AnalysisManager &mgr,
0030 clang::ento::BugReporter &BR) const {
0031 std::string pname = "classes.txt.dumperall.unsorted";
0032 checkASTDecl(RD, mgr, BR, pname);
0033 }
0034 };
0035
0036 class ClassDumperCT : public clang::ento::Checker<clang::ento::check::ASTDecl<clang::ClassTemplateDecl> > {
0037 public:
0038 void checkASTDecl(const clang::ClassTemplateDecl *TD,
0039 clang::ento::AnalysisManager &mgr,
0040 clang::ento::BugReporter &BR) const;
0041 };
0042
0043 class ClassDumperFT : public clang::ento::Checker<clang::ento::check::ASTDecl<clang::FunctionTemplateDecl> > {
0044 public:
0045 void checkASTDecl(const clang::FunctionTemplateDecl *TD,
0046 clang::ento::AnalysisManager &mgr,
0047 clang::ento::BugReporter &BR) const;
0048 };
0049
0050 class ClassDumperInherit : public clang::ento::Checker<clang::ento::check::ASTDecl<clang::CXXRecordDecl> > {
0051 public:
0052 void checkASTDecl(const clang::CXXRecordDecl *CRD,
0053 clang::ento::AnalysisManager &mgr,
0054 clang::ento::BugReporter &BR) const;
0055 };
0056
0057 }
0058 #endif