index.html revision ef35cbc61415542b265b6b26715d720dbeeb681d
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>
6b9576d9623411946cad8b62f5b3c0f1502b75244Ted Kremenek  <link type="text/css" rel="stylesheet" href="content.css" />
7b9576d9623411946cad8b62f5b3c0f1502b75244Ted Kremenek  <link type="text/css" rel="stylesheet" href="menu.css" />
8f4aed5f8a30e39e169dcdef1c315f0f7a5699738Ted Kremenek  <script type="text/javascript" src="scripts/menu.js"></script>  
9591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</head>
10591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<body>
11591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
128bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek<div id="page">
13591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<!--#include virtual="menu.html.incl"-->
14591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<div id="content">
158bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek
168bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek
178bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek<table style="margin-top:0px" width="100%" border="0" cellpadding="0px" cellspacing="0">
188bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek<tr><td>
19b24b0f8cc55d34a050ce1a4722a654d56e9fd947Ted Kremenek
20b24b0f8cc55d34a050ce1a4722a654d56e9fd947Ted Kremenek<h1>Clang Static Analyzer</h1>  
21b24b0f8cc55d34a050ce1a4722a654d56e9fd947Ted Kremenek
22250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek<p>The Clang Static Analyzer is source code analysis tool that find bugs in C
23250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenekand Objective-C programs.</p>
248bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek
25250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek<p>Currently it can be run either as a <a href="/scan-build.html">standalone
26250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenektool</a> or <a href="/xcode.html">within Xcode</a>. The standalone tool is
27250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenekinvoked from the command-line, and is intended to be run in tandem with a build
28250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenekof a codebase.</p>
29591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
303ff9da4df1855382453a5596babffcbd98215f1dTed Kremenek<p>The analyzer is 100% open source and is part of the <a
31250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenekhref="http://clang.llvm.org">Clang</a> project. Like the rest of Clang, the
32250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenekanalyzer is implemented as a C++ library that can be used by other tools and
33250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenekapplications.</p>
34250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek
35250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek<h2>Download</h2>
3651667ee4bf2c6df038bc8e1b7cc79a0d2d0d950fTed Kremenek
37591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<!-- Generated from: http://www.spiffycorners.com/index.php -->
38591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
39591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<style type="text/css">
40591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy{display:block}
41591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy *{
42591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  display:block;
43591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  height:1px;
44591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  overflow:hidden;
45591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  font-size:.01em;
46591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#EBF0FA}
47591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy1{
48591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-left:3px;
49591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-right:3px;
50591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-left:1px;
51591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-right:1px;
52591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #f6f8fc;
53591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #f6f8fc;
54591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#f0f3fb}
55591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy2{
56591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-left:1px;
57591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-right:1px;
58591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-right:1px;
59591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  padding-left:1px;
60591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #fdfdfe;
61591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #fdfdfe;
62591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#eef2fa}
63591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy3{
64591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-left:1px;
65591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin-right:1px;
66591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #eef2fa;
67591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #eef2fa;}
68591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy4{
69591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #f6f8fc;
70591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #f6f8fc}
71591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffy5{
72591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-left:1px solid #f0f3fb;
73591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  border-right:1px solid #f0f3fb}
74591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffyfg{
75591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  background:#EBF0FA}
76591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  
77591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek.spiffyfg h2 {
78591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  margin:0px;  padding:10px;
79591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek}
80591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</style>
81591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
82591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<style type="text/css">
83591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #left { float:left; }
84591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #left h2 { margin:1px; padding-top:0px; }
85591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #right { float:left; margin-left:20px; margin-right:20px; padding:0px ;}
86591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #right h2 { padding:0px; margin:0px; }
87591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  #wrappedcontent { padding:15px;}
88591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</style>
89591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
908bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek<div style="padding:0px; font-size: 90%">
91591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy">
92591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy1"><b></b></b>
93591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy2"><b></b></b>
94591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy3"></b>
95591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy4"></b>
96591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy5"></b></b>
97591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <div class="spiffyfg">
98591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  <div style="padding:15px">
99250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek   <h3 style="margin:0px;padding:0px">Mac OS X</h3>
100591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   <ul>
101250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek    <li>Latest build (Universal binary, 10.5+):<br>
102591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek     <!--#include virtual="latest_checker.html.incl"-->
103591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek    </li>
104ef35cbc61415542b265b6b26715d720dbeeb681dTed Kremenek    <li><a href="/release_notes.html">Release notes</li></li>
105ef35cbc61415542b265b6b26715d720dbeeb681dTed Kremenek    <li>This build can be used both from the command line and from within Xcode</li>
106ef35cbc61415542b265b6b26715d720dbeeb681dTed Kremenek    <li><a href="/installation.html">Installation</a> and <a href="/scan-build.html">usage</a></li>
107591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   </ul>
108250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek  </div>
109250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek </div>
110250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy">
111250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy5"></b>
112250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy4"></b>
113250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy3"></b>
114250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy2"><b></b></b>
115250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy1"><b></b></b></b>
116250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek</div>
117250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek
118250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek<div style="padding:0; margin-top:10px; font-size: 90%">
119250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy">
120250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy1"><b></b></b>
121250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy2"><b></b></b>
122250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy3"></b>
123250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy4"></b>
124250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <b class="spiffy5"></b></b>
125250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek <div class="spiffyfg">
126250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek  <div style="padding:15px">
127250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek   <h3 style="margin:0px;padding:0px">Other Platforms</h3>    
128591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   <p>For other platforms, please follow the instructions for <a
129591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   href="/installation#OtherPlatforms">building the analyzer</a> from
130591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek   source code.<p>
131591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek  </div>
132591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek </div>
133591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy">
134591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy5"></b>
135591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy4"></b>
136591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy3"></b>
137591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy2"><b></b></b>
138591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek <b class="spiffy1"><b></b></b></b>
139591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</div>
140591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
141250f67b8c3263ad95e3a722e438ca21a15ebfb75Ted Kremenek
1428bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek</td><td style="padding-left:10px">
143cf98c3f6b71d6a6ee754c100c2bb6991f28b8e09Ted Kremenek<a href="images/analyzer_xcode.png"><img src="images/analyzer_xcode.png" width="450x" border=0></a>
1448bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek<center><b>Viewing static analyzer results in Xcode 3.2</b></center>
145cf98c3f6b71d6a6ee754c100c2bb6991f28b8e09Ted Kremenek<a href="images/analyzer_html.png"><img src="images/analyzer_html.png" width="450px" border=0></a>
1468bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek<center><b>Viewing static analyzer results in a web browser</b></center>
1478bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek</td></tr></table>
1488bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek
149591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h2 id="StaticAnalysis">What is Static Analysis?</h2>
150591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
151591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>The term &quot;static analysis&quot; is conflated, but here we use it to mean
152591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremeneka collection of algorithms and techniques used to analyze source code in order
153591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekto automatically find bugs. The idea is similar in spirit to compiler warnings
154591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek(which can be useful for finding coding errors) but to take that idea a step
155591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekfurther and find bugs that are traditionally found using run-time debugging
156591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenektechniques such as testing.</p>
157591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
158591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Static analysis bug-finding tools have evolved over the last several decades
159591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekfrom basic syntactic checkers to those that find deep bugs by reasoning about
160591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthe semantics of code. The goal of the Clang Static Analyzer is to provide a
161591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekindustrial-quality static analysis framework for analyzing C and Objective-C
162591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekprograms that is freely available, extensible, and has a high quality of
163591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekimplementation.</p>
164591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
165591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3 id="Clang">Part of Clang and LLVM</h3>
166591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
167591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>As its name implies, the Clang Static Analyzer is built on top of <a
168591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekhref="http://clang.llvm.org">Clang</a> and <a href="http://llvm.org">LLVM</a>.
169591b907b3b29efa4047fc0aba042fdc81b45d5dcTed KremenekStrictly speaking, the analyzer is part of Clang, as Clang consists of a set of
170591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekreusable C++ libraries for building powerful source-level tools. The static
171591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekanalysis engine used by the Clang Static Analyzer is a Clang library, and has
172591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthe capability to be reused in different contexts and by different clients.</p>
173591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
174591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h2>Important Points to Consider</h2>
175591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
176591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>While we believe that the static analyzer is already very useful for finding
177591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekbugs, we ask you to bear in mind a few points when using it.</p>
178591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
179591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>Work-in-Progress</h3>
180591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
181591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>The analyzer is a continuous work-in-progress.
182591b907b3b29efa4047fc0aba042fdc81b45d5dcTed KremenekThere are many planned enhancements to improve both the precision and scope of
183591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekits analysis algorithms as well as the kinds bugs it will find. While there are
184591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekfundamental limitations to what static analysis can do, we have a long way to go
185591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekbefore hitting that wall.</p>
186591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
187591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>Slower than Compilation</h3>
188591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
189591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Operationally, using static analysis to
190591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekautomatically find deep program bugs is about trading CPU time for the hardening
191591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekof code. Because of the deep analysis performed by state-of-the-art static
192591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekanalysis tools, static analysis can be much slower than compilation.</p>
193591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
194591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>While the Clang Static Analyzer is being designed to be as fast and
195591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremeneklight-weight as possible, please do not expect it to be as fast as compiling a
196591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekprogram (even with optimizations enabled). Some of the algorithms needed to find
197591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekbugs require in the worst case exponential time.</p>
198591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
199591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>The Clang Static Analyzer runs in a reasonable amount of time by both
200591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekbounding the amount of checking work it will do as well as using clever
201591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekalgorithms to reduce the amount of work it must do to find bugs.</p></li>
202591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
203591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>False Positives</h3>
204591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
205591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Static analysis is not perfect. It can falsely flag bugs in a program where
206591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthe code behaves correctly. Because some code checks require more analysis
207591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekprecision than others, the frequency of false positives can vary widely between
208591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekdifferent checks. Our long-term goal is to have the analyzer have a low false
209591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekpositive rate for most code on all checks.</p>
210591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
211591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<p>Please help us in this endeavor by <a href="filing_bugs.html">reporting false
212591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekpositives</a>. False positives cannot be addressed unless we know about
213591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenekthem.</p>
214591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
215591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek<h3>More Checks</h3>
216591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
2170c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xu<p>Static analysis is not magic; a static analyzer can only find bugs that it
2180c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xuhas been specifically engineered to find. If there are specific kinds of bugs
2190c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xuyou would like the Clang Static Analyzer to find, please feel free to
2200c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xufile <a href="filing_bugs.html">feature requests</a> or contribute your own
2210c3a16d5da555c6a78ece6cb6e8eab46aa0ed010Zhongxing Xupatches.</p>
222591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
223591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</div>
2248bebc6e301ea2c15d876fadfbcf3f1ca7af0cfdcTed Kremenek</div>
225591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</body>
226591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek</html>
227591b907b3b29efa4047fc0aba042fdc81b45d5dcTed Kremenek
228