diff options
Diffstat (limited to 'lib/Analysis')
-rw-r--r-- | lib/Analysis/BugReporter.cpp | 18 | ||||
-rw-r--r-- | lib/Analysis/CFRefCount.cpp | 14 | ||||
-rw-r--r-- | lib/Analysis/CheckDeadStores.cpp | 6 | ||||
-rw-r--r-- | lib/Analysis/GRExprEngineInternalChecks.cpp | 2 |
4 files changed, 25 insertions, 15 deletions
diff --git a/lib/Analysis/BugReporter.cpp b/lib/Analysis/BugReporter.cpp index b163eea1b8..6a1478a9cb 100644 --- a/lib/Analysis/BugReporter.cpp +++ b/lib/Analysis/BugReporter.cpp @@ -701,7 +701,8 @@ void BugReporter::EmitWarning(BugReport& R) { if (R.getBugType().isCached(R)) return; - llvm::OwningPtr<PathDiagnostic> D(new PathDiagnostic(R.getName())); + llvm::OwningPtr<PathDiagnostic> D(new PathDiagnostic(R.getName(), + R.getCategory())); GeneratePathDiagnostic(*D.get(), R); // Get the meta data. @@ -764,12 +765,17 @@ void BugReporter::EmitWarning(BugReport& R) { } } -void -BugReporter::EmitBasicReport(const char* name, const char* str, - SourceLocation Loc, - SourceRange* RBeg, unsigned NumRanges) { +void BugReporter::EmitBasicReport(const char* name, const char* str, + SourceLocation Loc, + SourceRange* RBeg, unsigned NumRanges) { + EmitBasicReport(name, "", str, Loc, RBeg, NumRanges); +} + +void BugReporter::EmitBasicReport(const char* name, const char* category, + const char* str, SourceLocation Loc, + SourceRange* RBeg, unsigned NumRanges) { - SimpleBugType BT(name); + SimpleBugType BT(name, category, 0); DiagCollector C(BT); Diagnostic& Diag = getDiagnostic(); Diag.Report(&C, getContext().getFullLoc(Loc), diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp index 25841cd8db..dcea4a6cc0 100644 --- a/lib/Analysis/CFRefCount.cpp +++ b/lib/Analysis/CFRefCount.cpp @@ -2020,6 +2020,10 @@ namespace { const CFRefCount& getTF() const { return TF; } virtual bool isLeak() const { return false; } + + const char* getCategory() const { + return "Memory (Core Foundation/Objective-C)"; + } }; class VISIBILITY_HIDDEN UseAfterRelease : public CFRefBug { @@ -2027,7 +2031,7 @@ namespace { UseAfterRelease(CFRefCount& tf) : CFRefBug(tf) {} virtual const char* getName() const { - return "Use-After-Release"; + return "use-after-release"; } virtual const char* getDescription() const { return "Reference-counted object is used after it is released."; @@ -2041,7 +2045,7 @@ namespace { BadRelease(CFRefCount& tf) : CFRefBug(tf) {} virtual const char* getName() const { - return "Bad Release"; + return "bad release"; } virtual const char* getDescription() const { return "Incorrect decrement of the reference count of a " @@ -2059,13 +2063,13 @@ namespace { virtual const char* getName() const { if (getTF().isGCEnabled()) - return "Memory Leak (GC)"; + return "Leak (GC)"; if (getTF().getLangOptions().getGCMode() == LangOptions::HybridGC) - return "Memory Leak (Hybrid MM, non-GC)"; + return "leak (hybrid MM, non-GC)"; assert (getTF().getLangOptions().getGCMode() == LangOptions::NonGC); - return "Memory Leak"; + return "leak"; } virtual const char* getDescription() const { diff --git a/lib/Analysis/CheckDeadStores.cpp b/lib/Analysis/CheckDeadStores.cpp index 73cb3f786b..d87bfb1964 100644 --- a/lib/Analysis/CheckDeadStores.cpp +++ b/lib/Analysis/CheckDeadStores.cpp @@ -59,19 +59,19 @@ public: case DeadIncrement: BugType = "dead increment"; case Standard: - if (!BugType) BugType = "dead store"; + if (!BugType) BugType = "dead assignment"; msg = "Value stored to '" + name + "' is never read"; break; case Enclosing: - BugType = "dead store"; + BugType = "dead nested assignment"; msg = "Although the value stored to '" + name + "' is used in the enclosing expression, the value is never actually" " read from '" + name + "'"; break; } - BR.EmitBasicReport(BugType, msg.c_str(), L, R); + BR.EmitBasicReport(BugType, "Dead Store", msg.c_str(), L, R); } void CheckVarDecl(VarDecl* VD, Expr* Ex, Expr* Val, diff --git a/lib/Analysis/GRExprEngineInternalChecks.cpp b/lib/Analysis/GRExprEngineInternalChecks.cpp index 0c5f078e56..92c448cb2f 100644 --- a/lib/Analysis/GRExprEngineInternalChecks.cpp +++ b/lib/Analysis/GRExprEngineInternalChecks.cpp @@ -293,7 +293,7 @@ class VISIBILITY_HIDDEN CheckAttrNonNull : public GRSimpleAPICheck { public: CheckAttrNonNull() : - BT("'nonnull' argument passed null", + BT("'nonnull' argument passed null", "API", "Null pointer passed as an argument to a 'nonnull' parameter") {} virtual bool Audit(ExplodedNode<GRState>* N, GRStateManager& VMgr) { |