NoQ added a comment. Useful stuff!
When I see your approach with `mutexCount`, the following test case comes to mind: std::mutex m; void foo() { // Suppose this function is always called // with the mutex 'm' locked. m.unlock(); // Here probably some useful work is done. m.lock(); // What's the current mutex count? sleep(1); // expected-warning{{}} } ================ Comment at: lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp:11 @@ +10,3 @@ +// Defines a checker for blocks in critical sections. This checker should find +// the calls to blocking functions (for example: sleep, getc, fgets, read, +// recv etc.) inside a critical section. When sleep(x) is called while a mutex ---------------- A bit of trailing whitespace here. ================ Comment at: test/Analysis/block-in-critical-section.cpp:1 @@ +1,2 @@ +// RUN: %clang --analyze -std=c++11 -Xclang -analyzer-checker -Xclang alpha.unix.BlockInCriticalSection %s + ---------------- The run line is lacking `-verify`, and therefore these tests always pass. In your case, it'd be `-Xclang -verify`. On the other hand, i'm not sure if it's a good idea to run the test under the driver, instead of the standard `-cc1` approach - after all, you aren't including any system headers in the test. Repository: rL LLVM http://reviews.llvm.org/D21506 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits