summaryrefslogtreecommitdiff
path: root/clang/www/analyzer/release_notes.html
blob: 42de9ddae27fba8870dc89d4787e279b5944cc46 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<!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_263">checker-263</h4>

<p><b>built:</b> March 22, 2012</br>
   <b>download:</b> <a href="http://bit.ly/GUmtVB">checker-263.tar.bz2</a></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</br>
   <b>download:</b> <a href="http://bit.ly/xETQF0">checker-262.tar.bz2</a></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>
<b>download:</b> <a href="http://bit.ly/yN1Awv">checker-261.tar.bz2</a></p>
<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>
<b>download:</b> <a href="http://bit.ly/wpAqVP">checker-260.tar.bz2</a></p>
<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>
<b>download:</b> <a href="http://bit.ly/zOWf1P">checker-259.tar.bz2</a></p>
<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>