diff options
Diffstat (limited to 'lib/StaticAnalyzer/Checkers')
-rw-r--r-- | lib/StaticAnalyzer/Checkers/CStringChecker.cpp | 4 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/Checkers.td | 54 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/ChrootChecker.cpp | 4 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/ExperimentalChecks.cpp | 7 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/ExperimentalChecks.h | 5 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp | 4 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/StreamChecker.cpp | 4 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp | 4 |
8 files changed, 65 insertions, 21 deletions
diff --git a/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/lib/StaticAnalyzer/Checkers/CStringChecker.cpp index 51e6650908..1fa4d57894 100644 --- a/lib/StaticAnalyzer/Checkers/CStringChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/CStringChecker.cpp @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -#include "ExperimentalChecks.h" +#include "ClangSACheckers.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h" #include "clang/StaticAnalyzer/Core/PathSensitive/GRStateTrait.h" @@ -109,7 +109,7 @@ namespace ento { } } -void ento::RegisterCStringChecker(ExprEngine &Eng) { +void ento::registerCStringChecker(ExprEngine &Eng) { Eng.registerCheck(new CStringChecker()); } diff --git a/lib/StaticAnalyzer/Checkers/Checkers.td b/lib/StaticAnalyzer/Checkers/Checkers.td index b8e69ddd65..020cef1fbf 100644 --- a/lib/StaticAnalyzer/Checkers/Checkers.td +++ b/lib/StaticAnalyzer/Checkers/Checkers.td @@ -9,11 +9,32 @@ include "clang/StaticAnalyzer/Checkers/CheckerBase.td" +//===----------------------------------------------------------------------===// +// Packages. +//===----------------------------------------------------------------------===// + def Core : Package<"core">; def Cocoa : Package<"cocoa">; def Unix : Package<"unix">; def MacOSX : Package<"macosx">; +def CoreExperimental : Package<"experimental">, + InPackage<Core>, Hidden; + +def UnixExperimental : Package<"experimental">, + InPackage<Unix>, Hidden; + +//===----------------------------------------------------------------------===// +// Groups. +//===----------------------------------------------------------------------===// + +def AllExperimental : CheckerGroup<"all-experimental">, + Hidden; + +//===----------------------------------------------------------------------===// +// Checkers. +//===----------------------------------------------------------------------===// + let ParentPackage = Cocoa in { def ObjCSelfInitChecker : Checker<"SelfInit">, @@ -40,3 +61,36 @@ def MacOSXAPIChecker : Checker<"API">, InPackage<MacOSX>, HelpText<"Check calls to various MacOSXAPIChecker">, DescFile<"MacOSXAPIChecker.cpp">; + +//===----------------------------------------------------------------------===// +// Hidden experimental checkers. +//===----------------------------------------------------------------------===// + +let Group = AllExperimental in { + +def CStringChecker : Checker<"CString">, + InPackage<CoreExperimental>, + HelpText<"Check calls to functions in <string.h>">, + DescFile<"CStringChecker.cpp">; + +def UnreachableCodeChecker : Checker<"UnreachableCode">, + InPackage<CoreExperimental>, + HelpText<"Check unreachable code">, + DescFile<"UnreachableCodeChecker.cpp">; + +def ChrootChecker : Checker<"Chroot">, + InPackage<UnixExperimental>, + HelpText<"Check improper use of chroot">, + DescFile<"ChrootChecker.cpp">; + +def PthreadLockChecker : Checker<"PthreadLock">, + InPackage<UnixExperimental>, + HelpText<"Simple lock -> unlock checker">, + DescFile<"PthreadLockChecker.cpp">; + +def StreamChecker : Checker<"Stream">, + InPackage<UnixExperimental>, + HelpText<"Check stream handling functions">, + DescFile<"StreamChecker.cpp">; + +} diff --git a/lib/StaticAnalyzer/Checkers/ChrootChecker.cpp b/lib/StaticAnalyzer/Checkers/ChrootChecker.cpp index c0c990ae09..a184dd4622 100644 --- a/lib/StaticAnalyzer/Checkers/ChrootChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/ChrootChecker.cpp @@ -11,7 +11,7 @@ // //===----------------------------------------------------------------------===// -#include "ExperimentalChecks.h" +#include "ClangSACheckers.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h" #include "clang/StaticAnalyzer/Core/PathSensitive/GRState.h" @@ -59,7 +59,7 @@ private: } // end anonymous namespace -void ento::RegisterChrootChecker(ExprEngine &Eng) { +void ento::registerChrootChecker(ExprEngine &Eng) { Eng.registerCheck(new ChrootChecker()); } diff --git a/lib/StaticAnalyzer/Checkers/ExperimentalChecks.cpp b/lib/StaticAnalyzer/Checkers/ExperimentalChecks.cpp index 606fb359fe..28a045d2fc 100644 --- a/lib/StaticAnalyzer/Checkers/ExperimentalChecks.cpp +++ b/lib/StaticAnalyzer/Checkers/ExperimentalChecks.cpp @@ -22,12 +22,7 @@ using namespace ento; void ento::RegisterExperimentalChecks(ExprEngine &Eng) { // These are checks that never belong as internal checks // within ExprEngine. - RegisterCStringChecker(Eng); - RegisterChrootChecker(Eng); - RegisterMallocChecker(Eng); - RegisterPthreadLockChecker(Eng); - RegisterStreamChecker(Eng); - RegisterUnreachableCodeChecker(Eng); + RegisterMallocChecker(Eng); // ArrayBoundChecker depends on this. } void ento::RegisterExperimentalInternalChecks(ExprEngine &Eng) { diff --git a/lib/StaticAnalyzer/Checkers/ExperimentalChecks.h b/lib/StaticAnalyzer/Checkers/ExperimentalChecks.h index 739d34d833..aa87705105 100644 --- a/lib/StaticAnalyzer/Checkers/ExperimentalChecks.h +++ b/lib/StaticAnalyzer/Checkers/ExperimentalChecks.h @@ -22,13 +22,8 @@ namespace ento { class ExprEngine; void RegisterAnalyzerStatsChecker(ExprEngine &Eng); -void RegisterChrootChecker(ExprEngine &Eng); -void RegisterCStringChecker(ExprEngine &Eng); void RegisterIdempotentOperationChecker(ExprEngine &Eng); void RegisterMallocChecker(ExprEngine &Eng); -void RegisterPthreadLockChecker(ExprEngine &Eng); -void RegisterStreamChecker(ExprEngine &Eng); -void RegisterUnreachableCodeChecker(ExprEngine &Eng); } // end GR namespace diff --git a/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp b/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp index 1f8cd892c2..e20230a885 100644 --- a/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp @@ -12,10 +12,10 @@ // //===----------------------------------------------------------------------===// +#include "ClangSACheckers.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" #include "clang/StaticAnalyzer/Core/PathSensitive/GRStateTrait.h" -#include "ExperimentalChecks.h" #include "llvm/ADT/ImmutableSet.h" using namespace clang; @@ -53,7 +53,7 @@ template <> struct GRStateTrait<LockSet> : } // end GR namespace } // end clang namespace -void ento::RegisterPthreadLockChecker(ExprEngine &Eng) { +void ento::registerPthreadLockChecker(ExprEngine &Eng) { Eng.registerCheck(new PthreadLockChecker()); } diff --git a/lib/StaticAnalyzer/Checkers/StreamChecker.cpp b/lib/StaticAnalyzer/Checkers/StreamChecker.cpp index ba9fed8fe2..54792f74bd 100644 --- a/lib/StaticAnalyzer/Checkers/StreamChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/StreamChecker.cpp @@ -11,7 +11,7 @@ // //===----------------------------------------------------------------------===// -#include "ExperimentalChecks.h" +#include "ClangSACheckers.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h" #include "clang/StaticAnalyzer/Core/PathSensitive/GRState.h" @@ -114,7 +114,7 @@ namespace ento { } } -void ento::RegisterStreamChecker(ExprEngine &Eng) { +void ento::registerStreamChecker(ExprEngine &Eng) { Eng.registerCheck(new StreamChecker()); } diff --git a/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp b/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp index 1f23306d8c..6d72e6fb5e 100644 --- a/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp @@ -13,6 +13,7 @@ // A similar flow-sensitive only check exists in Analysis/ReachableCode.cpp //===----------------------------------------------------------------------===// +#include "ClangSACheckers.h" #include "clang/AST/ParentMap.h" #include "clang/Basic/Builtins.h" #include "clang/Basic/SourceManager.h" @@ -21,7 +22,6 @@ #include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" -#include "ExperimentalChecks.h" #include "llvm/ADT/SmallPtrSet.h" // The number of CFGBlock pointers we want to reserve memory for. This is used @@ -54,7 +54,7 @@ void *UnreachableCodeChecker::getTag() { return &x; } -void ento::RegisterUnreachableCodeChecker(ExprEngine &Eng) { +void ento::registerUnreachableCodeChecker(ExprEngine &Eng) { Eng.registerCheck(new UnreachableCodeChecker()); } |