Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }  // namespace clangcms
0058 #endif