1591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek          "http://www.w3.org/TR/html4/strict.dtd">
3591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<html>
4591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<head>
5591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  <title>Clang Static Analyzer</title>
6665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer  <link type="text/css" rel="stylesheet" href="content.css">
7665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer  <link type="text/css" rel="stylesheet" href="menu.css">
8f4aed5f8a30e39e169dcdef1c315f0f7a5699738Ted Kremenek  <script type="text/javascript" src="scripts/menu.js"></script>  
9665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer  <!-- Generated from: http://www.spiffycorners.com/index.php -->
10591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
11591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<style type="text/css">
12591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy{display:block}
13591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy *{
14591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  display:block;
15591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  height:1px;
16591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  overflow:hidden;
17591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  font-size:.01em;
18591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#EBF0FA}
19591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy1{
20591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-left:3px;
21591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-right:3px;
22591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-left:1px;
23591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-right:1px;
24591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #f6f8fc;
25591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #f6f8fc;
26591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#f0f3fb}
27591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy2{
28591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-left:1px;
29591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-right:1px;
30591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-right:1px;
31591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-left:1px;
32591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #fdfdfe;
33591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #fdfdfe;
34591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#eef2fa}
35591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy3{
36591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-left:1px;
37591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-right:1px;
38591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #eef2fa;
39591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #eef2fa;}
40591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy4{
41591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #f6f8fc;
42591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #f6f8fc}
43591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy5{
44591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #f0f3fb;
45591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #f0f3fb}
46591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffyfg{
47591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#EBF0FA}
48591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  
49591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffyfg h2 {
50591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin:0px;  padding:10px;
51591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek}
52591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
53591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #left { float:left; }
54591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #left h2 { margin:1px; padding-top:0px; }
55591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #right { float:left; margin-left:20px; margin-right:20px; padding:0px ;}
56591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #right h2 { padding:0px; margin:0px; }
57591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #wrappedcontent { padding:15px;}
58591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</style>
59665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer</head>
60665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<body>
61665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
62665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<div id="page">
63665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<!--#include virtual="menu.html.incl"-->
64665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<div id="content">
65665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
66665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
67665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<table style="margin-top:0px" width="100%" border="0" cellpadding="0px" cellspacing="0">
68665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<tr><td>
69665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
70665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<h1>Clang Static Analyzer</h1>  
71665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
72f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Rose<p>The Clang Static Analyzer is a source code analysis tool that finds bugs in
73f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan RoseC, C++, and Objective-C programs.</p>
74665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
75f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Rose<p>Currently it can be run either as a <a href="scan-build.html">standalone
76f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Rosetool</a> or <a href="xcode.html">within Xcode</a>. The standalone tool is
77f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Roseinvoked from the command line, and is intended to be run in tandem with a build
78665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramerof a codebase.</p>
79665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
80665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<p>The analyzer is 100% open source and is part of the <a
81665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramerhref="http://clang.llvm.org">Clang</a> project. Like the rest of Clang, the
82665a8dc95379a936a26e58620c16a175d0226053Benjamin Krameranalyzer is implemented as a C++ library that can be used by other tools and
83665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramerapplications.</p>
84665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer
85665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<h2>Download</h2>
86591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
878bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek<div style="padding:0px; font-size: 90%">
88591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy">
89591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy1"><b></b></b>
90591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy2"><b></b></b>
91591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy3"></b>
92591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy4"></b>
93591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy5"></b></b>
94591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <div class="spiffyfg">
95591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  <div style="padding:15px">
96250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek   <h3 style="margin:0px;padding:0px">Mac OS X</h3>
97591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   <ul>
98e673279e5c8868c653e0aafab3d2f799fff3faccTed Kremenek    <li>Latest build (Intel-only binary, 10.5+):<br>
99591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek     <!--#include virtual="latest_checker.html.incl"-->
100591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek    </li>
101665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer    <li><a href="/release_notes.html">Release notes</a></li>
102ef35cbc61415542b265b6b26715d720dbeeb681dTed Kremenek    <li>This build can be used both from the command line and from within Xcode</li>
103ef35cbc61415542b265b6b26715d720dbeeb681dTed Kremenek    <li><a href="/installation.html">Installation</a> and <a href="/scan-build.html">usage</a></li>
104591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   </ul>
105250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek  </div>
106250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek </div>
107250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy">
108250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy5"></b>
109250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy4"></b>
110250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy3"></b>
111250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy2"><b></b></b>
112250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy1"><b></b></b></b>
113250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek</div>
114250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek
115250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek<div style="padding:0; margin-top:10px; font-size: 90%">
116250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy">
117250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy1"><b></b></b>
118250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy2"><b></b></b>
119250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy3"></b>
120250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy4"></b>
121250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy5"></b></b>
122250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <div class="spiffyfg">
123250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek  <div style="padding:15px">
124250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek   <h3 style="margin:0px;padding:0px">Other Platforms</h3>    
125591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   <p>For other platforms, please follow the instructions for <a
126591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   href="/installation#OtherPlatforms">building the analyzer</a> from
127591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   source code.<p>
128591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  </div>
129591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek </div>
130591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy">
131591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy5"></b>
132591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy4"></b>
133591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy3"></b>
134591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy2"><b></b></b>
135591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy1"><b></b></b></b>
136591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</div>
137591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
138250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek
1398bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek</td><td style="padding-left:10px">
140665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<a href="images/analyzer_xcode.png"><img src="images/analyzer_xcode.png" width="450" alt="analyzer in xcode"></a>
141f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Rose<div style="text-align:center"><b>Viewing static analyzer results in Xcode</b></div>
142665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<a href="images/analyzer_html.png"><img src="images/analyzer_html.png" width="450" alt="analyzer in browser"></a>
143665a8dc95379a936a26e58620c16a175d0226053Benjamin Kramer<div style="text-align:center"><b>Viewing static analyzer results in a web browser</b></div>
1448bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek</td></tr></table>
1458bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek
146591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h2 id="StaticAnalysis">What is Static Analysis?</h2>
147591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
148f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Rose<p>The term "static analysis" is conflated, but here we use it to mean
149591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremeneka collection of algorithms and techniques used to analyze source code in order
150591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekto automatically find bugs. The idea is similar in spirit to compiler warnings
151591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek(which can be useful for finding coding errors) but to take that idea a step
152591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekfurther and find bugs that are traditionally found using run-time debugging
153591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenektechniques such as testing.</p>
154591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
155591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Static analysis bug-finding tools have evolved over the last several decades
156591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekfrom basic syntactic checkers to those that find deep bugs by reasoning about
157591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthe semantics of code. The goal of the Clang Static Analyzer is to provide a
158f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Roseindustrial-quality static analysis framework for analyzing C, C++, and 
159f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan RoseObjective-C programs that is freely available, extensible, and has a high quality of implementation.</p>
160591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
161591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3 id="Clang">Part of Clang and LLVM</h3>
162591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
163591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>As its name implies, the Clang Static Analyzer is built on top of <a
164591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekhref="http://clang.llvm.org">Clang</a> and <a href="http://llvm.org">LLVM</a>.
165591b907b3b29efa4047fc0aba042fdc81b45d5dcTed KremenekStrictly speaking, the analyzer is part of Clang, as Clang consists of a set of
166591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekreusable C++ libraries for building powerful source-level tools. The static
167591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekanalysis engine used by the Clang Static Analyzer is a Clang library, and has
168591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthe capability to be reused in different contexts and by different clients.</p>
169591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
170591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h2>Important Points to Consider</h2>
171591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
172591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>While we believe that the static analyzer is already very useful for finding
173591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekbugs, we ask you to bear in mind a few points when using it.</p>
174591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
175591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>Work-in-Progress</h3>
176591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
177f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Rose<p>The analyzer is a continuous work-in-progress. There are many planned
178f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Roseenhancements to improve both the precision and scope of its analysis algorithms
179f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Roseas well as the kinds of bugs it will find. While there are fundamental
180f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Roselimitations to what static analysis can do, we have a long way to go before
181f7fd7994a0c520d94e4dfd38848076e68da10a17Jordan Rosehitting that wall.</p>
182591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
183591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>Slower than Compilation</h3>
184591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
185591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Operationally, using static analysis to
186591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekautomatically find deep program bugs is about trading CPU time for the hardening
187591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekof code. Because of the deep analysis performed by state-of-the-art static
188591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekanalysis tools, static analysis can be much slower than compilation.</p>
189591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
190591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>While the Clang Static Analyzer is being designed to be as fast and
191591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremeneklight-weight as possible, please do not expect it to be as fast as compiling a
192591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekprogram (even with optimizations enabled). Some of the algorithms needed to find
193591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekbugs require in the worst case exponential time.</p>
194591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
195591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>The Clang Static Analyzer runs in a reasonable amount of time by both
196591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekbounding the amount of checking work it will do as well as using clever
197665a8dc95379a936a26e58620c16a175d0226053Benjamin Krameralgorithms to reduce the amount of work it must do to find bugs.</p>
198591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
199591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>False Positives</h3>
200591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
201591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Static analysis is not perfect. It can falsely flag bugs in a program where
202591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthe code behaves correctly. Because some code checks require more analysis
203591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekprecision than others, the frequency of false positives can vary widely between
204591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekdifferent checks. Our long-term goal is to have the analyzer have a low false
205591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekpositive rate for most code on all checks.</p>
206591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
207591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Please help us in this endeavor by <a href="filing_bugs.html">reporting false
208591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekpositives</a>. False positives cannot be addressed unless we know about
209591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthem.</p>
210591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
211591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>More Checks</h3>
212591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
2130c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xu<p>Static analysis is not magic; a static analyzer can only find bugs that it
2140c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xuhas been specifically engineered to find. If there are specific kinds of bugs
2150c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xuyou would like the Clang Static Analyzer to find, please feel free to
2160c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xufile <a href="filing_bugs.html">feature requests</a> or contribute your own
2170c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xupatches.</p>
218591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
219591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</div>
2208bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek</div>
221591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</body>
222591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</html>
223591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
224