Commit 4cfb91f1 authored by Gabor Marton's avatar Gabor Marton
Browse files

[Analyzer][Docs][NFC] Add CodeChecker to the command line tools

We add a new common html file that documents the available command line
tools. Also a new html is added for a brief description of CodeChecker,
this way complementing scan-build.

Differential Revision: https://reviews.llvm.org/D70439
parent e39e2b4a
Loading
Loading
Loading
Loading
+73 −0
Original line number Diff line number Diff line
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>CodeChecker: running the analyzer from the command line</title>
  <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>CodeChecker: running the analyzer from the command line</h1>

<h2>Basic Usage</h2>

<p>
Install CodeChecker as described here: <a href="https://github.com/Ericsson/codechecker/#Install-guide"> CodeChecker Install Guide.</a>
</p>

<p>
Create a compilation database. If you use cmake then pass the <tt>-DCMAKE_EXPORT_COMPILE_COMMANDS=1</tt> parameter to cmake. Cmake will create a <tt>compile_commands.json</tt> file.
If you have a Makefile based or similar build system then you can log the build commands with the help of CodeChecker:
<pre class="code_example">
make clean
CodeChecker log -b "make" -o compile_commands.json
</pre>
</p>

<p>
Analyze your project.
<pre class="code_example">
CodeChecker analyze compile_commands.json -o ./reports
</pre>
</p>

<p>
View the analysis results.
Print the detailed results in the command line:
<pre class="code_example">
CodeChecker parse --print-steps ./reports
</pre>
Or view the detailed results in a browser:
<pre class="code_example">
CodeChecker parse ./reports -e html -o ./reports_html
firefox ./reports_html/index.html
</pre>
</p>

<p>
Optional: store the analysis results in a DB.
<pre class="code_example">
mkdir ./ws
CodeChecker server -w ./ws -v 8555 &
CodeChecker store ./reports --name my-project --url http://localhost:8555/Default
</pre>
</p>

<p>
Optional: manage (categorize, suppress) the results in your web browser:
<pre class="code_example">
firefox http://localhost:8555/Default
</pre>
</p>

<h2>Detailed Usage</h2>

<p>
For extended documentation please refer to the <a href="https://github.com/Ericsson/codechecker/blob/master/docs/usage.md">official site of CodeChecker</a>!
</p>
+67 −0
Original line number Diff line number Diff line
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Running the analyzer from the command line</title>
  <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>Running the analyzer from the command line</h1>

<p> Static Analyzer is by design a GUI tool. Its purpose is to find buggy execution
paths in the program, and such paths are very hard to comprehend by looking at
a non-interactive standard output. It is possible, however, to invoke the
Static Analyzer from the command line in order to obtain analysis results, and
then later view them interactively in a graphical interface. The following
tools are used commonly to run the analyzer from the command line. Both tools
are wrapper scripts to drive the analysis and the underlying invocations of the
Clang compiler:
<ol>
  <li><a href="scan-build.html">Scan-Build</a>
    is an old and simple command-line tool that emits static analyzer warnings as HTML files while compiling your project. You can view the analysis results in your web browser.
  </li>
  <ul>
    <li>
      Useful for individual developers who simply want to view static analysis results at their desk, or in a very simple collaborative environment.
    </li>
    <li>
      Works on all major platforms (Windows, Linux, macOS) and is available as a package in many Linux distributions.
    </li>
    <li>
      Does not include support for cross-translation-unit analysis.
    </li>
  </ul>
  <li><a href="codechecker.html">CodeChecker</a>
     is a web server that runs the Static Analyzer on your projects on demand and maintains a database of issues.
  </li>
  <ul>
    <li>
      Perfect for managing large amounts of Static Analyzer warnings in a collaborative environment.
    </li>
    <li>
      Generally much more feature-rich than scan-build.
    </li>
    <li>Supports incremental analysis: Results can be stored in a database, subsequent analysis runs can be compared to list the newly added defects.</li>
    <li><a href="https://clang.llvm.org/docs/analyzer/user-docs/CrossTranslationUnit.html">Cross Translation Unit (CTU) analysis</a> is supported fully on Linux via CodeChecker.</li>
    <li>Can run clang-tidy checkers too.</li>
    <li>Open source, but out-of-tree, i.e. not part of the LLVM project.</li>
  </ul>
</ol>
</p>

<p>
</p>
<p>
</p>

</div>
</div>
</body>
</html>
+3 −3
Original line number Diff line number Diff line
@@ -72,9 +72,9 @@
<p>The Clang Static Analyzer is a source code analysis tool that finds bugs in
C, C++, and Objective-C programs.</p>

<p>Currently it can be run either as a <a href="scan-build.html">standalone
tool</a> or <a href="xcode.html">within Xcode</a>. The standalone tool is
invoked from the command line, and is intended to be run in tandem with a build
<p>Currently it can be run either from the <a href="command-line.html">command
  line</a> or if you use macOS then <a href="xcode.html">within Xcode</a>. When
invoked from the command line, it is intended to be run in tandem with a build
of a codebase.</p>

<p>The analyzer is 100% open source and is part of the <a