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

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


<table style="margin-top:0px" width="100%" border="0" cellpadding="0px" cellspacing="0">
<tr><td>

<h1>Clang Static Analyzer</h1>  

<p>The Clang Static Analyzer is source code analysis tool that find bugs in C
and Objective-C programs.</p>

<p>Currently it can be run either as a <a href="/scan-build.html">standalone
tool</a> or <a href="/xcode.html">within Xcode</a>. The standalone tool is
invoked from the command-line, and is intended to be run in tandem with a build
of a codebase.</p>

<p>The analyzer is 100% open source and are part of the <a
href="http://clang.llvm.org">Clang</a> project. Like the rest of Clang, the
analyzer is implemented as a C++ library that can be used by other tools and
applications.</p>

<h2>Download</h2>

<!-- Generated from: http://www.spiffycorners.com/index.php -->

<style type="text/css">
.spiffy{display:block}
.spiffy *{
  display:block;
  height:1px;
  overflow:hidden;
  font-size:.01em;
  background:#EBF0FA}
.spiffy1{
  margin-left:3px;
  margin-right:3px;
  padding-left:1px;
  padding-right:1px;
  border-left:1px solid #f6f8fc;
  border-right:1px solid #f6f8fc;
  background:#f0f3fb}
.spiffy2{
  margin-left:1px;
  margin-right:1px;
  padding-right:1px;
  padding-left:1px;
  border-left:1px solid #fdfdfe;
  border-right:1px solid #fdfdfe;
  background:#eef2fa}
.spiffy3{
  margin-left:1px;
  margin-right:1px;
  border-left:1px solid #eef2fa;
  border-right:1px solid #eef2fa;}
.spiffy4{
  border-left:1px solid #f6f8fc;
  border-right:1px solid #f6f8fc}
.spiffy5{
  border-left:1px solid #f0f3fb;
  border-right:1px solid #f0f3fb}
.spiffyfg{
  background:#EBF0FA}
  
.spiffyfg h2 {
  margin:0px;  padding:10px;
}
</style>

<style type="text/css">
  #left { float:left; }
  #left h2 { margin:1px; padding-top:0px; }
  #right { float:left; margin-left:20px; margin-right:20px; padding:0px ;}
  #right h2 { padding:0px; margin:0px; }
  #wrappedcontent { padding:15px;}
</style>

<div style="padding:0px; font-size: 90%">
 <b class="spiffy">
 <b class="spiffy1"><b></b></b>
 <b class="spiffy2"><b></b></b>
 <b class="spiffy3"></b>
 <b class="spiffy4"></b>
 <b class="spiffy5"></b></b>
 <div class="spiffyfg">
  <div style="padding:15px">
   <h3 style="margin:0px;padding:0px">Mac OS X</h3>
   <ul>
    <li>Latest build (Universal binary, 10.5+):<br>
     <!--#include virtual="latest_checker.html.incl"-->
    </li>
    <li>Can be used both from the command line and within Xcode</li>
    <li><a href="/installation.html">Installation</a> and <a
    href="/scan-build.html">usage</a></li>
   </ul>
  </div>
 </div>
 <b class="spiffy">
 <b class="spiffy5"></b>
 <b class="spiffy4"></b>
 <b class="spiffy3"></b>
 <b class="spiffy2"><b></b></b>
 <b class="spiffy1"><b></b></b></b>
</div>

<div style="padding:0; margin-top:10px; font-size: 90%">
 <b class="spiffy">
 <b class="spiffy1"><b></b></b>
 <b class="spiffy2"><b></b></b>
 <b class="spiffy3"></b>
 <b class="spiffy4"></b>
 <b class="spiffy5"></b></b>
 <div class="spiffyfg">
  <div style="padding:15px">
   <h3 style="margin:0px;padding:0px">Other Platforms</h3>    
   <p>For other platforms, please follow the instructions for <a
   href="/installation#OtherPlatforms">building the analyzer</a> from
   source code.<p>
  </div>
 </div>
 <b class="spiffy">
 <b class="spiffy5"></b>
 <b class="spiffy4"></b>
 <b class="spiffy3"></b>
 <b class="spiffy2"><b></b></b>
 <b class="spiffy1"><b></b></b></b>
</div>


</td><td style="padding-left:10px">
<a href="images/analyzer_xcode.png"><img src="images/analyzer_xcode.png" width="450x" border=0></a>
<center><b>Viewing static analyzer results in Xcode 3.2</b></center>
<a href="images/analyzer_html.png"><img src="images/analyzer_html.png" width="450px" border=0></a>
<center><b>Viewing static analyzer results in a web browser</b></center>
</td></tr></table>

<h2 id="StaticAnalysis">What is Static Analysis?</h2>

<p>The term &quot;static analysis&quot; is conflated, but here we use it to mean
a collection of algorithms and techniques used to analyze source code in order
to automatically find bugs. The idea is similar in spirit to compiler warnings
(which can be useful for finding coding errors) but to take that idea a step
further and find bugs that are traditionally found using run-time debugging
techniques such as testing.</p>

<p>Static analysis bug-finding tools have evolved over the last several decades
from basic syntactic checkers to those that find deep bugs by reasoning about
the semantics of code. The goal of the Clang Static Analyzer is to provide a
industrial-quality static analysis framework for analyzing C and Objective-C
programs that is freely available, extensible, and has a high quality of
implementation.</p>

<h3 id="Clang">Part of Clang and LLVM</h3>

<p>As its name implies, the Clang Static Analyzer is built on top of <a
href="http://clang.llvm.org">Clang</a> and <a href="http://llvm.org">LLVM</a>.
Strictly speaking, the analyzer is part of Clang, as Clang consists of a set of
reusable C++ libraries for building powerful source-level tools. The static
analysis engine used by the Clang Static Analyzer is a Clang library, and has
the capability to be reused in different contexts and by different clients.</p>

<h2>Important Points to Consider</h2>

<p>While we believe that the static analyzer is already very useful for finding
bugs, we ask you to bear in mind a few points when using it.</p>

<h3>Work-in-Progress</h3>

<p>The analyzer is a continuous work-in-progress.
There are many planned enhancements to improve both the precision and scope of
its analysis algorithms as well as the kinds bugs it will find. While there are
fundamental limitations to what static analysis can do, we have a long way to go
before hitting that wall.</p>

<h3>Slower than Compilation</h3>

<p>Operationally, using static analysis to
automatically find deep program bugs is about trading CPU time for the hardening
of code. Because of the deep analysis performed by state-of-the-art static
analysis tools, static analysis can be much slower than compilation.</p>

<p>While the Clang Static Analyzer is being designed to be as fast and
light-weight as possible, please do not expect it to be as fast as compiling a
program (even with optimizations enabled). Some of the algorithms needed to find
bugs require in the worst case exponential time.</p>

<p>The Clang Static Analyzer runs in a reasonable amount of time by both
bounding the amount of checking work it will do as well as using clever
algorithms to reduce the amount of work it must do to find bugs.</p></li>

<h3>False Positives</h3>

<p>Static analysis is not perfect. It can falsely flag bugs in a program where
the code behaves correctly. Because some code checks require more analysis
precision than others, the frequency of false positives can vary widely between
different checks. Our long-term goal is to have the analyzer have a low false
positive rate for most code on all checks.</p>

<p>Please help us in this endeavor by <a href="filing_bugs.html">reporting false
positives</a>. False positives cannot be addressed unless we know about
them.</p>

<h3>More Checks</h3>

<p>Static analysis is not magic; a static analyzer can only find bugs that it
has been specifically engineered to find. If there are specific kinds of bugs
you would like the Clang Static Analyzer to find, please feel free to
file <a href="filing_bugs.html">feature requests</a> or contribute your own
patches.</p>

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

