1*e5dd7070Spatrick<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 2*e5dd7070Spatrick "http://www.w3.org/TR/html4/strict.dtd"> 3*e5dd7070Spatrick<html> 4*e5dd7070Spatrick<head> 5*e5dd7070Spatrick <title>Release notes for checker-XXX builds</title> 6*e5dd7070Spatrick <link type="text/css" rel="stylesheet" href="menu.css"> 7*e5dd7070Spatrick <link type="text/css" rel="stylesheet" href="content.css"> 8*e5dd7070Spatrick <script type="text/javascript" src="scripts/menu.js"></script> 9*e5dd7070Spatrick</head> 10*e5dd7070Spatrick<body> 11*e5dd7070Spatrick 12*e5dd7070Spatrick<div id="page"> 13*e5dd7070Spatrick<!--#include virtual="menu.html.incl"--> 14*e5dd7070Spatrick<div id="content"> 15*e5dd7070Spatrick 16*e5dd7070Spatrick<h1>Release notes for <tt>checker-XXX</tt> builds</h1> 17*e5dd7070Spatrick<h4 id="checker_279">checker-279</h4> 18*e5dd7070Spatrick<p><b>built:</b> November 14, 2016</br> 19*e5dd7070Spatrick <b>download:</b> <a href="downloads/checker-279.tar.bz2">checker-279.tar.bz2</a></p> 20*e5dd7070Spatrick <p><b>highlights:</b></p> 21*e5dd7070Spatrick <ul> 22*e5dd7070Spatrick <li>The analyzer includes new checks for: 23*e5dd7070Spatrick <ul> 24*e5dd7070Spatrick <li>Improper instance cleanup up in Objective-C -dealloc methods under manual retain/release.</li> 25*e5dd7070Spatrick <li>Inadvertent comparisons of NSNumber, CFNumberRef, and other number object pointers against scalar values.</li> 26*e5dd7070Spatrick <li>Unsafe usage of dispatch_once_t predicates stored in Objective-C instance variables and other heap-allocated memory.</li> 27*e5dd7070Spatrick <li>Issues resulting from self-assignment in C++.</li> 28*e5dd7070Spatrick <li>Incorrect usage of MPI APIs in C and C++. This check can be enabled by passing the following command to scan-build: <br /> 29*e5dd7070Spatrick <tt>-enable-checker optin.mpi.MPI-Checker</tt></li> 30*e5dd7070Spatrick </ul> 31*e5dd7070Spatrick <li>The scan-build tool now supports a <tt>--force-analyze-debug-code flag</tt> that forces projects to analyze in debug mode. This flag leaves in assertions and so typically results in fewer false positives.</li> 32*e5dd7070Spatrick <li>Additional miscellaneous improvements.</li> 33*e5dd7070Spatrick <li>Now requires macOS 10.8 or later.</li> 34*e5dd7070Spatrick </ul> 35*e5dd7070Spatrick 36*e5dd7070Spatrick<h4 id="checker_278">checker-278</h4> 37*e5dd7070Spatrick<p><b>built:</b> February 5, 2016</br> 38*e5dd7070Spatrick <b>download:</b> <a href="downloads/checker-278.tar.bz2">checker-278.tar.bz2</a></p> 39*e5dd7070Spatrick <p><b>highlights:</b></p> 40*e5dd7070Spatrick <ul> 41*e5dd7070Spatrick <li>Greatly improves analysis of C++ lambdas, including interprocedural analysis of lambda applications and reduced 'dead store' 42*e5dd7070Spatrick false positives for variables captured by reference.</li> 43*e5dd7070Spatrick <li>The analyzer now checks for misuse of 'vfork()'. This check is enabled by default.</li> 44*e5dd7070Spatrick <li>The analyzer can now detect excessively-padded structs. This check can be enabled by passing the following 45*e5dd7070Spatrick command to scan-build:<br /> 46*e5dd7070Spatrick <tt>-enable-checker optin.performance.Padding</tt> </li> 47*e5dd7070Spatrick <li>The checks to detect misuse of <tt>_Nonnull</tt> are now enabled by default.</li> 48*e5dd7070Spatrick <li>The checks to detect misuse of Objective-C generics are now enabled by default.</li> 49*e5dd7070Spatrick <li>Many miscellaneous improvements.</li> 50*e5dd7070Spatrick </ul> 51*e5dd7070Spatrick 52*e5dd7070Spatrick<h4 id="checker_277">checker-277</h4> 53*e5dd7070Spatrick<p><b>built:</b> October 28, 2015</br> 54*e5dd7070Spatrick <b>download:</b> <a href="downloads/checker-277.tar.bz2">checker-277.tar.bz2</a></p> 55*e5dd7070Spatrick <p><b>highlights:</b></p> 56*e5dd7070Spatrick <ul> 57*e5dd7070Spatrick <li>Includes about 20 months of change to Clang itself.</li> 58*e5dd7070Spatrick <li>New checker for C++ leaks is turned on by default.</li> 59*e5dd7070Spatrick <li>Added various small checks and bug fixes.</li> 60*e5dd7070Spatrick <li>Added experimental checkers for Objective-C:</li> 61*e5dd7070Spatrick <ul> 62*e5dd7070Spatrick <li>New localizability checks: 63*e5dd7070Spatrick <ul> 64*e5dd7070Spatrick <li>Checker warning about uses of non-localized <tt>NSString</tt>s passed to UI methods expecting localized strings.</li> 65*e5dd7070Spatrick <li>Checker warning when the comment argument is missing from <tt>NSLocalizedString</tt> macros.</li> 66*e5dd7070Spatrick <li>These can be enabled by passing the following command to <tt>scan-build</tt>: 67*e5dd7070Spatrick<br /> 68*e5dd7070Spatrick <tt>-enable-checker alpha.osx.cocoa.NonLocalizedStringChecker,alpha.osx.cocoa.EmptyLocalizationContextChecker</tt> 69*e5dd7070Spatrick</li> 70*e5dd7070Spatrick </ul> 71*e5dd7070Spatrick </li> 72*e5dd7070Spatrick <li>New checks for <tt>_Nonnull</tt> type qualifiers. These can be enabled with: 73*e5dd7070Spatrick<br /> 74*e5dd7070Spatrick <tt>-enable-checker nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull</tt></li> 75*e5dd7070Spatrick <li>New checks for misuse of Objective-C generics. These can be enabled with <tt>-enable-checker alpha.osx.cocoa.ObjCGenerics</tt>.</li> 76*e5dd7070Spatrick </ul> 77*e5dd7070Spatrick <li>Support for <tt>cf_returns_retained</tt> and <tt>cf_returns_not_retained</tt> attributes in out-parameters.</li> 78*e5dd7070Spatrick <li>The analyzer now creates one state for a range switch case instead of multiple, resulting in performance improvements.</li> 79*e5dd7070Spatrick <li>Now requires OS X 10.7 or later. 80*e5dd7070Spatrick </ul> 81*e5dd7070Spatrick 82*e5dd7070Spatrick<h4 id="checker_276">checker-276</h4> 83*e5dd7070Spatrick<p><b>built:</b> February 19, 2014</br> 84*e5dd7070Spatrick <b>download:</b> <a href="downloads/checker-276.tar.bz2">checker-276.tar.bz2</a></p> 85*e5dd7070Spatrick <p><b>highlights:</b></p> 86*e5dd7070Spatrick <ul> 87*e5dd7070Spatrick <li>Includes about 9 months of change to Clang itself (improved C++11/14 support, etc.)</li> 88*e5dd7070Spatrick <li>More precise modeling of Objective-C properties, which enables the analyzer to find more bugs.</li> 89*e5dd7070Spatrick <li>Includes a new "missing call to <tt>super</tt>" warning, which looks for common pattern in iOS/OSX APIs that require chaining a call to a super class's implementation of a method.</li> 90*e5dd7070Spatrick <li>Accepts <tt>-arch arm64</tt> (which may be passed by Xcode 5.0), but for the time being analyzes code in such cases as <tt>-arch armv7s</tt>.</li> 91*e5dd7070Spatrick <li>Many sundry fixes, improvements to C++ support, etc.</li> 92*e5dd7070Spatrick </ul> 93*e5dd7070Spatrick 94*e5dd7070Spatrick<h4 id="checker_275">checker-275</h4> 95*e5dd7070Spatrick<p><b>built:</b> May 23, 2013</br> 96*e5dd7070Spatrick <b>download:</b> <a href="downloads/checker-275.tar.bz2">checker-275.tar.bz2</a></p> 97*e5dd7070Spatrick <p><b>highlights:</b></p> 98*e5dd7070Spatrick <ul> 99*e5dd7070Spatrick <li>Xcode: Includes a new arrow layout algorithm for issue presentation within Xcode. The goal is for interprocedural bug reports to look cleaner and less busy (and easier to read). Feedback appreciated.</li> 100*e5dd7070Spatrick <li>Xcode: Bugs that occur within header code (e.g., C++) are now reported within the callers in the main source file. For example, if you misuse a C++ function declared in a header the primary diagnostic will be in the caller (in the main source file). The full expanded path, however, will show the bug in the header code as well. These kind of cross-file issues are currently only support by Xcode, not the HTML output.</li> 101*e5dd7070Spatrick <li>This build is built with LLVM's Link-Time Optimization (LTO), which should make it slightly faster.</li> 102*e5dd7070Spatrick <li>LTO also reduces the download size (about 19% smaller than checker-274).</li> 103*e5dd7070Spatrick <li>Many sundry fixes.</li> 104*e5dd7070Spatrick </ul> 105*e5dd7070Spatrick 106*e5dd7070Spatrick<h4 id="checker_274">checker-274</h4> 107*e5dd7070Spatrick<p><b>built:</b> April 23, 2013</br> 108*e5dd7070Spatrick <b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCdb3165f4406a4589b5878a22494c3b79">checker-274.tar.bz2</a></p> 109*e5dd7070Spatrick <p><b>highlights:</b></p> 110*e5dd7070Spatrick <ul> 111*e5dd7070Spatrick <li>Improved use-after-free and mismatched deallocator checking.</li> 112*e5dd7070Spatrick <li>Diagnostic polish.</li> 113*e5dd7070Spatrick <li>Fixes crashes found in checker-273.</li> 114*e5dd7070Spatrick </ul> 115*e5dd7070Spatrick 116*e5dd7070Spatrick<h4 id="checker_273">checker-273</h4> 117*e5dd7070Spatrick<p><b>built:</b> April 8, 2013</br> 118*e5dd7070Spatrick <b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCdefcc852a99546cfbaba2a960e07478e">checker-273.tar.bz2</a></p> 119*e5dd7070Spatrick <p><b>highlights:</b></p> 120*e5dd7070Spatrick <ul> 121*e5dd7070Spatrick <li>Additional checks for misuse of Foundation collection APIs. 122*e5dd7070Spatrick <li>New C++ checker for attempting to create a reference to null.</li> 123*e5dd7070Spatrick <li>New use-after-free checker for C++ 'delete'.</li> 124*e5dd7070Spatrick <li>New checker for simple cases of mismatched allocators and deallocators, e.g. "delete malloc(4);"</li> 125*e5dd7070Spatrick <li>Support for basic interprocedural analysis of C++ destructors.</li> 126*e5dd7070Spatrick <li>Additional heuristics for suppressing null pointer false positives.</li> 127*e5dd7070Spatrick <li>Misc. bug fixes and performance enhancements.</li> 128*e5dd7070Spatrick </ul> 129*e5dd7070Spatrick 130*e5dd7070Spatrick<h4 id="checker_272">checker-272</h4> 131*e5dd7070Spatrick<p><b>built:</b> March 1, 2013</p> 132*e5dd7070Spatrick <p><b>highlights:</b></p> 133*e5dd7070Spatrick <ul> 134*e5dd7070Spatrick <li>Better modeling of C++ constructors: 135*e5dd7070Spatrick <ul> 136*e5dd7070Spatrick <li>Interprocedural analysis support for constructors of types with trivial destructors</li> 137*e5dd7070Spatrick <li>Efficient model of trivial copy and move constructors</li> 138*e5dd7070Spatrick </ul> 139*e5dd7070Spatrick </li> 140*e5dd7070Spatrick <li>Better diagnostics for loops that execute 0 times</li> 141*e5dd7070Spatrick <li>Fixes a linking issue that prevented the checker from running on OS X v10.6 and earlier</li> 142*e5dd7070Spatrick <li>Fixes for misc. crashes and false positives</li> 143*e5dd7070Spatrick </ul> 144*e5dd7070Spatrick 145*e5dd7070Spatrick<h4 id="checker_271">checker-271</h4> 146*e5dd7070Spatrick<p><b>built:</b> February 8, 2013</p> 147*e5dd7070Spatrick <p><b>highlights:</b></p> 148*e5dd7070Spatrick <ul> 149*e5dd7070Spatrick <li>Faster analysis for <tt>scan-build xcodebuild</tt> when using Xcode 4.6 and higher: 150*e5dd7070Spatrick <ul> 151*e5dd7070Spatrick <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> 152*e5dd7070Spatrick <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> 153*e5dd7070Spatrick </ul></li> 154*e5dd7070Spatrick <li>Better diagnostics for implicitly-defined member functions in C++.</li> 155*e5dd7070Spatrick <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>. 156*e5dd7070Spatrick <li>Fixes for misc. parser crashes.</li> 157*e5dd7070Spatrick <li>Newer than the static analyzer version in Xcode 4.6</li> 158*e5dd7070Spatrick </ul> 159*e5dd7070Spatrick 160*e5dd7070Spatrick<h4 id="checker_270">checker-270</h4> 161*e5dd7070Spatrick<p><b>built:</b> January 4, 2013</p> 162*e5dd7070Spatrick <p><b>highlights:</b></p> 163*e5dd7070Spatrick <ul> 164*e5dd7070Spatrick <li>Major performance enhancements to speed up interprocedural analysis.</li> 165*e5dd7070Spatrick <li>Misc. bug fixes.</li> 166*e5dd7070Spatrick </ul> 167*e5dd7070Spatrick 168*e5dd7070Spatrick<h4 id="checker_269">checker-269</h4> 169*e5dd7070Spatrick<p><b>built:</b> September 25, 2012</p> 170*e5dd7070Spatrick <p><b>highlights:</b></p> 171*e5dd7070Spatrick <ul> 172*e5dd7070Spatrick <li>Significantly improves interprocedural analysis for Objective-C.</li> 173*e5dd7070Spatrick <li>Numerous bug fixes and heuristics to reduce false positives reported 174*e5dd7070Spatrick over checker-268.</li> 175*e5dd7070Spatrick </ul> 176*e5dd7070Spatrick 177*e5dd7070Spatrick<h4 id="checker_268">checker-268</h4> 178*e5dd7070Spatrick<p><b>built:</b> September 11, 2012</p> 179*e5dd7070Spatrick <p><b>highlights:</b></p> 180*e5dd7070Spatrick 181*e5dd7070Spatrick<ul> 182*e5dd7070Spatrick <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> 183*e5dd7070Spatrick <li>Contains a static analyzer newer than Xcode 4.4.</li> 184*e5dd7070Spatrick</ul> 185*e5dd7070Spatrick 186*e5dd7070Spatrick<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 187*e5dd7070Spatrickthese, and any other problems you encounter. When you encounter an issue, please <a href="/filing_bugs.html">file a bug report</a>.</p> 188*e5dd7070Spatrick 189*e5dd7070Spatrick<h4 id="checker_267">checker-267</h4> 190*e5dd7070Spatrick<p><b>built:</b> June 1, 2012</p> 191*e5dd7070Spatrick <p><b>highlights:</b></p> 192*e5dd7070Spatrick 193*e5dd7070Spatrick<p>Adds basic interprocedural analysis support for blocks.</p> 194*e5dd7070Spatrick 195*e5dd7070Spatrick<h4 id="checker_266">checker-266</h4> 196*e5dd7070Spatrick<p><b>built:</b> May 23, 2012</p> 197*e5dd7070Spatrick <p><b>highlights:</b></p> 198*e5dd7070Spatrick 199*e5dd7070Spatrick<p>Contains numerous stability fixes over checker-266, especially when analyzing C++11 code.</p> 200*e5dd7070Spatrick 201*e5dd7070Spatrick<h4 id="checker_265">checker-265</h4> 202*e5dd7070Spatrick<p><b>built:</b> May 8, 2012</p> 203*e5dd7070Spatrick <p><b>highlights:</b></p> 204*e5dd7070Spatrick 205*e5dd7070Spatrick<p>This release contains a fix for a major crasher introduced in checker-264, and various refinements to 206*e5dd7070Spatrickimprove the precision and reduce the false positive rate of the analyzer. It also enables a new unix.MallocSizeof check, which reports 207*e5dd7070Spatrickinconsistencies between the casted type of the return value of a 'malloc/calloc/realloc' call and the operand 208*e5dd7070Spatrickof sizeof expressions contained within its argument(s).</p> 209*e5dd7070Spatrick 210*e5dd7070Spatrick<h4 id="checker_264">checker-264</h4> 211*e5dd7070Spatrick 212*e5dd7070Spatrick<p><b>built:</b> April 26, 2012</p> 213*e5dd7070Spatrick <p><b>highlights:</b></p> 214*e5dd7070Spatrick 215*e5dd7070Spatrick<p>This release contains misc. bug fixes and performance enhancements over checker-263, including 216*e5dd7070Spatrick a reduction of some kinds of false positives related to the malloc() checker.</p> 217*e5dd7070Spatrick 218*e5dd7070Spatrick<h4 id="checker_263">checker-263</h4> 219*e5dd7070Spatrick 220*e5dd7070Spatrick<p><b>built:</b> March 22, 2012</p> 221*e5dd7070Spatrick<p><b>highlights:</b></p> 222*e5dd7070Spatrick 223*e5dd7070Spatrick<ul> 224*e5dd7070Spatrick<li>Fixes several serious bugs with inter-procedural analysis, including a case where retain/releases would be "double-counted".</li> 225*e5dd7070Spatrick</ul> 226*e5dd7070Spatrick 227*e5dd7070Spatrick<h4 id="checker_262">checker-262</h4> 228*e5dd7070Spatrick 229*e5dd7070Spatrick<p><b>built: </b>March 15, 2012</p> 230*e5dd7070Spatrick<p><b>highlights:</b></p> 231*e5dd7070Spatrick 232*e5dd7070Spatrick<ul> 233*e5dd7070Spatrick <li>Enables experimental interprocedural analysis (within a file), which greatly amplifies the analyzer's ability to find issues.</li> 234*e5dd7070Spatrick <li>Many bug fixes to the malloc/free checker.</li> 235*e5dd7070Spatrick <li>Support for new Objective-C NSArray/NSDictionary/NSNumber literals syntax, and Objective-C container subscripting.</li> 236*e5dd7070Spatrick</ul> 237*e5dd7070Spatrick 238*e5dd7070Spatrick<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>. 239*e5dd7070Spatrick 240*e5dd7070Spatrick<h4 id="checker_261">checker-261</h4> 241*e5dd7070Spatrick 242*e5dd7070Spatrick<p><b>built: </b>February 22, 2012<br> 243*e5dd7070Spatrick<p><b>highlights:</b></p> 244*e5dd7070Spatrick 245*e5dd7070Spatrick<ul> 246*e5dd7070Spatrick <li>Contains a new experimental malloc/free checker.</li> 247*e5dd7070Spatrick <li>Better support for projects using ARC.</li> 248*e5dd7070Spatrick <li>Warns about null pointers passed as arguments to C string functions.</li> 249*e5dd7070Spatrick <li>Warns about common anti-patterns in 'strncat' size argument, which can lead to buffer overflows.</li> 250*e5dd7070Spatrick <li>set-xcode-analyzer now supports self-contained Xcode.app (Xcode 4.3 and later).</li> 251*e5dd7070Spatrick <li>Contains a newer version of the analyzer than Xcode 4.3.</li> 252*e5dd7070Spatrick <li>Misc. bug fixes and performance work.</li> 253*e5dd7070Spatrick</ul> 254*e5dd7070Spatrick 255*e5dd7070Spatrick<h4 id="checker_260">checker-260</h4> 256*e5dd7070Spatrick 257*e5dd7070Spatrick<p><b>built: </b>January 25, 2012<br> 258*e5dd7070Spatrick<p><b>highlights:</b></p> 259*e5dd7070Spatrick 260*e5dd7070Spatrick<p>This is essentially the same as checker-259, but enables the following <i>experimental</i> checkers (please provide feedback):</p> 261*e5dd7070Spatrick 262*e5dd7070Spatrick<ul> 263*e5dd7070Spatrick <li>Warns about unsafe uses of CFArrayCreate, CFSetCreate, and CFDictionaryCreate</li> 264*e5dd7070Spatrick <li>Warns about unsafe uses of getpw, gets, which are sources of buffer overflows</li> 265*e5dd7070Spatrick <li>Warns about unsafe uses of mktemp and mktemps, which can lead to insecure temporary files</li> 266*e5dd7070Spatrick <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> 267*e5dd7070Spatrick <li>Warns about not checking the return values of setuid, setgid, seteuid, setegid, setreuid, setregid (another security issue)</li> 268*e5dd7070Spatrick</ul> 269*e5dd7070Spatrick 270*e5dd7070Spatrick<h4 id="checker_259">checker-259</h4> 271*e5dd7070Spatrick 272*e5dd7070Spatrick<p><b>built: </b>January 25, 2012<br> 273*e5dd7070Spatrick<p><b>highlights:</b></p> 274*e5dd7070Spatrick 275*e5dd7070Spatrick<ul> 276*e5dd7070Spatrick <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li> 277*e5dd7070Spatrick <li>Significant performance optimizations to reduce memory usage of the analyzer.</li> 278*e5dd7070Spatrick <li>Tweaks to scan-build to have it work more easily with Xcode projects using Clang.</li> 279*e5dd7070Spatrick <li>Numerous bug fixes to better support code using ARC.</li> 280*e5dd7070Spatrick</ul> 281*e5dd7070Spatrick 282*e5dd7070Spatrick<h4 id="checker_258">checker-258</h4> 283*e5dd7070Spatrick 284*e5dd7070Spatrick<p><b>built: </b>October 13, 2011<br> 285*e5dd7070Spatrick<p><b>highlights:</b></p> 286*e5dd7070Spatrick 287*e5dd7070Spatrick<ul> 288*e5dd7070Spatrick <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li> 289*e5dd7070Spatrick <li>Adds a new security checker for looking at correct uses of the Mac OS KeyChain API.</li> 290*e5dd7070Spatrick <li>Supports ARC (please file bugs where you see issues)</li> 291*e5dd7070Spatrick <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> 292*e5dd7070Spatrick</ul> 293*e5dd7070Spatrick 294*e5dd7070Spatrick<h4 id="checker_257">checker-257</h4> 295*e5dd7070Spatrick 296*e5dd7070Spatrick<p><b>built: </b>May 25, 2011<br> 297*e5dd7070Spatrick<p><b>highlights:</b></p> 298*e5dd7070Spatrick 299*e5dd7070Spatrick<ul> 300*e5dd7070Spatrick <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> 301*e5dd7070Spatrick <li>Fixed a serious regression where the analyzer would not analyze Objective-C methods in class extensions.</li> 302*e5dd7070Spatrick <li>Misc. bug fixes to improve analyzer precision. 303*e5dd7070Spatrick </li> 304*e5dd7070Spatrick</ul> 305*e5dd7070Spatrick 306*e5dd7070Spatrick<h4 id="checker_256">checker-256</h4> 307*e5dd7070Spatrick 308*e5dd7070Spatrick<p><b>built: </b>April 13, 2011<br> 309*e5dd7070Spatrick<p><b>highlights:</b></p> 310*e5dd7070Spatrick 311*e5dd7070Spatrick<ul> 312*e5dd7070Spatrick <li>Lots of bug fixes and improvements to analyzer precision (fewer false positives, possibly more bugs found). 313*e5dd7070Spatrick <li>Introductory analysis support for C++ and Objective-C++. 314*e5dd7070Spatrick</ul> 315*e5dd7070Spatrick 316*e5dd7070Spatrick<p>This build contains basic support for C++ and Objective-C++ that is ready to be tried out 317*e5dd7070Spatrick 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 318*e5dd7070Spatrick issues and have a reasonable false positive rate.</p> 319*e5dd7070Spatrick 320*e5dd7070Spatrick<p><b>Please</b> <a href="/filing_bugs.html">file bugs</a> when you see issues of any kind so we can assess 321*e5dd7070Spatrick where development on C++ analysis support needs to be focused.</p> 322*e5dd7070Spatrick 323*e5dd7070Spatrick<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 324*e5dd7070Spatrick 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 325*e5dd7070Spatrick your version of the analyzer</a>. You will then need to modify one configuration file in Xcode to enable C++ analysis support. This can 326*e5dd7070Spatrick be done with the following steps:</p> 327*e5dd7070Spatrick 328*e5dd7070Spatrick<ol> 329*e5dd7070Spatrick <li>Find the clang .xcspec file: 330*e5dd7070Spatrick<pre>$ cd /Developer/Library 331*e5dd7070Spatrick$ find . | grep xcspec | grep Clang 332*e5dd7070Spatrick./Xcode/<b><SNIP></b>/Clang LLVM 1.0.xcplugin/Contents/Resources/Clang LLVM 1.0.xcspec 333*e5dd7070Spatrick</pre></li> 334*e5dd7070Spatrick <li>The exact location of the file may vary depending on your installation of Xcode. Edit that file, and look for the string "--analyze": 335*e5dd7070Spatrick<pre> 336*e5dd7070Spatrick SourceFileOption = "--analyze"; 337*e5dd7070Spatrick FileTypes = ( 338*e5dd7070Spatrick "sourcecode.c.c", 339*e5dd7070Spatrick "sourcecode.c.objc", 340*e5dd7070Spatrick ); 341*e5dd7070Spatrick ... 342*e5dd7070Spatrick</pre> 343*e5dd7070Spatrick Change the "FileTypes" entry to: 344*e5dd7070Spatrick<pre> 345*e5dd7070Spatrick FileTypes = ( 346*e5dd7070Spatrick "sourcecode.c.c", 347*e5dd7070Spatrick "sourcecode.c.objc", 348*e5dd7070Spatrick "sourcecode.cpp.cpp", 349*e5dd7070Spatrick "sourcecode.cpp.objcpp", 350*e5dd7070Spatrick ); 351*e5dd7070Spatrick</pre></li> 352*e5dd7070Spatrick<li>Restart Xcode.</li> 353*e5dd7070Spatrick</ol> 354*e5dd7070Spatrick 355*e5dd7070Spatrick<h4 id="checker_255">checker-255</h4> 356*e5dd7070Spatrick 357*e5dd7070Spatrick<p><b>built: </b> February 11, 2011<br> 358*e5dd7070Spatrick<p><b>highlights:</b></p> 359*e5dd7070Spatrick 360*e5dd7070Spatrick<ul> 361*e5dd7070Spatrick<li>Mac OS X builds are now Intel <tt>i386</tt> and <tt>x86_64</tt> only (no <tt>ppc</tt> support)</li> 362*e5dd7070Spatrick<li>Turns on new <tt>-init</tt> method checker by default</li> 363*e5dd7070Spatrick<li>Reduces memory usage of analyzer by 10%</li> 364*e5dd7070Spatrick<li>Misc. fixes to reduce false positives on dead stores and idempotent operations.</li> 365*e5dd7070Spatrick</ul> 366*e5dd7070Spatrick 367*e5dd7070Spatrick<h4 id="checker_254">checker-254</h4> 368*e5dd7070Spatrick 369*e5dd7070Spatrick<p><b>built: </b> January 27, 2011<br> 370*e5dd7070Spatrick<p><b>highlights:</b></p> 371*e5dd7070Spatrick 372*e5dd7070Spatrick<ul> 373*e5dd7070Spatrick<li>Introduces new <tt>-init</tt> method checker to check if a super class's init method is properly called.</li> 374*e5dd7070Spatrick<li>Objective-C retain/release checker now reasons about calls to property accessor methods (setter/getter).</li> 375*e5dd7070Spatrick<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 "init-like" methods that do not follow the standard Cocoa naming conventions.</li> 376*e5dd7070Spatrick<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> 377*e5dd7070Spatrick</ul> 378*e5dd7070Spatrick 379*e5dd7070Spatrick</div> 380*e5dd7070Spatrick</div> 381*e5dd7070Spatrick</body> 382*e5dd7070Spatrick</html> 383