On Mon, May 2, 2011 at 8:21 AM, Bert Huijben <[email protected]> wrote: > > >> -----Original Message----- >> From: Hyrum K Wright [mailto:[email protected]] >> Sent: maandag 2 mei 2011 14:46 >> To: Daniel Shahaf >> Cc: [email protected] >> Subject: Re: svn commit: r1098204 - >> /subversion/trunk/subversion/libsvn_wc/questions.c >> >> On Sun, May 1, 2011 at 2:38 AM, Daniel Shahaf <[email protected]> >> wrote: >> > Nice series of patches tonight --- what tool / gcc flags did you use >> > to catch them? >> >> I've been playing around with clang-analyzer, a static analyzer that >> is part of llvm: >> http://clang-analyzer.llvm.org/ >> >> There are still a lot of false positives (it has trouble grokking our >> SVN_ERR_ASSERT() macro), but it's been useful to find the kinds of >> problems fixed in my patches the last few days. >> >> At some point, it might be useful to set up a nightly buildbot to >> automatically run static analysis on a regular basis. > > Maybe you can #define SVN_ERR_ASSERT() to assert() for clang? > (It might even use assert() as a hint to improve results)
That's a good idea. We can condition it upon the __clang__ preprocessor macro, but that would change the definition for people building with clang and not running the analyzer. I'm not quite sure if clang has a special flag for when the analyzer is running. I also found this section in the clang-analyzer docs, talking about custom assertion handlers: http://clang-analyzer.llvm.org/annotations.html#custom_assertions However, it seemed to imply it best dealt with handlers that wouldn't return, rather than our current method sending errors back up the stack. -Hyrum

