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 "static analysis" 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