forked from OSchip/llvm-project
58 lines
1.8 KiB
HTML
58 lines
1.8 KiB
HTML
<!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 compiler <a
|
|
href="http://clang.llvm.org/cxx_status.html">supports almost all of C++11</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 fairly basic.</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:
|
|
<ul>
|
|
<li>Model destructors for temporary objects</li>
|
|
<li>Model the implicit allocator call to <tt>operator new</tt></li>
|
|
</ul>
|
|
</li>
|
|
<li>Path-Sensitive Analysis Engine (ExprEngine):
|
|
<ul>
|
|
<li>Allow constructors to be inlined</li>
|
|
<li>Allow destructors to be inlined</li>
|
|
<li>Fully model <tt>new</tt> and <tt>delete</tt></li>
|
|
<li>Track type info through casts more precisely</li>
|
|
</ul>
|
|
</li>
|
|
<li>Checkers:
|
|
<ul>
|
|
<li>Check that <tt>new</tt> and <tt>delete</tt> are correctly paired</li>
|
|
<li>For more ideas, see the <a href="potential_checkers.html">list of potential checkers</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|