LocalCheckers.h revision 5a4f98ff943e6a501b0fe47ade007c9bbf96cb88
11ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek//==- LocalCheckers.h - Intra-Procedural+Flow-Sensitive Checkers -*- C++ -*-==// 21ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// 31ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// The LLVM Compiler Infrastructure 41ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner// This file is distributed under the University of Illinois Open Source 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner// License. See LICENSE.TXT for details. 71ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// 81ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek//===----------------------------------------------------------------------===// 91ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// 101ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// This file defines the interface to call a set of intra-procedural (local) 111ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// checkers that use flow/path-sensitive analyses to find bugs. 121ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek// 131ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek//===----------------------------------------------------------------------===// 141ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek 155a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis#ifndef LLVM_CLANG_GR_LOCALCHECKERS_H 165a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis#define LLVM_CLANG_GR_LOCALCHECKERS_H 171ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek 181ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremeneknamespace clang { 191ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek 201ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenekclass CFG; 2163bbe5312cd89ce0ceb684bff68c5baef636e93cTed Kremenekclass Decl; 22c0508f9fe37a3afb1ccad39879348272545e55dbChris Lattnerclass Diagnostic; 23fdd225ed6f362a8550e597eb875d9c402b8a309cTed Kremenekclass ASTContext; 24072192bcbb05a0fee7ec3061750b27e8d2004952Ted Kremenekclass LangOptions; 251a654b60ef40e84f3943cdb581795c4d4dae1e45Ted Kremenekclass ParentMap; 2617fdf955237aa626acbfd6070633318380c2340fTed Kremenekclass LiveVariables; 27db09a4dee28a4515438af60f2d2b4a83e4965c31Ted Kremenekclass ObjCImplementationDecl; 283cd483cbbf8921f463b3ee91d5da8a63db9d1299Ted Kremenekclass LangOptions; 29676ca153e04b1c6be477bc8a10f1e06256850ceeTed Kremenekclass TranslationUnitDecl; 301eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 315a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidisnamespace GR { 325a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis 335a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidisclass PathDiagnosticClient; 345a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidisclass GRTransferFuncs; 355a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidisclass BugType; 365a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidisclass BugReporter; 375a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidisclass GRExprEngine; 385a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis 39b317f8f5ca8737a5bbad97a3f7566a2dbd2ed61bZhongxing Xuvoid CheckDeadStores(CFG &cfg, LiveVariables &L, ParentMap &map, 40b317f8f5ca8737a5bbad97a3f7566a2dbd2ed61bZhongxing Xu BugReporter& BR); 411eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 429f7416138b8befe2d274f6f2cadc792d2c279711Ted KremenekGRTransferFuncs* MakeCFRefCountTF(ASTContext& Ctx, bool GCEnabled, 431eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const LangOptions& lopts); 441eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 452376002038c8b904acd20be754aedd1a7471be71Ted Kremenekvoid CheckObjCDealloc(const ObjCImplementationDecl* D, const LangOptions& L, 463cd483cbbf8921f463b3ee91d5da8a63db9d1299Ted Kremenek BugReporter& BR); 471eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 482376002038c8b904acd20be754aedd1a7471be71Ted Kremenekvoid CheckObjCInstMethSignature(const ObjCImplementationDecl *ID, 492376002038c8b904acd20be754aedd1a7471be71Ted Kremenek BugReporter& BR); 502376002038c8b904acd20be754aedd1a7471be71Ted Kremenek 512376002038c8b904acd20be754aedd1a7471be71Ted Kremenekvoid CheckObjCUnusedIvar(const ObjCImplementationDecl *D, BugReporter& BR); 521eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 535ab128b02d3b10413fb30738ec9f401dcfb47252Zhongxing Xuvoid RegisterAppleChecks(GRExprEngine& Eng, const Decl &D); 54eb94113be0ee5f4d38408b413d92464a0bc16b55Ted Kremenekvoid RegisterExperimentalChecks(GRExprEngine &Eng); 558382cf57b722f130f1a6b45380639871c07271c1Ted Kremenekvoid RegisterExperimentalInternalChecks(GRExprEngine &Eng); 561eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 57676ca153e04b1c6be477bc8a10f1e06256850ceeTed Kremenekvoid CheckLLVMConventions(TranslationUnitDecl &TU, BugReporter &BR); 582376002038c8b904acd20be754aedd1a7471be71Ted Kremenekvoid CheckSecuritySyntaxOnly(const Decl *D, BugReporter &BR); 5928a109f63506d8c96e3fbf1b959b603ccec2f586Zhongxing Xuvoid CheckSizeofPointer(const Decl *D, BugReporter &BR); 603ff8481f4be3f30e1082488238d83f78342303e1Zhongxing Xu 613ff8481f4be3f30e1082488238d83f78342303e1Zhongxing Xuvoid RegisterCallInliner(GRExprEngine &Eng); 625a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis 635a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis} // end GR namespace 645a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis 651ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek} // end namespace clang 661ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek 671ed6d2e4fda310af2de2ec09cdfedfa280cce948Ted Kremenek#endif 68