summaryrefslogtreecommitdiff
path: root/www/analyzer
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2010-02-16 09:31:36 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2010-02-16 09:31:36 +0000
commitecb7e5c8afe929ee38155db94de6b084ec32a645 (patch)
tree53010172e19c77ea447bcd89e117cda052ab52e0 /www/analyzer
parent5044f5c816adfd5cba17f1adee1a10127296d0bf (diff)
Notes
Diffstat (limited to 'www/analyzer')
-rw-r--r--www/analyzer/annotations.html34
-rw-r--r--www/analyzer/available_checks.html3
-rw-r--r--www/analyzer/content.css30
-rw-r--r--www/analyzer/dev_cxx.html52
-rw-r--r--www/analyzer/filing_bugs.html8
-rw-r--r--www/analyzer/images/analyzer_html.pngbin0 -> 63091 bytes
-rw-r--r--www/analyzer/images/analyzer_xcode.pngbin0 -> 87697 bytes
-rw-r--r--www/analyzer/images/tree/bullet.gifbin0 -> 64 bytes
-rw-r--r--www/analyzer/images/tree/minus.gifbin0 -> 79 bytes
-rw-r--r--www/analyzer/images/tree/plus.gifbin0 -> 83 bytes
-rw-r--r--www/analyzer/index.html25
-rw-r--r--www/analyzer/installation.html5
-rw-r--r--www/analyzer/latest_checker.html.incl2
-rw-r--r--www/analyzer/menu.css80
-rw-r--r--www/analyzer/menu.html.incl74
-rw-r--r--www/analyzer/menu.js17
-rw-r--r--www/analyzer/scan-build.html42
-rw-r--r--www/analyzer/scripts/dbtree.js1
-rw-r--r--www/analyzer/scripts/menu.js17
19 files changed, 276 insertions, 114 deletions
diff --git a/www/analyzer/annotations.html b/www/analyzer/annotations.html
index 819886e822cf..620471346365 100644
--- a/www/analyzer/annotations.html
+++ b/www/analyzer/annotations.html
@@ -5,9 +5,12 @@
<title>Source Annotations</title>
<link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
+ <script type="text/javascript" src="scripts/menu.js"></script>
+ <script type="text/javascript" src="scripts/dbtree.js"></script>
</head>
<body>
+<div id="page">
<!--#include virtual="menu.html.incl"-->
<div id="content">
@@ -33,30 +36,34 @@ attributes</a>.</p>
recognized by GCC. Their use can be conditioned using preprocessor macros
(examples included on this page).</p>
-<ul>
-<li><a href="#generic">Annotations to Enhance Generic Checks</a></li>
+<h4>Specific Topics</h4>
+
+<ul id="collapsetree" class="dbtree onclick multiple">
+<li><a href="#generic">Annotations to Enhance Generic Checks</a>
<ul>
- <li><a href="#null_checking">Null Pointer Checking</a></li>
+ <li><a href="#null_checking"><span>Null Pointer Checking</span></a>
<ul>
- <li><a href="#attr_nonnull">Attribute 'nonnull'</a></li>
+ <li><a href="#attr_nonnull"><span>Attribute 'nonnull'</span></a></li>
</ul>
+ </li>
</ul>
-<li><a href="#macosx">Mac OS X API Annotations</a></li>
+</li>
+<li><a href="#macosx">Mac OS X API Annotations</a>
<ul>
- <li><a href="#cocoa_mem">Cocoa &amp; Core Foundation Memory Management
- Annotations</a></li>
+ <li><a href="#cocoa_mem">Cocoa &amp; Core Foundation Memory Management Annotations</a>
<ul>
- <li><a href="#attr_ns_returns_retained">Attribute
- 'ns_returns_retained'</a></li>
- <li><a href="#attr_cf_returns_retained">Attribute
- 'cf_returns_retained'</a></li>
- </ul>
+ <li><a href="#attr_ns_returns_retained">Attribute 'ns_returns_retained'</a></li>
+ <li><a href="#attr_cf_returns_retained">Attribute 'cf_returns_retained'</a></li>
+ </ul>
+ </li>
</ul>
-<li><a href="#custom_assertions">Custom Assertion Handlers</a></li>
+</li>
+<li><a href="#custom_assertions">Custom Assertion Handlers</a>
<ul>
<li><a href="#attr_noreturn">Attribute 'noreturn'</a></li>
<li><a href="#attr_analyzer_noreturn">Attribute 'analyzer_noreturn'</a></li>
</ul>
+ </li>
</ul>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
@@ -383,6 +390,7 @@ void my_assert_rtn(const char *, const char *, int, const char *) <span class="c
</pre>
</div>
+</div>
</body>
</html>
diff --git a/www/analyzer/available_checks.html b/www/analyzer/available_checks.html
index 5e74fd8ea239..7af086506506 100644
--- a/www/analyzer/available_checks.html
+++ b/www/analyzer/available_checks.html
@@ -5,9 +5,11 @@
<title>Available Checks</title>
<link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
+ <script type="text/javascript" src="scripts/menu.js"></script>
</head>
<body>
+<div id="page">
<!--#include virtual="menu.html.incl"-->
<div id="content">
@@ -29,6 +31,7 @@ of some of the bugs that it finds:</p>
</div>
+</div>
</body>
</html>
diff --git a/www/analyzer/content.css b/www/analyzer/content.css
index 3f47e3bea7ad..823fae265c95 100644
--- a/www/analyzer/content.css
+++ b/www/analyzer/content.css
@@ -2,8 +2,11 @@ html { margin: 0px; } body { margin: 8px; }
html, body {
padding:0px;
+ margin:0px;
font-size:small; font-family:"Lucida Grande", "Lucida Sans Unicode", Arial, Verdana, Helvetica, sans-serif; background-color: #fff; color: #222;
line-height:1.5;
+ background-color: #808080;
+
}
h1, h2, h3, tt { color: #000 }
@@ -27,7 +30,34 @@ IMG.img_slide {
margin-right: auto
}
+#page { width:930px; text-align: left; margin: 0 auto; padding:0;
+ background-color: white; height:100%;
+ border-left: 1px solid #EBF0FA;
+}
+
+#content {
+ clear: left;
+ padding: 1em 2em 0 2em;
+ background-color: #ffffff;
+}
+
.itemTitle { color:#2d58b7 }
+
/* Tables */
tr { vertical-align:top }
+
+/* Collapsing Trees: http://dbtree.megalingo.com/web/demo/simple-collapsible-tree.cfm */
+#collapsetree, #collapsetree a:link, #collapsetree li a:link, #collapsetree a:visited, #collapsetree li a:visited{color:#000;text-decoration:none}
+#collapsetree,#collapsetree ul{list-style-type:none; width:auto; margin:0; padding:0}
+#collapsetree ul{padding-left:20px;display:none;overflow:auto}
+#collapsetree li ul{margin:0 auto}
+#collapsetree li{display:block;width:100%;line-height:20px;white-space:nowrap}
+#collapsetree li a{display:block;padding-left:20px;color:#000;text-decoration:none;background:url(images/tree/bullet.gif) center left no-repeat;white-space:nowrap}
+#collapsetree li a:hover{text-decoration:underline;background-color:transparent;color:#000}
+#collapsetree li ul.click{display:block}
+#collapsetree li.click a{background:url(images/tree/bullet.gif) center left no-repeat}
+#collapsetree ul li.click a{background:url(images/tree/bullet.gif) center left no-repeat}
+#collapsetree li a.subMenu,#collapsetree ul li a.subMenu{background:url(images/tree/plus.gif) center left no-repeat}
+#collapsetree li a.click{background:url(images/tree/minus.gif) center left no-repeat}
+#collapsetree ul li a.click{background:url(images/tree/minus.gif) center left no-repeat} \ No newline at end of file
diff --git a/www/analyzer/dev_cxx.html b/www/analyzer/dev_cxx.html
new file mode 100644
index 000000000000..b5ef2b10919f
--- /dev/null
+++ b/www/analyzer/dev_cxx.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+ <title>Analyzer Development: C++ Support</title>
+ <link type="text/css" rel="stylesheet" href="menu.css" />
+ <link type="text/css" rel="stylesheet" href="content.css" />
+ <script type="text/javascript" src="scripts/menu.js"></script>
+</head>
+<body>
+
+<div id="page">
+<!--#include virtual="menu.html.incl"-->
+<div id="content">
+
+<h1>C++ Support</h1>
+
+<p>The Clang frontend
+now <a href="http://clang.llvm.org/cxx_status.html">supports the
+majority of C++</a>. Support in the frontend for C++ language
+features, however, does not automatically translate into support for
+those features in the static analyzer. Language features need to be
+specifically modeled in the static analyzer so their semantics can be
+properly analyzed. Support for analyzing C++ and Objective-C++ files
+is currently extremely limited, and we are only encouraging those who
+are interested in contributing to the development of the analyzer to
+try this functionality out at this time.</p>
+
+<p>Listed here are a set of open tasks that are prerequisites for
+decent analysis of C++. This list is also not complete; new tasks
+will be added as deemed necessary.</p>
+
+<ul>
+ <li>Control-Flow Graph Enhancements:</li>
+ <ul>
+ <li>Model C++ destructors</li>
+ <li>Model C++ initializers (in constructors)</li>
+ </ul>
+ <li>Path-Sensitive Analysis Engine (GRExprEngine):</li>
+ <ul>
+ <li>Model C++ casts</li>
+ <li>Model C++ constructors</li>
+ <li>Model C++ destructors</li>
+ <li>Model <tt>new</tt> and <tt>delete</tt></li>
+ </ul>
+</ul>
+
+</div>
+</div>
+</body>
+</html>
+
diff --git a/www/analyzer/filing_bugs.html b/www/analyzer/filing_bugs.html
index 1ce02bee9286..746f1cb22eda 100644
--- a/www/analyzer/filing_bugs.html
+++ b/www/analyzer/filing_bugs.html
@@ -5,11 +5,12 @@
<title>Filing Bugs and Feature Requests</title>
<link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
+ <script type="text/javascript" src="scripts/menu.js"></script>
</head>
<body>
+<div id="page">
<!--#include virtual="menu.html.incl"-->
-
<div id="content">
<h1>Filing Bugs and Feature Requests</h1>
@@ -47,15 +48,14 @@ component.</p>
reports to Apple's <a href="http://bugreporter.apple.com">Bug Reporter</a> web
site.</p>
-<p>You are free to always file bugs through this website, but this option less
+<p>You are free to always file bugs through this website, but this option is less
attractive than filing bug reports through Bugzilla as not everyone who works on
the analyzer has access to that bug database.</p>
<h2>Apple-internal Users</h2>
<p>Please file bugs in Radar against the <b>llvm - checker</b> component.</p>
-
-
+</div>
</div>
</body>
</html>
diff --git a/www/analyzer/images/analyzer_html.png b/www/analyzer/images/analyzer_html.png
new file mode 100644
index 000000000000..607ea1882e71
--- /dev/null
+++ b/www/analyzer/images/analyzer_html.png
Binary files differ
diff --git a/www/analyzer/images/analyzer_xcode.png b/www/analyzer/images/analyzer_xcode.png
new file mode 100644
index 000000000000..84c69809e8c3
--- /dev/null
+++ b/www/analyzer/images/analyzer_xcode.png
Binary files differ
diff --git a/www/analyzer/images/tree/bullet.gif b/www/analyzer/images/tree/bullet.gif
new file mode 100644
index 000000000000..de1534854699
--- /dev/null
+++ b/www/analyzer/images/tree/bullet.gif
Binary files differ
diff --git a/www/analyzer/images/tree/minus.gif b/www/analyzer/images/tree/minus.gif
new file mode 100644
index 000000000000..225f40daeb0d
--- /dev/null
+++ b/www/analyzer/images/tree/minus.gif
Binary files differ
diff --git a/www/analyzer/images/tree/plus.gif b/www/analyzer/images/tree/plus.gif
new file mode 100644
index 000000000000..5398c801331c
--- /dev/null
+++ b/www/analyzer/images/tree/plus.gif
Binary files differ
diff --git a/www/analyzer/index.html b/www/analyzer/index.html
index 2cb318625b4e..006bc5c26522 100644
--- a/www/analyzer/index.html
+++ b/www/analyzer/index.html
@@ -3,19 +3,26 @@
<html>
<head>
<title>Clang Static Analyzer</title>
- <link type="text/css" rel="stylesheet" href="menu.css" />
<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">
-<h1>Clang Static Analyzer</h1>
+
+<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 consists of both a source code analysis framework
-and a standalone tool that finds bugs in C and Objective-C programs. The
+and a standalone tool that finds bugs in C and Objective-C programs.</p>
+
+<p>The
standalone tool is invoked from the command-line, and is intended to run in
tandem with a build of a project or code base.</p>
@@ -75,7 +82,7 @@ href="http://clang.llvm.org">Clang</a> project.</p>
#wrappedcontent { padding:15px;}
</style>
-<div style="padding:0px">
+<div style="padding:0px; font-size: 90%">
<b class="spiffy">
<b class="spiffy1"><b></b></b>
<b class="spiffy2"><b></b></b>
@@ -107,6 +114,13 @@ href="http://clang.llvm.org">Clang</a> project.</p>
<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
@@ -182,6 +196,7 @@ file <a href="filing_bugs.html">feature requests</a> or contribute your own
patches.</p>
</div>
+</div>
</body>
</html>
diff --git a/www/analyzer/installation.html b/www/analyzer/installation.html
index d2be711a4860..b84f26397237 100644
--- a/www/analyzer/installation.html
+++ b/www/analyzer/installation.html
@@ -5,11 +5,12 @@
<title>Obtaining the Static Analyzer</title>
<link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
+ <script type="text/javascript" src="scripts/menu.js"></script>
</head>
<body>
+<div id="page">
<!--#include virtual="menu.html.incl"-->
-
<div id="content">
<h1>Obtaining the Static Analyzer</h1>
@@ -106,7 +107,7 @@ are located in <tt>$(SRCDIR)/tools/clang/tools/scan-build</tt> and
are subject to change.</p></li>
</ul>
-
+</div>
</div>
</body>
</html>
diff --git a/www/analyzer/latest_checker.html.incl b/www/analyzer/latest_checker.html.incl
index cccedb5a88c0..87ef5fd45ed0 100644
--- a/www/analyzer/latest_checker.html.incl
+++ b/www/analyzer/latest_checker.html.incl
@@ -1 +1 @@
-<b><a href="http://files.me.com/tkremenek/pxfgyv">checker-232.tar.bz2</a></b> (built December 14, 2009)
+<b><a href="http://checker.minormatter.com/checker-234.tar.bz2">checker-234.tar.bz2</a></b> (built February 9, 2010)
diff --git a/www/analyzer/menu.css b/www/analyzer/menu.css
index 0312f4c8b1f1..05c1bbfc82db 100644
--- a/www/analyzer/menu.css
+++ b/www/analyzer/menu.css
@@ -1,40 +1,52 @@
-/***************/
-/* page layout */
-/***************/
+/* From 'A list apart', 'dropdowns' */
-[id=menu] {
- position:fixed;
- width:35ex;
+#nav {
+ clear: left;
+ margin:0;
+ padding:0;
+ font-weight: bold;
+ width:100%;
+ background-color: #EBF0FA;
+ border-bottom: 1px solid;
+ font-size: 80%;
}
-[id=content] {
- /* ***** EDIT THIS VALUE IF CONTENT OVERLAPS MENU ***** */
- position:absolute;
- left:39ex;
- padding-right:4ex;
+#nav a {
+ text-decoration: none;
+}
+#nav a:hover {
+ text-decoration: underline;
}
-
-/**************/
-/* menu style */
-/**************/
-
-#menu .submenu {
- padding-top:1em;
- display:block;
+.menubar ul {
+ list-style: none inside;
}
-
-#menu label {
- display:block;
- font-weight: bold;
- text-align: center;
- color: #ffffff;
- background-color: #2d58b7;
+.menubar li {
+ margin: 0;
+ padding: 5px;
+ text-align: left;
+ text-indent: 0px;
+ list-style-position: inside;
+ list-style:none;
+ float: left;
+ position: relative;
+ width: 13em;
+ cursor: default;
+ background-color: #EBF0FA;
}
-#menu a {
- padding:0 .2em;
- display:block;
- text-align: center;
- background-color: #EBF0FA;
+.menubar li ul /* second level lists */ {
+ display: none;
+ position: absolute;
+ left: 0;
}
-#menu a:visited {
- color:rgb(100,50,100);
-} \ No newline at end of file
+.menubar li>ul {
+ border-left: 1px solid;
+ border-right: 1px solid;
+ border-bottom: 1px solid;
+ padding: 0;
+ margin: 5px 0;
+ left:auto;
+ font-weight: normal;
+}
+.menubar li:hover ul, li.over ul { /* lists nested under hovered list items */
+ display: block;
+}
+
diff --git a/www/analyzer/menu.html.incl b/www/analyzer/menu.html.incl
index b7c95f10fb81..8d465e44c2bd 100644
--- a/www/analyzer/menu.html.incl
+++ b/www/analyzer/menu.html.incl
@@ -1,35 +1,39 @@
-<div id="menu">
- <div>
- <a href="http://llvm.org/">LLVM Home</a>
- <a href="http://clang.llvm.org/">Clang Home</a>
- </div>
-
- <div class="submenu">
- <label>Events</label>
- <a href="http://llvm.org/devmtg/2009-10">October 2, 2009 - LLVM/Clang Developers' Meeting</a>
- </div>
-
- <div class="submenu">
- <label>Quick Links</label>
- <a href="/index.html">About the Analyzer</a>
- <a href="/filing_bugs.html">Filing Bugs</a>
- </div>
-
- <div class="submenu">
- <label>User Manual</label>
-<!-- <a href="/design_philosphy.html">Design&nbsp;Philosophy</a> -->
- <a href="/installation.html">Obtaining&nbsp;the&nbsp;Analyzer</a>
- <a href="/scan-build.html">Running&nbsp;the&nbsp;Analyzer</tt></a>
- <a href="/available_checks.html">Available&nbsp;Checks</a>
-<!-- <a href="/false_positives.html">False&nbsp;Positives</a> -->
- <a href="/annotations.html">Source-level Annotations</a>
- </div>
-
- <div class="submenu">
- <label>Clang Mailing Lists</label>
- <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a>
- <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a>
- </div>
-
- <center><a href="http://llvm.org"><img src="http://llvm.org/img/LLVM-Logo-Derivative-3.png" style="margin-top:10px"></a></center>
-</div>
+<table width="100%" id="nav" cellspacing=0 cellpadding=0>
+<tr><td>
+<ul style="margin:0; padding:0" class="menubar">
+<li style="padding-left:5em">
+ <a href="/index.html">About</a>
+ <ul class="menubar">
+ <li><a href="/index.html">About the Analyzer</a></li>
+ <li><a href="http://llvm.org/">LLVM Project</a></li>
+ <li><a href="http://clang.llvm.org/">Clang Project</a></li>
+ </ul>
+</li>
+<li>
+ <a href="/filing_bugs.html">Filing Bugs</a>
+</li>
+<li>
+ User Manual
+ <ul>
+ <li><a href="/installation.html">Obtaining the Analyzer</a></li>
+ <li><a href="/scan-build.html">Running the Analyzer</tt></a></li>
+ <li><a href="/available_checks.html">Available Checks</a></li>
+ <li><a href="/annotations.html">Source-level Annotations</a></li>
+ </ul>
+</li>
+<li>
+ Development
+ <ul>
+ <li><a href="/dev_cxx.html">Analysis support for C++</a></li>
+ </ul>
+</li>
+<li>
+ Mailing Lists
+ <ul>
+ <li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a></li>
+ <li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a></li>
+ </ul>
+</li>
+</ul>
+</td></tr>
+</table>
diff --git a/www/analyzer/menu.js b/www/analyzer/menu.js
new file mode 100644
index 000000000000..6b393c081c85
--- /dev/null
+++ b/www/analyzer/menu.js
@@ -0,0 +1,17 @@
+startList = function() {
+ if (document.all&&document.getElementById) {
+ navRoot = document.getElementById("nav");
+ for (i=0; i<navRoot.childNodes.length; i++) {
+ node = navRoot.childNodes[i];
+ if (node.nodeName=="LI") {
+ node.onmouseover=function() {
+ this.className+=" over";
+ }
+ node.onmouseout=function() {
+ this.className=this.className.replace(" over", "");
+ }
+ }
+ }
+ }
+}
+window.onload=startList;
diff --git a/www/analyzer/scan-build.html b/www/analyzer/scan-build.html
index fd05af021bd9..16bdbfdbe219 100644
--- a/www/analyzer/scan-build.html
+++ b/www/analyzer/scan-build.html
@@ -3,32 +3,33 @@
<html>
<head>
<title>Running the Analyzer</title>
- <link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
- <style>
- thead {
- background-color:#eee; color:#666666;
- font-weight: bold; cursor: default;
- text-align:center;
- border-top: 2px solid #cccccc;
- border-bottom: 2px solid #cccccc;
- font-weight: bold; font-family: Verdana
- }
- table { border: 1px #cccccc solid }
- table { border-collapse: collapse; border-spacing: 0px }
- table { margin-left:0px; margin-top:20px; margin-bottom:20px }
- td { border-bottom: 1px #cccccc dotted }
- td { padding:5px; padding-left:8px; padding-right:8px }
- td { text-align:left; font-size:9pt }
- td.View { padding-left: 10px }
- </style>
+ <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">
+<style>
+table.options thead {
+ background-color:#eee; color:#666666;
+ font-weight: bold; cursor: default;
+ text-align:left;
+ border-top: 2px solid #cccccc;
+ border-bottom: 2px solid #cccccc;
+ font-weight: bold; font-family: Verdana
+}
+table.options { border: 1px #cccccc solid }
+table.options { border-collapse: collapse; border-spacing: 0px }
+table.options { margin-left:0px; margin-top:20px; margin-bottom:20px }
+table.options td { border-bottom: 1px #cccccc dotted }
+table.options td { padding:5px; padding-left:8px; padding-right:8px }
+table.options td { text-align:left; font-size:9pt }
+</style>
+
<h1>Running the Analyzer</h1>
<p>While the static analyzer engine can be used as a library, many users will
@@ -116,7 +117,7 @@ options prefix the build command. For example:</p>
<p>Here is a subset of useful options:</p>
-<table>
+<table class="options">
<thead><tr><td>Option</td><td>Description</td></tr></thead>
<tr><td><b>-o</b></td><td>Target directory for HTML report files. Subdirectories
@@ -245,6 +246,7 @@ report bugs of this kind).
-->
</div>
+</div>
</body>
</html>
diff --git a/www/analyzer/scripts/dbtree.js b/www/analyzer/scripts/dbtree.js
new file mode 100644
index 000000000000..5face5db96de
--- /dev/null
+++ b/www/analyzer/scripts/dbtree.js
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 5,r,Q,u;7 17=[];5=H;1i();9(!1Z.1j.20){1Z.1j.20=k(a){C[C.D]=a}}7 19=\'35+/\';k 36(a){7 b,R=\'\',i=0;I(;i<a.D;i+=4){b=(19.1k(a.1l(i))&1a)<<18|(19.1k(a.1l(i+1))&1a)<<12|(19.1k(a.1l(i+2))&1a)<<6|19.1k(a.1l(i+3))&1a;R+=37.38((b&39)>>16,(b&3a)>>8,b&1a)}9(a.21(i-2)==22)1m=R.23(0,R.D-2);s 9(a.21(i-1)==22)1m=R.23(0,R.D-1);s 1m=R;z 3b(1m)}7 A={24:k(){7 a=l.E(\'X\');I(7 i=0;i<a.D;i++){9(a[i].h.F(/\\1n\\b/)==-1)3c;7 b=a[i];9(b.h.F(/\\1E\\b/)!=-1){7 c=b.E(\'a\');I(7 j=0;j<c.D;j++){m.B(c[j],\'25\',1F,o);m.B(c[j],\'26\',1G,o);m.B(c[j],\'1o\',1b,o);c[j].Y=\'1H:1I(0)\'}}7 d=b.E(\'X\');I(7 j=0;j<d.D;j++){7 e=d[j].p;e.27=J;9(b.h.F(/\\3d\\b/)!=-1){m.B(e,\'w\',A.w,o);9(b.h.F(/\\3e\\b/)==-1){e.E(\'a\')[0].Y=\'1H:1I(0)\'}}s{7 t=b.h.3f(/1J(.*)1J/);t=t?t[1]:H;m.B(e,\'3g\',A.28(e,t),o);m.B(e,\'3h\',A.29(e),o)}e.E(\'a\')[0].h+=\' 2a\'}9(b.h.F(/\\3i\\b/)!=-1)A.2b(b.v)}},2b:k(a){7 b=l.G(a+\'3j\');9(b){A.1p(b);b=b.p;1c(!!b&&(b.v!=a)){9((!b.h)||(b.h==\'\')){b.h=\'w\'}s{b.h+=\' w\'}9(b.1d.K.L()==\'a\')b.1d.h+=\' w\';b=b.p}}},29:k(a){z k(){A.1p(a)}},28:k(a,b){z k(){A.2c(a,b)}},1p:k(a){7 b=a;3k(b.2d);I(7 i=0;i<b.S.D;i++){7 c=b.S[i];9(c.K.L()==\'X\'){b.E(\'a\')[0].h+=\' w\';b.h+=\' w\';c.h+=\' w\'}}},2c:k(a,b){7 c=a;c.2d=3l(k(){A.1q(c)},b)},1q:k(a){I(7 i=0;i<a.S.D;i++){7 b=a.S[i];9(b.K.L()==\'X\'){a.E(\'a\')[0].h=a.E(\'a\')[0].h.1K(/w/g,\'\');b.h=b.h.1K(/w/g,\'\');a.h=a.h.1K(/w/g,\'\')}}},w:k(e){9(M.T){M.T.1L=J}9(e&&e.1r){e.1r()}7 a=(M.T)?M.T.2e:(e)?e.1M:H;9(!a||!(a=A.1N(a,\'2f\')))z;9(a.E(\'a\')[0].h.F(/\\2g\\b/)==-1){7 b=1e(a);9(2h(b)){9(l.G(b).h.F(/\\3m\\b/)==-1){I(n=0;n<a.p.S.D;n++){N=a.p.S[n];9(N.K.L()==\'2f\'){9(N.h.F(/\\2g\\b/)!=-1)A.1q(a.p.S[n])}}}}A.1p(a)}s{A.1q(a)}9(2h(1e(a))){z J}s{z o}},1N:k(a,b){9(a.K.L()!=b&&a.K.L()!=\'U\'){z A.1N(a.p,b)}s 9(a.K.L()==\'U\'){z H}s{z a}}};k 1i(){3n{u=M.2i?O 2i():O 3o(\'3p.3q\')}3r(e){2j(\'2k 2l: 3s 3t 3u 3v 3w-3x!\')}}k 1O(a,x){a.1f.3y=x+\'2m\'}k 1P(a,y){a.1f.3z=y+\'2m\'}k 1e(a){1c(a.h.F(/\\1n\\b/)==-1){a=a.p}9((a.h.F(/\\1n\\b/)!=-1)&&(a.h.F(/\\1E\\b/)!=-1)){I(i=0;i<17.D;i++){9(a.v==17[i].q)z i}}z a.v}k 1G(a){a=O m(a);r=a.P.p.p.v;7 b=r.1s(\'Z\');r=b[1];5=17[1e(a.P)];7 c=l.G(5.q+\'10\').3A(J);7 d=l.G(5.q+\'10\');d.p.2n(d);c.v=5.q+\'10\';l.U.2o(c);1O(c,a.x);1P(c,a.y);c.1f.1Q=\'2p\';a.1t();m.B(l,\'1u\',1R,o);z o}k 1R(c){c=O m(c);7 e;7 a=c.P;7 b=a;1c((b!=H)&&(b.K.L()!=\'U\')){9(b.v==5.q+\'10\')1g;b=b.p}9((b!=H)&&(b.v==5.q+\'10\')){3B(a.p.h){1S\'3C\':a.Y=5.V+\'11=1T&N=\'+5.13;1g;1S\'1T\':a.Y=5.V+\'11=1T&N=\'+r;1g;1S\'2q\':a.Y=5.V+\'11=2q&N=\'+r;1g;3D:e=5.2r+\'?q=\'+5.q;e+=\'&13=\'+5.13;9(a.p.h==\'3E\'){e+=\'&11=2s&N=\'+r+\'&2t=\'+5.13}s{e+=\'&11=\'+a.p.h+\'&N=\'+r}7 d=O 2u();7 f=d.2v();e+=\'&2w=\'+f;e+=\'&1v=\'+5.1v;e+=\'&1w=\'+5.1w;e+=\'&1x=\'+5.1x;e+=\'&1y=\'+5.1y;e+=\'&1z=\'+5.1z;e+=\'&1A=\'+5.1A;e+=\'&v=\'+5.v;e+=\'&1B=\'+5.1B;e+=\'&1C=\'+5.1C;e+=\'&V=\'+5.V;u.2x=1U;u.1V(\'2y\',e,J);u.14(\'2z\',\'2A-2B\');u.14(\'2C-2D\',\'2E-2F\');u.14(\'2G-2H-2I\',l.2J);u.2K(H)}}7 g=l.G(5.q+\'10\');9(g){g.1f.1Q=\'3F\'};m.1h(l,\'1u\',1R,o)}k 1F(a){a=O m(a);r=a.P.p.p.v;7 b=r.1s(\'Z\');r=b[1];5=17[1e(a.P)];9(!l.G(5.q+\'15\')){7 c=(!l.G(5.q+\'15\'))?l.3G(\'3H\'):l.G(5.q+\'15\');c.v=5.q+\'15\';c.2L=a.P.1d.3I;l.U.2o(c)}m.B(l,\'2M\',1W,o);m.B(l,\'1u\',1X,o);m.B(l,\'1o\',1b,o);a.1t();z o}k 1b(a){9(!a&&M.T)a=M.T;9(a!=H){9(3J(a.1Y)==\'k\')a.1Y();s a.2N=o}z o}k 1W(a){a=O m(a);7 b=l.G(5.q+\'15\');1O(b,a.x);1P(b,a.y);b.1f.1Q=\'2p\';a.1t();z o}k 1X(a){a=O m(a);7 b=a.P.p;9(b.K.L()==\'a\'){r=5.q+\'Z\'+r;9(r!=b.p.v){7 c=J;7 d=b.p;1c(!!d&&(d.v!=5.q)){9(d.v==r){c=o;1g}s{d=d.p}}9(c==J){7 e=r.1s(\'Z\');r=e[1];Q=b.p.v;7 f=Q.1s(\'Z\');Q=f[1];2O(a)}}}7 g=l.G(5.q+\'15\');9(g){g.p.2n(g)};m.1h(l,\'2M\',1W,o);m.1h(l,\'1u\',1X,o);m.1h(l,\'1o\',1b,o)}k 2O(a){7 d=O 2u();7 b=d.2v();7 c;c=5.2r+\'?q=\'+5.q+\'&11=2s&13=\'+5.13+\'&N=\'+r+\'&2t=\'+Q+\'&2w=\'+b;c+=\'&1v=\'+5.1v;c+=\'&1w=\'+5.1w;c+=\'&1x=\'+5.1x;c+=\'&1y=\'+5.1y;c+=\'&1z=\'+5.1z;c+=\'&1A=\'+5.1A;c+=\'&v=\'+5.v;c+=\'&1B=\'+5.1B;c+=\'&1C=\'+5.1C;c+=\'&V=\'+5.V;u.2x=1U;u.1V(\'2y\',c,J);u.14(\'2z\',\'2A-2B\');u.14(\'2C-2D\',\'2E-2F\');u.14(\'2G-2H-2I\',l.2J);u.2K(H)}k 2P(){7 a=(!!Q)?Q:r;a=5.q+\'Z\'+a;a=l.G(a);9(a){a=a.E(\'X\')[0];1c(!!a&&(a.h.F(/\\1n\\b/)==-1)&&(a.h.F(/\\1E\\b/)==-1)){9((!a.h)||(a.h==\'\')){a.h=\'w\'}s{a.h+=\' w\'}9(a.1d.K.L()==\'a\')a.1d.h+=\' w\';a=a.p}}}k 3K(a,b){9(a!=\'3L\'){3M(a+".3N=\'"+b.2Q[b.2R].2S+"\'")}s{M.1V(b.2Q[b.2R].2S)}}k 2T(a){7 b=l.G(a);7 c=b.E(\'X\');I(7 j=0;j<c.D;j++){7 d=c[j].p;d.27=J;m.B(d,\'w\',A.w,o);d.E(\'a\')[0].h+=\' 2a\'}7 e=b.E(\'a\');I(7 j=0;j<e.D;j++){m.B(e[j],\'25\',1F,o);m.B(e[j],\'26\',1G,o);m.B(e[j],\'1o\',1b,o);e[j].Y=\'1H:1I(0)\'}}k 1U(){9(u.3O==4){9(u.3P==3Q){l.G(5.q+\'3R\').2L=u.3S;2T(5.q);2P();1i()}s{2j(\'2k 2l: 3T, 3U 3V 1J 3W a 3X 3Y 3Z 40:\\n\'+u.41);1i()}}}k m(a){C.W=a?a:M.T;C.P=a.1M?a.1M:a.2e;C.x=a.2U?(a.2U):(a.42+2V.2W(l.U.2X,l.2Y.2X));C.y=a.2Z?(a.2Z):(a.43+2V.2W(l.U.30,l.2Y.30))}m.1j.44=k(){z\'m [ x = \'+C.x+\', y = \'+C.y+\' ]\'};m.1j.1t=k(){9(C.W.1r){C.W.1r();C.W.1Y()}s 9(C.W.1L){C.W.1L=J;C.W.2N=o}};m.B=k(a,b,c,d){9(l.31){a.31(b,c,d)}s 9(l.32){a.32(\'1D\'+b,c,d)}s{a[\'1D\'+b]=c}};m.1h=k(a,b,c,d){9(l.33){a.33(b,c,d)}s 9(l.34){a.34(\'1D\'+b,c,d)}s{a[\'1D\'+b]=H}};m.B(M,\'45\',A.24,o);',62,254,'|||||instance||var||if||||||||className|||function|document|Evt||false|parentNode|instanceName|nid|else||client|id|click|||return|dbTree|addEvent|this|length|getElementsByTagName|search|getElementById|null|for|true|nodeName|toLowerCase|window|node|new|source|nto|decOut|childNodes|event|body|editpage|evt|ul|href|_|_options|action||rootnode|setRequestHeader|_tip||dbtreeObj||b64s|0xff|PreventDefault|while|firstChild|getObj|style|break|removeEvent|createClient|prototype|indexOf|charAt|undecOut|bdbtree|selectstart|mOver|mOut|stopPropagation|split|consume|mouseup|type|query|datasource|username|password|table|parent|contentfield|on|bedit|dragPress|contextMenu|javascript|void|to|replace|cancelBubble|target|getTarget|setX|setY|display|contextAction|case|add|callback|open|dragMove|dragRelease|preventDefault|Array|push|charCodeAt|61|substring|init|mousedown|contextmenu|hasSubMenu|getMoutFor|getMoverFor|subMenu|mExp|mTimeout|timeout|srcElement|li|bclick|isNaN|XMLHttpRequest|alert|DBTree|Error|px|removeChild|appendChild|block|edit|tagpath|move|nodeto|Date|getTime|time|onreadystatechange|get|Pragma|no|cache|Cache|Control|must|revalidate|If|Modified|Since|lastModified|send|innerHTML|mousemove|returnValue|dragBoxDropped|expandtree|options|selectedIndex|value|reinit|pageX|Math|max|scrollLeft|documentElement|pageY|scrollTop|addEventListener|attachEvent|removeEventListener|detachEvent|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|decode|String|fromCharCode|0xff0000|0xff00|unescape|continue|bonclick|blinkparent|match|mouseout|mouseover|bexpand|_active|clearTimeout|setTimeout|bmultiple|try|ActiveXObject|Microsoft|XMLHTTP|catch|Your|browser|is|not|Ajax|enabled|left|top|cloneNode|switch|addroot|default|moveroot|none|createElement|div|nodeValue|typeof|jumpTo|blank|eval|location|readyState|status|200|_edit|responseText|Sorry|there|seems|be|problem|retrieving|the|response|statusText|clientX|clientY|toString|load'.split('|'),0,{}))
diff --git a/www/analyzer/scripts/menu.js b/www/analyzer/scripts/menu.js
new file mode 100644
index 000000000000..6b393c081c85
--- /dev/null
+++ b/www/analyzer/scripts/menu.js
@@ -0,0 +1,17 @@
+startList = function() {
+ if (document.all&&document.getElementById) {
+ navRoot = document.getElementById("nav");
+ for (i=0; i<navRoot.childNodes.length; i++) {
+ node = navRoot.childNodes[i];
+ if (node.nodeName=="LI") {
+ node.onmouseover=function() {
+ this.className+=" over";
+ }
+ node.onmouseout=function() {
+ this.className=this.className.replace(" over", "");
+ }
+ }
+ }
+ }
+}
+window.onload=startList;