Home | History | Annotate | Download | only in analyzer
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      2           "http://www.w3.org/TR/html4/strict.dtd">
      3 <html>
      4 <head>
      5   <title>Analyzer Development: C++ Support</title>
      6   <link type="text/css" rel="stylesheet" href="menu.css">
      7   <link type="text/css" rel="stylesheet" href="content.css">
      8   <script type="text/javascript" src="scripts/menu.js"></script>  
      9 </head>
     10 <body>
     11 
     12 <div id="page">
     13 <!--#include virtual="menu.html.incl"-->
     14 <div id="content">
     15 
     16 <h1>C++ Support</h1>
     17 
     18 <p>The Clang compiler <a
     19 href="http://clang.llvm.org/cxx_status.html">supports almost all of C++11</a>.
     20 Support in the frontend for C++ language features, however, does not
     21 automatically translate into support for those features in the static analyzer.
     22 Language features need to be specifically modeled in the static analyzer so
     23 their semantics can be properly analyzed. Support for analyzing C++ and
     24 Objective-C++ files is currently fairly basic.</p>
     25 
     26 <p>Listed here are a set of open tasks that are prerequisites for
     27 decent analysis of C++.  This list is also not complete; new tasks
     28 will be added as deemed necessary.</p>
     29 
     30 <ul>
     31   <li>Control-Flow Graph Enhancements:
     32   <ul>
     33     <li>Model destructors for temporary objects</li>
     34     <li>Model the implicit allocator call to <tt>operator new</tt></li>
     35   </ul>
     36   </li>
     37   <li>Path-Sensitive Analysis Engine (ExprEngine):
     38   <ul>
     39     <li>Allow constructors to be inlined</li>
     40     <li>Allow destructors to be inlined</li>
     41     <li>Fully model <tt>new</tt> and <tt>delete</tt></li>
     42     <li>Track type info through casts more precisely</li>
     43   </ul>
     44   </li>
     45   <li>Checkers:
     46   <ul>
     47     <li>Check that <tt>new</tt> and <tt>delete</tt> are correctly paired</li>
     48     <li>For more ideas, see the <a href="potential_checkers.html">list of potential checkers</a></li>
     49   </ul>
     50   </li>
     51 </ul>
     52 
     53 </div>
     54 </div>
     55 </body>
     56 </html>
     57 
     58