r314573 - [Analyzer] Document a gotcha: for C++ -analyze-function requires parameters in function name

George Karpenkov via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 29 17:07:23 PDT 2017

Author: george.karpenkov
Date: Fri Sep 29 17:07:22 2017
New Revision: 314573

URL: http://llvm.org/viewvc/llvm-project?rev=314573&view=rev
[Analyzer] Document a gotcha: for C++ -analyze-function requires parameters in function name

Differential Revision: https://reviews.llvm.org/D37596


Modified: cfe/trunk/include/clang/Driver/CC1Options.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=314573&r1=314572&r2=314573&view=diff
--- cfe/trunk/include/clang/Driver/CC1Options.td (original)
+++ cfe/trunk/include/clang/Driver/CC1Options.td Fri Sep 29 17:07:22 2017
@@ -70,7 +70,7 @@ def analyzer_opt_analyze_nested_blocks :
 def analyzer_display_progress : Flag<["-"], "analyzer-display-progress">,
   HelpText<"Emit verbose output about the analyzer's progress">;
 def analyze_function : Separate<["-"], "analyze-function">,
-  HelpText<"Run analysis on specific function">;
+  HelpText<"Run analysis on specific function (for C++ include parameters in name)">;
 def analyze_function_EQ : Joined<["-"], "analyze-function=">, Alias<analyze_function>;
 def analyzer_eagerly_assume : Flag<["-"], "analyzer-eagerly-assume">,
   HelpText<"Eagerly assume the truth/falseness of some symbolic constraints">;

Modified: cfe/trunk/www/analyzer/checker_dev_manual.html
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/www/analyzer/checker_dev_manual.html?rev=314573&r1=314572&r2=314573&view=diff
--- cfe/trunk/www/analyzer/checker_dev_manual.html (original)
+++ cfe/trunk/www/analyzer/checker_dev_manual.html Fri Sep 29 17:07:22 2017
@@ -575,8 +575,8 @@ execute a single checker:
 processing a large file use the  <tt><b>-analyzer-display-progress</b></tt>
-<p>You can analyze a particular function within the file, which is often useful
-because the problem is always in a certain function:</p>
+<p>To selectively analyze only the given function, use the
+<tt><b>-analyze-function</b></tt> option:</p>
 <pre class="code">
     $ <b>clang -cc1 -analyze -analyzer-checker=core test.c -analyzer-display-progress</b>
     ANALYZE (Syntax): test.c foo
@@ -588,6 +588,16 @@ because the problem is always in a certa
     ANALYZE (Path,  Inline_Regular): test.c foo
+<b>Note: </b> a fully qualified function name has to be used when selecting
+C++ functions and methods, Objective-C methods and blocks, e.g.:
+<pre class="code">
+    $ <b>clang -cc1 -analyze -analyzer-checker=core test.cc -analyze-function=foo(int)</b>
+The fully qualified name can be found from the
+<tt><b>-analyzer-display-progress</b></tt> output.
 <p>The bug reporter mechanism removes path diagnostics inside intermediate
 function calls that have returned by the time the bug was found and contain
 no interesting pieces. Usually it is up to the checkers to produce more

More information about the cfe-commits mailing list