• Home
  • Raw
  • Download

Lines Matching +full:hardcode +full:- +full:script

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
5 <title>scan-build: running the analyzer from the command line</title>
8 <script type="text/javascript" src="scripts/menu.js"></script>
13 <!--#include virtual="menu.html.incl"-->
16 <h1>scan-build: running the analyzer from the command line</h1>
18 <table style="margin-top:0px" width="100%" cellpadding="0px" cellspacing="0">
22 <p><b>scan-build</b> is a command line utility that enables a user to run the
34 <p><b>scan-build</b> has little or no knowledge about how you build your code.
43 the best use of <b>scan-build</b>, which includes getting it to work when the
47 <td style="padding-left:10px; text-align:center">
48 <img src="images/scan_build_cmd.png" width="450px" alt="scan-build"><br>
61 <li><a href="#scanbuild_output">Output of scan-build</a></li>
67 <li><a href="#recommended_verbose">Use Verbose Output when Debugging scan-build</a></li>
68 <li><a href="#recommended_autoconf">Run './configure' through scan-build</a></li>
76 <p>The <tt>scan-build</tt> command can be used to analyze an entire project by
78 analyzer using <tt>scan-build</tt>, you will use <tt>scan-build</tt> to analyze
84 <p>Basic usage of <tt>scan-build</tt> is designed to be simple: just place the
85 word &quot;scan-build&quot; in front of your build command:</p>
88 $ <span class="code_highlight">scan-build</span> make
89 $ <span class="code_highlight">scan-build</span> xcodebuild
92 <p>In the first case <tt>scan-build</tt> analyzes the code of a project built
93 with <tt>make</tt> and in the second case <tt>scan-build</tt> analyzes a project
96 <p>Here is the general format for invoking <tt>scan-build</tt>:</p>
99 $ <span class="code_highlight">scan-build</span> <i>[scan-build options]</i> <span class="code_high…
102 <p>Operationally, <tt>scan-build</tt> literally runs &lt;command&gt; with all of the
103 subsequent options passed to it. For example, one can pass <tt>-j4</tt> to
107 $ scan-build make <span class="code_highlight">-j4</span>
110 <p>In almost all cases, <tt>scan-build</tt> makes no effort to interpret the
112 <tt>scan-build</tt> should support parallel builds, but <b>not distributed
115 <p>It is also possible to use <tt>scan-build</tt> to analyze specific
119 $ scan-build gcc -c <span class="code_highlight">t1.c t2.c</span>
127 <p>Windows users must have Perl installed to use scan-build.</p>
129 <p><tt>scan-build.bat</tt> script allows you to launch scan-build in the same
130 way as it described in the Basic Usage section above. To invoke scan-build from
131 an arbitrary location, add the path to the folder containing scan-build.bat to
134 <p>If you have unexpected compilation/make problems when running scan-build
141 <li> Use MinGW <tt>mingw32-make</tt> instead of MSYS <tt>make</tt> and
142 exclude the path to MSYS from PATH to prevent <tt>mingw32-make</tt> from using
148 $ <span class="code_highlight">scan-build</span> <i>[scan-build options]</i> sh -c "make <i>[make o…
157 <p>As mentioned above, extra options can be passed to <tt>scan-build</tt>. These
161 $ scan-build <span class="code_highlight">-k -V</span> make
162 $ scan-build <span class="code_highlight">-k -V</span> xcodebuild
171 <tr><td><b>-o</b></td><td>Target directory for HTML report files. Subdirectories
176 <tr><td><b>-h</b><br><i>(or&nbsp;no&nbsp;arguments)</i></td><td>Display all
177 <tt>scan-build</tt> options.</td></tr>
179 <tr><td><b>-k</b><br><b>--keep-going</b></td><td>Add a "keep on
184 <tr><td><b>-v</b></td><td>Verbose output from scan-build and the analyzer. <b>A
185 second and third "-v" increases verbosity</b>, and is useful for filing bug
188 <tr><td><b>-V</b></td><td>View analysis results in a web browser when the build
191 <tr><td><b>--use-analyzer Xcode</b><br><i>or</i><br>
192 <b>--use-analyzer [path to clang]</b></td><td><tt>scan-build</tt> uses the
197 <p>A complete list of options can be obtained by running <tt>scan-build</tt>
200 <h3 id="scanbuild_output">Output of scan-build</h3>
203 The output of scan-build is a set of HTML files, each one which represents a
210 Where the HTML files are generated is specified with a <b>-o</b> option to
211 <tt>scan-build</tt>. If <b>-o</b> isn't specified, a directory in <tt>/tmp</tt>
212 is created to store the files (<tt>scan-build</tt> will print a message telling
214 completes, pass <b>-V</b> to <tt>scan-build</tt>.
229 <p>Another option is to use <tt>--force-analyze-debug-code</tt> flag of
230 <b>scan-build</b> tool which would enable assertions automatically.</p>
232 <h3 id="recommend_verbose">Use verbose output when debugging scan-build</h3>
234 <p><tt>scan-build</tt> takes a <b>-v</b> option to emit verbose output about
235 what it's doing; two <b>-v</b> options emit more information. Redirecting the
236 output of <tt>scan-build</tt> to a text file (make sure to redirect standard
237 error) is useful for filing bug reports against <tt>scan-build</tt> or the
241 <h3 id="recommended_autoconf">Run './configure' through scan-build</h3>
243 <p>If an analyzed project uses an autoconf generated <tt>configure</tt> script,
244 you will probably need to run <tt>configure</tt> script through
245 <tt>scan-build</tt> in order to analyze the project.</p>
250 $ scan-build ./configure
251 $ scan-build make
255 <tt>scan-build</tt> is because <tt>scan-build</tt> scans your source files by
257 <tt>scan-build</tt> temporarily setting the environment variable <tt>CC</tt> to
258 <tt>ccc-analyzer</tt>. The program <tt>ccc-analyzer</tt> acts like a fake
264 <tt>scan-build</tt> that path is set to <tt>ccc-analyzer</tt>.</p>
266 <!--
274 <p>To analyze a project, <tt>scan-build</tt> simply sets the environment variable
275 <tt>CC</tt> to the full path to <tt>ccc-analyzer</tt>. It also sets a few other
276 environment variables to communicate to <tt>ccc-analyzer</tt> where to dump HTML
279 <p>Some Makefiles (or equivalent project files) hardcode the compiler; for such
280 projects simply overriding <tt>CC</tt> won't cause <tt>ccc-analyzer</tt> to be
283 hardcoded. If this is the case, you can hardcode it instead to the <b>full
284 path</b> to <tt>ccc-analyzer</tt>.</p>
287 <tt>scan-build</tt> so that configure sets up the location of <tt>CC</tt> based
288 on the environment passed in from <tt>scan-build</tt>:
291 $ scan-build <b>./configure</b>
294 <p><tt>scan-build</tt> has special knowledge about <tt>configure</tt>, so it in
298 <p>Under the hood, <tt>ccc-analyzer</tt> directly invokes <tt>gcc</tt> to
300 calling <tt>clang</tt>). <tt>ccc-analyzer</tt> tries to correctly forward all
303 -->
308 their cousins for desktop applications. <b>scan-build</b> can analyze these
316 …apple.com/library/ios/recipes/xcode_help-source_editor/chapters/Analyze.html#//apple_ref/doc/uid/T…
325 <h3>Using scan-build directly</h3>
327 <p>If you wish to use <b>scan-build</b> with your iPhone project, keep the
332 this as your configuration with Xcode or by passing <tt>-configuration
342 <b>scan-build</b> in the following manner from the command line:</p>
345 $ scan-build xcodebuild -configuration Debug -sdk iphonesimulator2.2
351 $ scan-build xcodebuild -configuration Debug -sdk iphonesimulator3.0
356 <p>Recall that <b>scan-build</b> analyzes your project by using a compiler to
357 compile the project and <tt>clang</tt> to analyze your project. The script uses
360 iPhone projects, <b>scan-build</b> may pick the wrong compiler than the one
365 <p>When compiling your application to run on the simulator, it is important that <b>scan-build</b>
367 errors that only happen when you run <tt>scan-build</tt>.
369 <p><b>scan-build</b> provides the <tt>--use-cc</tt> and <tt>--use-c++</tt>
370 options to hardwire which compiler scan-build should use for building your code.
376 just running <tt>xcodebuild</tt> (without <b>scan-build</b>). You should see the
378 <tt>--use-cc</tt>.</p>