llvm-project/clang/www/StaticAnalysis.html

145 lines
4.1 KiB
HTML
Raw Normal View History

<html>
<head>
<title>LLVM/Clang Static Analyzer</title>
2008-06-11 13:26:52 +08:00
<link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
</head>
<body>
2008-06-11 13:26:52 +08:00
<!--#include virtual="menu.html.incl"-->
<div id="content">
<h1>LLVM/Clang Static Analyzer</h1>
<p>The LLVM/Clang static analyzer is a standalone tool that find bugs in C and
Objective-C programs. Currently the analyzer is invoked as a command-line tool.
It is intended to run in tandem with a build of a project or code base.</p>
<p>Here are some important points we ask you to consider when using the static
analyzer:</p>
<ul>
<li><b>This tool is <b>very early</b> in development.</b> 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.</li>
<li><b>False positives.</b> 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 eventual goal is to have the
analyzer have a low false positive rate for most code on all checks.</li>
<li><b>Static analysis can be much slower than compilation.</b> While the
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. The 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.</li>
</ul>
<!-- 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:50px; padding:0px ;}
#right h2 { padding:0px; margin:0px; }
#wrappedcontent { padding:15px;}
</style>
<div id="left">
<h2>Using the Analyzer</h2>
<ul>
<li><a href="StaticAnalysisUsage.html#Obtaining">Obtaining the Analyzer</a></li>
<li><a href="StaticAnalysisUsage.html#BasicUsage">Basic Usage</a></li>
<li><a href="StaticAnalysisUsage.html#Output">Output of the Analyzer</a></li>
<li><a href="StaticAnalysisUsage.html#RecommendedUsageGuidelines">Recommended Usage Guidelines</a></li>
<li><a href="StaticAnalysisUsage.html#Debugging">Debugging the Analyzer</a></li>
<li><a href="StaticAnalysisUsage.html#filingbugs">Filing Bugs</a></li>
</ul>
</div>
2008-06-11 13:26:52 +08:00
<div id="right">
<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 id="wrappedcontent">
<h2>Download</h2>
<ul>
<li>Mac OS X (Intel-only, 10.5+):
<p>
<!--#include virtual="latest_checker.html.incl"-->
</p>
</li>
<li><a href="StaticAnalysisUsage.html#OtherUsage">Other Platforms</a> (Building from Source)</li>
</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>
</body>
</html>