Home | History | Annotate | Download | only in analyzer
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      2           "http://www.w3.org/TR/html4/strict.dtd">
      3 <html>
      4 <head>
      5   <title>Release notes for checker-XXX builds</title>
      6   <link type="text/css" rel="stylesheet" href="menu.css">
      7   <link type="text/css" rel="stylesheet" href="content.css">
      8   <script type="text/javascript" src="scripts/menu.js"></script>
      9 </head>
     10 <body>
     11 
     12 <div id="page">
     13 <!--#include virtual="menu.html.incl"-->
     14 <div id="content">
     15 
     16 <h1>Release notes for <tt>checker-XXX</tt> builds</h1>
     17 
     18 <h4 id="checker_272">checker-272</h4>
     19 <p><b>built:</b> March 1, 2013</br>
     20 	<b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCbb91eedf8edf4c7388549be8f91e810d">checker-272.tar.bz2</a></p>
     21 	<p><b>highlights:</b></p>
     22 	<ul>
     23         <li>Better modeling of C++ constructors:
     24             <ul>
     25                 <li>Interprocedural analysis support for constructors of types with trivial destructors</li>
     26                 <li>Efficient model of trivial copy and move constructors</li>
     27             </ul>
     28         </li>
     29         <li>Better diagnostics for loops that execute 0 times</li>
     30         <li>Fixes a linking issue that prevented the checker from running on OS X v10.6 and earlier</li>
     31         <li>Fixes for misc. crashes and false positives</li>
     32 	</ul>
     33 
     34 <h4 id="checker_271">checker-271</h4>
     35 <p><b>built:</b> February 8, 2013</br>
     36 	<b>download:</b> <a href="http://bit.ly/1299Xt3">checker-271.tar.bz2</a></p>
     37 	<p><b>highlights:</b></p>
     38 	<ul>
     39         <li>Faster analysis for <tt>scan-build xcodebuild</tt> when using Xcode 4.6 and higher:
     40             <ul>
     41                 <li><tt>scan-build</tt> now uses Xcode's built-in interposition mechanism for the static analyzer to provide faster builds while doing static analysis (PCH files are now built).</li>
     42                 <li>This change also allows <tt>scan-build</tt> to have better support for iOS project analysis without having to specifying weird SDK settings to <tt>scan-build</tt>.</li>
     43             </ul></li>
     44         <li>Better diagnostics for implicitly-defined member functions in C++.</li>
     45         <li>New warning for <tt>malloc</tt>/<tt>free</tt> checker when passing <tt>malloc</tt>'ed pointer with non-zero offset to <tt>free()</tt>.
     46         <li>Fixes for misc. parser crashes.</li>
     47         <li>Newer than the static analyzer version in Xcode 4.6</li>
     48 	</ul>
     49 
     50 <h4 id="checker_270">checker-270</h4>
     51 <p><b>built:</b> January 4, 2013</br>
     52 	<b>download:</b> <a href="http://bit.ly/13ekSoV">checker-270.tar.bz2</a></p>
     53 	<p><b>highlights:</b></p>
     54 	<ul>
     55 		<li>Major performance enhancements to speed up interprocedural analysis.</li>
     56 		<li>Misc. bug fixes.</li>
     57 	</ul>
     58 
     59 <h4 id="checker_269">checker-269</h4>
     60 <p><b>built:</b> September 25, 2012</br>
     61 	<b>download:</b> <a href="http://bit.ly/USf8ge">checker-269.tar.bz2</a></p>
     62 	<p><b>highlights:</b></p>
     63 	<ul>
     64 		<li>Significantly improves interprocedural analysis for Objective-C.</li>
     65 		<li>Numerous bug fixes and heuristics to reduce false positives reported
     66 			over checker-268.</li>
     67 	</ul>
     68 
     69 <h4 id="checker_268">checker-268</h4>
     70 <p><b>built:</b> September 11, 2012</br>
     71 	<b>download:</b> <a href="http://bit.ly/U75NOp">checker-268.tar.bz2</a></p>
     72 	<p><b>highlights:</b></p>
     73 	
     74 <ul>
     75 	<li>Adds initial interprocedural analysis support for C++ and Objective-C. This will greatly improve analysis coverage and find deeper bugs in Objective-C and C++ code.</li>
     76 	<li>Contains a static analyzer newer than Xcode 4.4.</li>
     77 </ul>
     78 
     79 <p>NOTE: this checker build includes a <i>huge</i> number of changes. It has the potential to find many more bugs, but may report new kinds of false positives. We'd like to know about
     80 these, and any other problems you encounter. When you encounter an issue, please <a href="/filing_bugs.html">file a bug report</a>.</p>
     81 
     82 <h4 id="checker_267">checker-267</h4>
     83 <p><b>built:</b> June 1, 2012</br>
     84    <b>download:</b> <a href="http://bit.ly/OIdyI7">checker-267.tar.bz2</a></p>
     85    <p><b>highlights:</b></p>
     86 
     87 <p>Adds basic interprocedural analysis support for blocks.</p>
     88 
     89 <h4 id="checker_266">checker-266</h4>
     90 <p><b>built:</b> May 23, 2012</br>
     91    <b>download:</b> <a href="http://bit.ly/LgtUWx">checker-266.tar.bz2</a></p>
     92    <p><b>highlights:</b></p>
     93 
     94 <p>Contains numerous stability fixes over checker-266, especially when analyzing C++11 code.</p>
     95 
     96 <h4 id="checker_265">checker-265</h4>
     97 <p><b>built:</b> May 8, 2012</br>
     98    <b>download:</b> <a href="http://bit.ly/JceZBE">checker-265.tar.bz2</a></p>
     99    <p><b>highlights:</b></p>
    100 
    101 <p>This release contains a fix for a major crasher introduced in checker-264, and various refinements to
    102 improve the precision and reduce the false positive rate of the analyzer. It also enables a new unix.MallocSizeof check, which reports 
    103 inconsistencies between the casted type of the return value of a 'malloc/calloc/realloc' call and the operand 
    104 of sizeof expressions contained within its argument(s).</p>
    105 
    106 <h4 id="checker_264">checker-264</h4>
    107 
    108 <p><b>built:</b> April 26, 2012</br>
    109   <b>download:</b> <a href="http://bit.ly/JATSI8">checker-264.tar.bz2</a></p>
    110   <p><b>highlights:</b></p>
    111 
    112 <p>This release contains misc. bug fixes and performance enhancements over checker-263, including
    113   a reduction of some kinds of false positives related to the malloc() checker.</p>
    114 
    115 <h4 id="checker_263">checker-263</h4>
    116 
    117 <p><b>built:</b> March 22, 2012</br>
    118 <p><b>highlights:</b></p>
    119 
    120 <ul>
    121 <li>Fixes several serious bugs with inter-procedural analysis, including a case where retain/releases would be &quot;double-counted&quot;.</li>
    122 </ul>
    123 
    124 <h4 id="checker_262">checker-262</h4>
    125 
    126 <p><b>built: </b>March 15, 2012</br>
    127 <p><b>highlights:</b></p>
    128 
    129 <ul>
    130   <li>Enables experimental interprocedural analysis (within a file), which greatly amplifies the analyzer's ability to find issues.</li>
    131   <li>Many bug fixes to the malloc/free checker.</li>
    132   <li>Support for new Objective-C NSArray/NSDictionary/NSNumber literals syntax, and Objective-C container subscripting.</li>
    133 </ul>
    134 
    135 <p>NOTE: This build contains new interprocedural analysis that allows the analyzer to find more complicated bugs that span function boundaries.  It may have problems, performance issues, etc.  We'd like to <a href="/filing_bugs.html">hear about them</a>.
    136 
    137 <h4 id="checker_261">checker-261</h4>
    138 
    139 <p><b>built: </b>February 22, 2012<br>
    140 <p><b>highlights:</b></p>
    141 
    142 <ul>
    143   <li>Contains a new experimental malloc/free checker.</li>
    144   <li>Better support for projects using ARC.</li>
    145   <li>Warns about null pointers passed as arguments to C string functions.</li>
    146   <li>Warns about common anti-patterns in 'strncat' size argument, which can lead to buffer overflows.</li>
    147   <li>set-xcode-analyzer now supports self-contained Xcode.app (Xcode 4.3 and later).</li>
    148   <li>Contains a newer version of the analyzer than Xcode 4.3.</li>
    149   <li>Misc. bug fixes and performance work.</li>
    150 </ul>
    151 
    152 <h4 id="checker_260">checker-260</h4>
    153 
    154 <p><b>built: </b>January 25, 2012<br>
    155 <p><b>highlights:</b></p>
    156 
    157 <p>This is essentially the same as checker-259, but enables the following <i>experimental</i> checkers (please provide feedback):</p>
    158 
    159 <ul>
    160   <li>Warns about unsafe uses of CFArrayCreate, CFSetCreate, and CFDictionaryCreate</li>
    161   <li>Warns about unsafe uses of getpw, gets, which are sources of buffer overflows</li>
    162   <li>Warns about unsafe uses of mktemp and mktemps, which can lead to insecure temporary files</li>
    163   <li>Warns about unsafe uses of vfork, which is <a href="https://www.securecoding.cert.org/confluence/display/seccode/POS33-C.+Do+not+use+vfork()">insecure</a> to use</li>
    164   <li>Warns about not checking the return values of setuid, setgid, seteuid, setegid, setreuid, setregid (another security issue)</li>
    165 </ul>
    166 
    167 <h4 id="checker_259">checker-259</h4>
    168 
    169 <p><b>built: </b>January 25, 2012<br>
    170 <p><b>highlights:</b></p>
    171 
    172 <ul>
    173   <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li>
    174   <li>Significant performance optimizations to reduce memory usage of the analyzer.</li>
    175   <li>Tweaks to scan-build to have it work more easily with Xcode projects using Clang.</li>
    176   <li>Numerous bug fixes to better support code using ARC.</li>
    177 </ul>
    178 
    179 <h4 id="checker_258">checker-258</h4>
    180 
    181 <p><b>built: </b>October 13, 2011<br>
    182 <p><b>highlights:</b></p>
    183 
    184 <ul>
    185   <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li>
    186   <li>Adds a new security checker for looking at correct uses of the Mac OS KeyChain API.</li>
    187   <li>Supports ARC (please file bugs where you see issues)</li>
    188   <li>Major under-the-cover changes.  This should result in more precise results in some cases, but this is laying the groundwork for major improvements.  Please file bugs where you see regressions or issues.</li>
    189 </ul>
    190     
    191 <h4 id="checker_257">checker-257</h4>
    192 
    193 <p><b>built: </b>May 25, 2011<br>
    194 <p><b>highlights:</b></p>
    195 
    196 <ul>
    197   <li>The analyzer is now far more aggressive with checking conformance with Core Foundation conventions.  Any function that returns a CF type must now obey the Core Foundation naming conventions, or use the <a href="/annotations.html#attr_cf_returns_retained">cf_returns_retained</a> or <a href="/annotations.html#attr_cf_returns_not_retained">cf_returns_not_retained</a> annotations.</li>
    198   <li>Fixed a serious regression where the analyzer would not analyze Objective-C methods in class extensions.</li>
    199   <li>Misc. bug fixes to improve analyzer precision.
    200   </li>
    201 </ul>
    202 
    203 <h4 id="checker_256">checker-256</h4>
    204 
    205 <p><b>built: </b>April 13, 2011<br>
    206 <p><b>highlights:</b></p>
    207 
    208 <ul>
    209   <li>Lots of bug fixes and improvements to analyzer precision (fewer false positives, possibly more bugs found).
    210   <li>Introductory analysis support for C++ and Objective-C++.
    211 </ul>
    212 
    213 <p>This build contains basic support for C++ and Objective-C++ that is ready to be tried out
    214   by general users.  It is still in its infancy, but establishes a baseline for things to come.  The main hope is that it can find some
    215   issues and have a reasonable false positive rate.</p>
    216   
    217 <p><b>Please</b> <a href="/filing_bugs.html">file bugs</a> when you see issues of any kind so we can assess
    218   where development on C++ analysis support needs to be focused.</p>
    219   
    220 <p>To try out C++ analysis support, it should work out of the box using <tt>scan-build</tt>.  If you are using this checker build
    221   as a replacement to the analyzer bundled with Xcode, first use the <tt>set-xcode-analyzer</tt> script to <a href="/xcode.html">change Xcode to use
    222   your version of the analyzer</a>.  You will then need to modify one configuration file in Xcode to enable C++ analysis support.  This can
    223   be done with the following steps:</p>
    224   
    225 <ol>
    226   <li>Find the clang .xcspec file:
    227 <pre>$ cd /Developer/Library
    228 $ find . | grep xcspec | grep Clang
    229 ./Xcode/<b>&lt;SNIP&gt;</b>/Clang LLVM 1.0.xcplugin/Contents/Resources/Clang LLVM 1.0.xcspec
    230 </pre></li>
    231   <li>The exact location of the file may vary depending on your installation of Xcode.  Edit that file, and look for the string &quot;--analyze&quot;:
    232 <pre>
    233   SourceFileOption = "--analyze";
    234   FileTypes = (
    235       "sourcecode.c.c",
    236       "sourcecode.c.objc",
    237   );
    238   ...
    239 </pre>
    240   Change the &quot;FileTypes&quot; entry to:
    241 <pre>
    242   FileTypes = (
    243       "sourcecode.c.c",
    244       "sourcecode.c.objc",
    245       "sourcecode.cpp.cpp",
    246       "sourcecode.cpp.objcpp",
    247   );
    248 </pre></li>
    249 <li>Restart Xcode.</li>
    250 </ol>
    251 
    252 <h4 id="checker_255">checker-255</h4>
    253 
    254 <p><b>built: </b> February 11, 2011<br>
    255 <p><b>highlights:</b></p>
    256 
    257 <ul>
    258 <li>Mac OS X builds are now Intel <tt>i386</tt> and <tt>x86_64</tt> only (no <tt>ppc</tt> support)</li>
    259 <li>Turns on new <tt>-init</tt> method checker by default</li>
    260 <li>Reduces memory usage of analyzer by 10%</li>
    261 <li>Misc. fixes to reduce false positives on dead stores and idempotent operations.</li>
    262 </ul>
    263 
    264 <h4 id="checker_254">checker-254</h4>
    265 
    266 <p><b>built: </b> January 27, 2011<br>
    267 <p><b>highlights:</b></p>
    268 
    269 <ul>
    270 <li>Introduces new <tt>-init</tt> method checker to check if a super class's init method is properly called.</li>
    271 <li>Objective-C retain/release checker now reasons about calls to property accessor methods (setter/getter).</li>
    272 <li>Introduces new attribute <a href="annotations.html#attr_ns_consumes_self">ns_consumes_self</a> to educate the Objective-C retain/release checker about custom &quot;init-like&quot; methods that do not follow the standard Cocoa naming conventions.</li>
    273 <li>Introduces new attributes <a href="annotations.html#attr_ns_consumed">ns_consumed</a> and <a href="annotations.html#attr_cf_consumed">cf_consumed</a> to educate the Objective-C retain/release checker about methods/functions that decrement the reference count of a parameter.</li>
    274 </ul>
    275 
    276 </div>
    277 </div>
    278 </body>
    279 </html>
    280 
    281