<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Yehuda,<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 20, 2016, at 8:26 AM, יהודה שפירא via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">I have been working on the llvm project - more on the backend and I want to get more familiarized with the clang and especially with the static analyzer project.</div><div class="">So I want to try and tackle one of the open projects that listed in the site <a href="http://clang-analyzer.llvm.org/open_projects.html" class="">http://clang-analyzer.llvm.org/open_projects.html</a>.</div><div class="">I want to start with something simple, and so I was thinking about working on the <span style="font-family:'Lucida Grande','Lucida Sans Unicode',Arial,Verdana,Helvetica,sans-serif;line-height:13px" class="">BitwiseMaskingChecker </span><span style="font-family:'Lucida Grande','Lucida Sans Unicode',Arial,Verdana,Helvetica,sans-serif;line-height:13px" class=""> (</span><a href="http://llvm.org/bugs/show_bug.cgi?id=16615" style="font-family:'Lucida Grande','Lucida Sans Unicode',Arial,Verdana,Helvetica,sans-serif;line-height:13px" class="">PR16615</a>) unless you think it not a good start.</div></div></div></blockquote><div><br class=""></div><div>If you are looking for something even simpler for your first project, here are a couple of suggestions:</div><div><br class=""></div><div>1) Add modeling for the std::call_once() function. Tackling this would familiarize you with the “BodyFarm” approach the analyzer uses to synthesize simple, fake method bodies representing the behavior of important library functions. This is likely to be quite similar to the approach the analyzer takes for ‘dispatch_once()' in BodyFarm.cpp.</div><div><br class=""></div><div>2) Extend the VforkChecker to mark the call to 'vfork()' in a BugReporterVisitor. There is a TODO in VforkChecker.cpp where this should be added. Tackling this would get you familiar with the approach the analyzer uses to keep its analysis state lean while still displaying helpful path-sensitive diagnostics. There is an example of how to do this in SuperDeallocBRVisitor::VisitNode() in ObjCSuperDeallocChecker.cpp.</div><div><br class=""></div><div>3) If you are interested in how the analyzer does AST-based checks, one place to start is the ObjCMissingSuperCallChecker. There a bunch of TODOs in that file. But the simplest project is probably to tackle <<a href="https://llvm.org/bugs/show_bug.cgi?id=22562" class="">https://llvm.org/bugs/show_bug.cgi?id=22562</a>>, which adds a diagnostic for when an NSDocument subclass overrides -close without calling its superclass. There is a patch attached that to add the functionality — but it is missing tests. This would be a good project to see how the analyzer is tested!</div><div><br class=""></div><div>Devin</div><div><br class=""></div></div></div></body></html>