<div dir="ltr"><br><br><div class="gmail_quote">On Mon, Oct 6, 2008 at 1:16 AM, Ted Kremenek <span dir="ltr"><<a href="mailto:kremenek@apple.com">kremenek@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
On Oct 5, 2008, at 3:11 AM, Zhongxing Xu wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
No real reason, other than -checker-cfref functionally does the same thing as -checker-simple except that it does the retain/release checking for Objective-C.  All -checker-simple does is run the path-sensitive engine and execute its internal checks.  It's also a bad name.  "-checker-basic-checks" instead?<br>

<br>
I prefer shorter name "-checker-basic". What do you think that we make it available for pure C code checking?<br>
</blockquote>
<br>
<br></div>
-checker-basic sounds fine.<br>
<br>
Just to be clear, -checker-cfref works on C code as well.  It just knows about the retain/release methods and also tracks reference counts.  It does all the same checks as -checker-simple does, and the performance impact is so minimal it didn't seem worth confusing people with two options and always run with "maximum checking."  That said, we probably should provide a separate scan-build option to run -checker-basic, and maybe one option, -checker-all-checks, that enables everything.<br>

<br>
The current transfer function implementation is not designed will for checker composition, and I see this as the next big overhauling in the design of the system.  Right now the code in CFRefCount.cpp does some redundant work also done in GRSimpleVals.cpp, and the transfer function object defined in CFRefCount.cpp also subclasses GRSimpleVals.cpp and overrides some of its virtual functions.  This just doesn't seem very modular to me.  </blockquote>
<div><br>Exactly. Right now there is not many different transfer functions other than GRSimpleVals due to the BasicStore limitation. So how to modularize transfer functions seems still unclear.  But when we have RegionStore in position, the necessity is obvious. Foremost, state splitting will be common. For example, when we have to assign to an array element with a symbolic index, assume the symbolic index to be every or random possible value and split up the state is necessary.<br>
</div></div><br></div>