<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Release notes for checker-XXX builds</title>
  <link type="text/css" rel="stylesheet" href="menu.css">
  <link type="text/css" rel="stylesheet" href="content.css">
  <script type="text/javascript" src="scripts/menu.js"></script>
</head>
<body>

<div id="page">
<!--#include virtual="menu.html.incl"-->
<div id="content">

<h1>Release notes for <tt>checker-XXX</tt> builds</h1>
<h4 id="checker_279">checker-279</h4>
<p><b>built:</b> November 14, 2016</br>
	<b>download:</b> <a href="downloads/checker-279.tar.bz2">checker-279.tar.bz2</a></p>
	<p><b>highlights:</b></p>
	<ul>
    <li>The analyzer includes new checks for:
      <ul>
        <li>Improper instance cleanup up in Objective-C -dealloc methods under manual retain/release.</li>
        <li>Inadvertent comparisons of NSNumber, CFNumberRef, and other number object pointers against scalar values.</li>
        <li>Unsafe usage of dispatch_once_t predicates stored in Objective-C instance variables and other heap-allocated memory.</li>
        <li>Issues resulting from self-assignment in C++.</li>
        <li>Incorrect usage of MPI APIs in C and C++. This check can be enabled by passing the following command to scan-build: <br />
  &nbsp;&nbsp;<tt>-enable-checker optin.mpi.MPI-Checker</tt></li>
    </ul>
    <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>
    <li>Additional miscellaneous improvements.</li>
    <li>Now requires macOS 10.8 or later.</li>
	</ul>

<h4 id="checker_278">checker-278</h4>
<p><b>built:</b> February 5, 2016</br>
	<b>download:</b> <a href="downloads/checker-278.tar.bz2">checker-278.tar.bz2</a></p>
	<p><b>highlights:</b></p>
	<ul>
    <li>Greatly improves analysis of C++ lambdas, including interprocedural analysis of lambda applications and reduced 'dead store'
        false positives for variables captured by reference.</li>
    <li>The analyzer now checks for misuse of 'vfork()'. This check is enabled by default.</li>
    <li>The analyzer can now detect excessively-padded structs. This check can be enabled by passing the following
        command to scan-build:<br />
  &nbsp;&nbsp;<tt>-enable-checker optin.performance.Padding</tt> </li>
    <li>The checks to detect misuse of <tt>_Nonnull</tt> are now enabled by default.</li>
    <li>The checks to detect misuse of Objective-C generics are now enabled by default.</li>
    <li>Many miscellaneous improvements.</li>
	</ul>

<h4 id="checker_277">checker-277</h4>
<p><b>built:</b> October 28, 2015</br>
	<b>download:</b> <a href="downloads/checker-277.tar.bz2">checker-277.tar.bz2</a></p>
	<p><b>highlights:</b></p>
	<ul>
    <li>Includes about 20 months of change to Clang itself.</li>
    <li>New checker for C++ leaks is turned on by default.</li>
    <li>Added various small checks and bug fixes.</li>
    <li>Added experimental checkers for Objective-C:</li>
    <ul>
        <li>New localizability checks:
        <ul>
            <li>Checker warning about uses of non-localized <tt>NSString</tt>s passed to UI methods expecting localized strings.</li>
            <li>Checker warning when the comment argument is missing from <tt>NSLocalizedString</tt> macros.</li>
            <li>These can be enabled by passing the following command to <tt>scan-build</tt>:
<br />
  &nbsp;&nbsp;<tt>-enable-checker alpha.osx.cocoa.NonLocalizedStringChecker,alpha.osx.cocoa.EmptyLocalizationContextChecker</tt>
</li>
        </ul>
        </li>
        <li>New checks for <tt>_Nonnull</tt> type qualifiers. These can be enabled with:
<br />
  &nbsp;&nbsp;<tt>-enable-checker nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull</tt></li>
        <li>New checks for misuse of Objective-C generics. These can be enabled with <tt>-enable-checker alpha.osx.cocoa.ObjCGenerics</tt>.</li>
    </ul>
    <li>Support for <tt>cf_returns_retained</tt> and <tt>cf_returns_not_retained</tt> attributes in out-parameters.</li>
    <li>The analyzer now creates one state for a range switch case instead of multiple, resulting in performance improvements.</li>
    <li>Now requires OS X 10.7 or later.
	</ul>

<h4 id="checker_276">checker-276</h4>
<p><b>built:</b> February 19, 2014</br>
	<b>download:</b> <a href="downloads/checker-276.tar.bz2">checker-276.tar.bz2</a></p>
	<p><b>highlights:</b></p>
	<ul>
    <li>Includes about 9 months of change to Clang itself (improved C++11/14 support, etc.)</li>
    <li>More precise modeling of Objective-C properties, which enables the analyzer to find more bugs.</li>
    <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>
    <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>
    <li>Many sundry fixes, improvements to C++ support, etc.</li>
	</ul>
  
<h4 id="checker_275">checker-275</h4>
<p><b>built:</b> May 23, 2013</br>
	<b>download:</b> <a href="downloads/checker-275.tar.bz2">checker-275.tar.bz2</a></p>
	<p><b>highlights:</b></p>
	<ul>
    <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>
    <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>
    <li>This build is built with LLVM's Link-Time Optimization (LTO), which should make it slightly faster.</li>
    <li>LTO also reduces the download size (about 19% smaller than checker-274).</li>
    <li>Many sundry fixes.</li>
	</ul>

<h4 id="checker_274">checker-274</h4>
<p><b>built:</b> April 23, 2013</br>
	<b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCdb3165f4406a4589b5878a22494c3b79">checker-274.tar.bz2</a></p>
	<p><b>highlights:</b></p>
	<ul>
    <li>Improved use-after-free and mismatched deallocator checking.</li>
    <li>Diagnostic polish.</li>
    <li>Fixes crashes found in checker-273.</li>
	</ul>

<h4 id="checker_273">checker-273</h4>
<p><b>built:</b> April 8, 2013</br>
	<b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCdefcc852a99546cfbaba2a960e07478e">checker-273.tar.bz2</a></p>
	<p><b>highlights:</b></p>
	<ul>
    <li>Additional checks for misuse of Foundation collection APIs.
    <li>New C++ checker for attempting to create a reference to null.</li>
    <li>New use-after-free checker for C++ 'delete'.</li>
    <li>New checker for simple cases of mismatched allocators and deallocators, e.g. "delete malloc(4);"</li>
    <li>Support for basic interprocedural analysis of C++ destructors.</li>
    <li>Additional heuristics for suppressing null pointer false positives.</li>
    <li>Misc. bug fixes and performance enhancements.</li>
	</ul>

<h4 id="checker_272">checker-272</h4>
<p><b>built:</b> March 1, 2013</p>
	<p><b>highlights:</b></p>
	<ul>
        <li>Better modeling of C++ constructors:
            <ul>
                <li>Interprocedural analysis support for constructors of types with trivial destructors</li>
                <li>Efficient model of trivial copy and move constructors</li>
            </ul>
        </li>
        <li>Better diagnostics for loops that execute 0 times</li>
        <li>Fixes a linking issue that prevented the checker from running on OS X v10.6 and earlier</li>
        <li>Fixes for misc. crashes and false positives</li>
	</ul>

<h4 id="checker_271">checker-271</h4>
<p><b>built:</b> February 8, 2013</p>
	<p><b>highlights:</b></p>
	<ul>
        <li>Faster analysis for <tt>scan-build xcodebuild</tt> when using Xcode 4.6 and higher:
            <ul>
                <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>
                <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>
            </ul></li>
        <li>Better diagnostics for implicitly-defined member functions in C++.</li>
        <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>.
        <li>Fixes for misc. parser crashes.</li>
        <li>Newer than the static analyzer version in Xcode 4.6</li>
	</ul>

<h4 id="checker_270">checker-270</h4>
<p><b>built:</b> January 4, 2013</p>
	<p><b>highlights:</b></p>
	<ul>
		<li>Major performance enhancements to speed up interprocedural analysis.</li>
		<li>Misc. bug fixes.</li>
	</ul>

<h4 id="checker_269">checker-269</h4>
<p><b>built:</b> September 25, 2012</p>
	<p><b>highlights:</b></p>
	<ul>
		<li>Significantly improves interprocedural analysis for Objective-C.</li>
		<li>Numerous bug fixes and heuristics to reduce false positives reported
			over checker-268.</li>
	</ul>

<h4 id="checker_268">checker-268</h4>
<p><b>built:</b> September 11, 2012</p>
	<p><b>highlights:</b></p>
	
<ul>
	<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>
	<li>Contains a static analyzer newer than Xcode 4.4.</li>
</ul>

<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
these, and any other problems you encounter. When you encounter an issue, please <a href="/filing_bugs.html">file a bug report</a>.</p>

<h4 id="checker_267">checker-267</h4>
<p><b>built:</b> June 1, 2012</p>
   <p><b>highlights:</b></p>

<p>Adds basic interprocedural analysis support for blocks.</p>

<h4 id="checker_266">checker-266</h4>
<p><b>built:</b> May 23, 2012</p>
   <p><b>highlights:</b></p>

<p>Contains numerous stability fixes over checker-266, especially when analyzing C++11 code.</p>

<h4 id="checker_265">checker-265</h4>
<p><b>built:</b> May 8, 2012</p>
   <p><b>highlights:</b></p>

<p>This release contains a fix for a major crasher introduced in checker-264, and various refinements to
improve the precision and reduce the false positive rate of the analyzer. It also enables a new unix.MallocSizeof check, which reports 
inconsistencies between the casted type of the return value of a 'malloc/calloc/realloc' call and the operand 
of sizeof expressions contained within its argument(s).</p>

<h4 id="checker_264">checker-264</h4>

<p><b>built:</b> April 26, 2012</p>
  <p><b>highlights:</b></p>

<p>This release contains misc. bug fixes and performance enhancements over checker-263, including
  a reduction of some kinds of false positives related to the malloc() checker.</p>

<h4 id="checker_263">checker-263</h4>

<p><b>built:</b> March 22, 2012</p>
<p><b>highlights:</b></p>

<ul>
<li>Fixes several serious bugs with inter-procedural analysis, including a case where retain/releases would be &quot;double-counted&quot;.</li>
</ul>

<h4 id="checker_262">checker-262</h4>

<p><b>built: </b>March 15, 2012</p>
<p><b>highlights:</b></p>

<ul>
  <li>Enables experimental interprocedural analysis (within a file), which greatly amplifies the analyzer's ability to find issues.</li>
  <li>Many bug fixes to the malloc/free checker.</li>
  <li>Support for new Objective-C NSArray/NSDictionary/NSNumber literals syntax, and Objective-C container subscripting.</li>
</ul>

<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>.

<h4 id="checker_261">checker-261</h4>

<p><b>built: </b>February 22, 2012<br>
<p><b>highlights:</b></p>

<ul>
  <li>Contains a new experimental malloc/free checker.</li>
  <li>Better support for projects using ARC.</li>
  <li>Warns about null pointers passed as arguments to C string functions.</li>
  <li>Warns about common anti-patterns in 'strncat' size argument, which can lead to buffer overflows.</li>
  <li>set-xcode-analyzer now supports self-contained Xcode.app (Xcode 4.3 and later).</li>
  <li>Contains a newer version of the analyzer than Xcode 4.3.</li>
  <li>Misc. bug fixes and performance work.</li>
</ul>

<h4 id="checker_260">checker-260</h4>

<p><b>built: </b>January 25, 2012<br>
<p><b>highlights:</b></p>

<p>This is essentially the same as checker-259, but enables the following <i>experimental</i> checkers (please provide feedback):</p>

<ul>
  <li>Warns about unsafe uses of CFArrayCreate, CFSetCreate, and CFDictionaryCreate</li>
  <li>Warns about unsafe uses of getpw, gets, which are sources of buffer overflows</li>
  <li>Warns about unsafe uses of mktemp and mktemps, which can lead to insecure temporary files</li>
  <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>
  <li>Warns about not checking the return values of setuid, setgid, seteuid, setegid, setreuid, setregid (another security issue)</li>
</ul>

<h4 id="checker_259">checker-259</h4>

<p><b>built: </b>January 25, 2012<br>
<p><b>highlights:</b></p>

<ul>
  <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li>
  <li>Significant performance optimizations to reduce memory usage of the analyzer.</li>
  <li>Tweaks to scan-build to have it work more easily with Xcode projects using Clang.</li>
  <li>Numerous bug fixes to better support code using ARC.</li>
</ul>

<h4 id="checker_258">checker-258</h4>

<p><b>built: </b>October 13, 2011<br>
<p><b>highlights:</b></p>

<ul>
  <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li>
  <li>Adds a new security checker for looking at correct uses of the Mac OS KeyChain API.</li>
  <li>Supports ARC (please file bugs where you see issues)</li>
  <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>
</ul>
    
<h4 id="checker_257">checker-257</h4>

<p><b>built: </b>May 25, 2011<br>
<p><b>highlights:</b></p>

<ul>
  <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>
  <li>Fixed a serious regression where the analyzer would not analyze Objective-C methods in class extensions.</li>
  <li>Misc. bug fixes to improve analyzer precision.
  </li>
</ul>

<h4 id="checker_256">checker-256</h4>

<p><b>built: </b>April 13, 2011<br>
<p><b>highlights:</b></p>

<ul>
  <li>Lots of bug fixes and improvements to analyzer precision (fewer false positives, possibly more bugs found).
  <li>Introductory analysis support for C++ and Objective-C++.
</ul>

<p>This build contains basic support for C++ and Objective-C++ that is ready to be tried out
  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
  issues and have a reasonable false positive rate.</p>
  
<p><b>Please</b> <a href="/filing_bugs.html">file bugs</a> when you see issues of any kind so we can assess
  where development on C++ analysis support needs to be focused.</p>
  
<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
  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
  your version of the analyzer</a>.  You will then need to modify one configuration file in Xcode to enable C++ analysis support.  This can
  be done with the following steps:</p>
  
<ol>
  <li>Find the clang .xcspec file:
<pre>$ cd /Developer/Library
$ find . | grep xcspec | grep Clang
./Xcode/<b>&lt;SNIP&gt;</b>/Clang LLVM 1.0.xcplugin/Contents/Resources/Clang LLVM 1.0.xcspec
</pre></li>
  <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;:
<pre>
  SourceFileOption = "--analyze";
  FileTypes = (
      "sourcecode.c.c",
      "sourcecode.c.objc",
  );
  ...
</pre>
  Change the &quot;FileTypes&quot; entry to:
<pre>
  FileTypes = (
      "sourcecode.c.c",
      "sourcecode.c.objc",
      "sourcecode.cpp.cpp",
      "sourcecode.cpp.objcpp",
  );
</pre></li>
<li>Restart Xcode.</li>
</ol>

<h4 id="checker_255">checker-255</h4>

<p><b>built: </b> February 11, 2011<br>
<p><b>highlights:</b></p>

<ul>
<li>Mac OS X builds are now Intel <tt>i386</tt> and <tt>x86_64</tt> only (no <tt>ppc</tt> support)</li>
<li>Turns on new <tt>-init</tt> method checker by default</li>
<li>Reduces memory usage of analyzer by 10%</li>
<li>Misc. fixes to reduce false positives on dead stores and idempotent operations.</li>
</ul>

<h4 id="checker_254">checker-254</h4>

<p><b>built: </b> January 27, 2011<br>
<p><b>highlights:</b></p>

<ul>
<li>Introduces new <tt>-init</tt> method checker to check if a super class's init method is properly called.</li>
<li>Objective-C retain/release checker now reasons about calls to property accessor methods (setter/getter).</li>
<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>
<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>
</ul>

</div>
</div>
</body>
</html>

