<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">To get more familiar with the code, take a look at BugReporter.cpp::GenerateExtensivePathDiagnostic this is the logic that walks the chain of ExplodedNodes (the path) and constructs PathDiagnostics. You can see how interesting symbols are being used here and also how they get propagated by tracing interesting calculations, similar to what you want(<span style="font-family: Monaco; font-size: 11px; ">reversePropagateIntererstingSymbols</span>). (However, as I mentioned before, the interesting symbols are only used to prune the uninteresting calls.) You can also see how visitors are called to generate extra notes at the end of each loop iteration. The visitors are defined in BugRreporterVisitor.h. If you look at the implementation of some, you'll see that a visitor tracking a particular region, might register an additional visitor to track a related region.<div><div><br></div><div>Cheers,</div><div>Anna.<br><div><div><div>On Feb 23, 2013, at 2:14 PM, Anna Zaks <<a href="mailto:ganna@apple.com">ganna@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=us-ascii"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Feb 22, 2013, at 11:52 AM, gerardjubile <<a href="mailto:shahar.golan.mail@gmail.com">shahar.golan.mail@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Anna,<br><br>Thanks for your answers.<br><br>I really hoped that there is a way to mark the SVal's symbol as interesting<br>will do the trick :(<br>Would implementing this be difficult?<br></blockquote><div><br></div><div>It will not be trivial from the implementation point - there is no notion of a value being propagated through the analysis path, instead you have a sequence of ExplodedNodes, so you would have to walk the path and examine exploded nodes to see what changed and use heuristics to see if the change is something you should be observing. In addition, it is also not clear what to track. For example, for 'x = a + b' if 'x' is being tracked, should you start tracking 'a' and 'b'? What if  the value of 'x' depends on a condition, ex: 'if (c) x = a else x = b', should you start tracking assignments to 'c' as well? Determining what is interesting might require some sort of program slicing solution (<a href="http://en.wikipedia.org/wiki/Program_slicing">http://en.wikipedia.org/wiki/Program_slicing</a>). Also, we do not want to overpower users with too much info.</div><div><br></div><div>I would suggest starting with small incremental improvements. For example, use the existing visitors, which other checkers use. Adding a visitor to the BugReport is as easy as marking a symbol interesting.</div><div><br></div><div>The next step would be to see what is missing and try to enhance those visitors or write your own version, which solves a particular problem - adds a missing node along a path.</div><div><br></div><div>Anna.</div><br><blockquote type="cite">Could you guide me through this?<br><br>If it is to complicated for a newbie like me, I will try to follow the<br>example in bugreporter::trackNullOrundefValue.<br><br>Thanks, Gerard.<br><br><br><br><br>--<br>View this message in context: <a href="http://clang-developers.42468.n3.nabble.com/Traces-of-SVal-in-BugReporterVisitor-tp4030520p4030576.html">http://clang-developers.42468.n3.nabble.com/Traces-of-SVal-in-BugReporterVisitor-tp4030520p4030576.html</a><br>Sent from the Clang Developers mailing list archive at <a href="http://nabble.com/">Nabble.com</a>.<br>_______________________________________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br></blockquote></div><br></div></blockquote></div><br></div></div></div></body></html>