Jordan, Ted, thanks for the review!

  Is it now fine to commit? ;)


================
Comment at: include/clang/StaticAnalyzer/Core/BugReporter/BugType.h:40-41
@@ -37,3 +39,4 @@
 public:
-  BugType(StringRef name, StringRef cat)
-    : Name(name), Category(cat), SuppressonSink(false) {}
+  BugType(class CheckName CheckName, StringRef name, StringRef cat)
+      : CheckName(CheckName), Name(name), Category(cat),
+        SuppressonSink(false) {}
----------------
Jordan Rose wrote:
> We try not to shadow class names with field or parameter names. Just "const 
> CheckName Check", maybe?
Done.

================
Comment at: lib/StaticAnalyzer/Checkers/MallocChecker.cpp:309-312
@@ -306,3 +308,6 @@
   /// Tells if a given family/call/symbol is tracked by the current checker.
-  bool isTrackedByCurrentChecker(AllocationFamily Family) const;
+  /// Sets CheckKind to the kind of the checker responsible for this
+  /// family/call/symbol.
+  bool isTrackedByCurrentChecker(AllocationFamily Family,
+                                 CheckKind &CheckKind) const;
   bool isTrackedByCurrentChecker(CheckerContext &C,
----------------
Jordan Rose wrote:
> Possible alternative:
> 
> ```Optional<CheckKind> getCheckIfTracked(AllocationFamily Family) const;```
> 
> I personally tend to avoid returning values by reference. What do you think 
> of this version?
With Optional the user code becomes somewhat less elegant, but if you like it 
more, I'm fine with it.

================
Comment at: lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp:68-71
@@ -62,12 +67,6 @@
 
 
//===----------------------------------------------------------------------===//
 // Utility functions.
 
//===----------------------------------------------------------------------===//
 
 
----------------
Jordan Rose wrote:
> There are no more utility functions, so let's drop this header.
Sure. Done.

================
Comment at: lib/StaticAnalyzer/Checkers/MallocChecker.cpp:2276-2280
@@ -2235,3 +2275,7 @@
   // checker.
-  mgr.registerChecker<MallocChecker>()->Filter.CNewDeleteChecker = true;
+  if (!checker->ChecksEnabled[MallocChecker::CK_NewDeleteChecker]) {
+    checker->ChecksEnabled[MallocChecker::CK_NewDeleteChecker] = true;
+    checker->CheckNames[MallocChecker::CK_NewDeleteChecker] =
+        mgr.getCurrentCheckName();
+  }
 }
----------------
Jordan Rose wrote:
> Good work here: if only the leak-checker is enabled, it becomes responsible 
> for the use-after-delete checks, but if both are enabled the normal NewDelete 
> checker will show up. Nice!
MallocChecker is particularly convoluted. It should be possible to have the 
same functionality with a simpler structure, then this code would not be 
necessary =\


http://llvm-reviews.chandlerc.com/D2557
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to