GUI: Add help files that replace the gui-manual.md

This commit is contained in:
Daniel Marjamäki 2020-07-19 21:40:17 +02:00
parent 4a76dbb632
commit 0a84a1fad7
6 changed files with 316 additions and 270 deletions

View File

@ -0,0 +1,22 @@
<html>
<head>
<title>Investigating warnings</title>
</head>
<body>
<h1>Investigating warnings</h1>
<p>When you have run the analysis it is time to look at the results.</p>
<p>If you click on a warning then the corresponding code will be shown in the
&quot;Warning details&quot; at the bottom.</p>
<p>You can right click warnings to get options. The difference of
&quot;hiding&quot; a warning and &quot;suppressing&quot; a warning is that
the suppression is permanent and hiding the warning is only temporary. When
suppressing warning(s), that is saved in the project file.
</body>
</html>

74
gui/help/preferences.html Normal file
View File

@ -0,0 +1,74 @@
<html>
<head>
<title>Preferences</title>
</head>
<body>
<h1>Preferences</h1>
<p><b>Number of threads</b><br>Number of threads to use in analysis. Each
thread checks its own source file.</p>
<p><b>Force checking of all #ifdef configurations</b><br>Cppcheck try to check
all code and will therefore guess different preprocessor configurations. The
maximum number of configurations that is checked is 14 by default.</p>
<p><b>Show full path of files</b><br>Show the full paths in the results.</p>
<p><b>Show &quot;No errors found&quot; message when no errors found</b><br>
If you want to get a message box about this.</p>
<p><b>Display error id column &quot;Id&quot;</b><br>Show error id in results</p>
<p><b>Enable inline suppressions</b><br>You can suppress warnings with comments.
See the Cppcheck manual (http://cppcheck.sf.net/manual.pdf) for more information
about inline suppressions.</p>
<p><b>Check for inconclusive errors also</b><br>When full analysis of the code
can not determine if there should be a warning or not, it is inconclusive.
Normally Cppcheck does not warn then.</p>
<p><b>Show statistics on check completion</b><br>Show statistics in a window
when analysis finish.</p>
<p><b>Show internal warnings in log</b><br>Internal warnings (for debugging) is
shown in the <i>Analysis log</i>.</p>
<p><b>Applications</b><br>Configure external editor to open from context menu
when you right click on a warning.</p>
<p><b>Save all errors when creating report</b><br>If hidden warnings should be
saved or not.</p>
<p><b>Save full path to files in report</b><br>If you use <i>Root path</i> the
warnings on the screen will not have the full path.</p>
<p><b>Language</b><br>Configure language to use for GUI.</p>
<p><b>Python binary</b><br>To be able to execute addons, Cppcheck needs to know
where python is. Unless you configure something, Cppcheck will try to execute
python in your PATH.</p>
<p><b>Misra rule texts</b><br>Only needed if you want to use the Misra addon.
Cppcheck is not legally allowed to distribute the Misra rule texts and these
must be provided by users. The Misra rule texts are proprietary. An example
rule text file:
<blockquote><pre>Appendix A Summary of guidelines
Rule 1.1
Text of rule 1.1
Rule 1.2
Text of rule 1.2</pre></blockquote>
</p>
<p><b>Clang path</b><br>The path to <i>clang</i> binary. If no path is provided
then system PATH is used.</p>
<p><b>Visual studio headers</b><br>If you want to use the Visual Studio headers
in the analysis you can provide the path(s) here. Hint: Open a visual studio
command prompt and type <i>SET INCLUDE</i>. Then copy/paste the paths.</p>
<p><b>Code editor style</b><br>The visual theme to use for the code editor that
is used when you investigate results.</p>
</body>
</html>

View File

@ -0,0 +1,181 @@
<html>
<head>
<title>Project File Dialog</title>
</head>
<body>
<h1>Project File Dialog</h1>
<p>The <i>Project file</i> dialog contains 4 tabs:</p>
<ul>
<li>Paths and defines; paths to check and basic preprocessor settings.
<li>Types and Functions; configuration of platform and 3rd party libraries
<li>Analysis; analysis options
<li>Warning options; formatting warnings, suppressing warnings, etc
<li>Addons; extra analysis with addons
</ul>
<h2>Paths and defines</h2>
<p>It is recommended to import a project file.</p>
<h3> Import project</h3>
Project to import. Cppcheck will get:
<ul>
<li>What files to check
<li>Preprocessor defines
<li>Preprocessor include paths
<li>Language standard if set
</ul>
<h3>Paths (If you do not import project)</h3>
<p>What paths to check.</p>
<h3>Defines (If you do not import project)</h3>
<p>Cppcheck automatically checks the code with different preprocessor
configurations.</p>
<blockquote><pre>#ifdef A
code1
#endif
#ifdef B
code2
#endif</pre></blockquote>
<p>Cppcheck will automatically perform analysis both when A is defined and B is
defined. So any bugs in both code1 and code2 will be detected.</p>
<p>If you want to configure that A will always be defined in Cppcheck analysis
you can do that here.</p>
<p>Defines are separated by semicolon. So you can for instance write:</p>
<blockquote><pre>A;B=3;C</pre></blockquote>
<h3>Undefines (If you do not import project)</h3>
<p>Cppcheck automatically checks the code with different preprocessor
configurations.</p>
<blockquote><pre>#ifdef A
code1
#endif
#ifdef B
code2
#endif</pre></blockquote>
<p>Cppcheck will automatically perform analysis both when A is defined and B is
defined. So any bugs in both code1 and code2 will be detected.</p>
<p>If you want to configure that A is never defined in Cppcheck analysis you
can do that here.</p>
<p>Undefines are separated by semicolon. So you can for instance write:</p>
<blockquote><pre>A;C</pre></blockquote>
<h3>Include paths (If you do not import project)</h3>
<p>Specify include paths.</p>
<h2>Types and Functions</h2>
<p>Cppcheck uses the <i>Platform</i> setting to determine size of
short/int/long/pointer/etc.</p>
<p>Check the libraries that you use in the <i>Libraries</i> listbox.</p>
<h2>Analysis</h2>
<h3>Cppcheck build dir</h3>
<p>This is a work-folder that Cppcheck uses. Each Cppcheck project should have
a separate build dir. It is used for:</p>
<ul>
<li>whole program analysis
<li>debug output
<li>faster analysis (if a source file has changed check it, if source file is
not changed then reuse old results)
<li>statistics
</ul>
<h3>Parser</h3>
<p>It is in general recommended to use Cppcheck parser. However you can choose
to use Clang parser; Clang will be executed with a command line flag that tells
it to dump its AST and Cppcheck will read that AST and convert it into a
corresponding Cppcheck AST and use that.</p>
<h3>Analysis</h3>
<p>Configure what kind of analysis you want.</p>
<p>The <i>Normal analysis</i> is recommended for most use cases. Especially if
you use Cppcheck in CI.</p>
<p>The <i>Bug hunting</i> can be used if you really want to find a bug in your
code and can invest time looking at bad results and providing extra
configuration.</p>
<h3>Limit analysis</h3>
<p>You can turn off checking of headers. That could be interesting if Cppcheck
is very slow. But normally, you should check the code in headers.</p>
<p>It is possible to check the code in unused templates. However the Cppcheck
AST will be incomplete/wrong. The recommendation is that you do not check
unused templates to avoid wrong warnings. The templates will be checked
properly when you do use them.</p>
<p>Max CTU depth: How deep should the whole program analysis be. The risk with
a &quot;too high&quot; value is that Cppcheck will be slow.</p>
<p>Max recursion in template instantiation: Max recursion when Cppcheck
instantiates templates. The risk with a &quot;too high&quot; value is that
Cppcheck will be slow and can require much memory.</p>
<h2>Warning options</h2>
<h3>Root path</h3>
<p>The root path for warnings. Cppcheck will strip away this part of the path
from warnings. For instance if there is a warning in
<pre>../myproject/foo/bar/file.cpp</pre> and the root path is
<pre>../myproject/foo</pre> then the path for the warning will be
<pre>bar/file.cpp</pre>.</p>
<h3>Warning Tags</h3>
<p>Tags allow you to manually categorize warnings.</p>
<h3>Exclude source files</h3>
<p>Excluded source files will not be analyzed by Cppcheck.</p>
<h3>Suppressions</h3>
<p>List of suppressions. These warnings will not be shown.</p>
<h2>Addons</h2>
<p><b>Y2038</b><br>32-bit timers that count number of seconds since 1970 will
overflow in year 2038. Check that the code does not use such timers.</p>
<p><b>Thread safety</b><br>Check that the code is thread safe</p>
<p><b>Cert</b><br>Ensure that the Cert coding standard is followed</p>
<p><b>Misra</b><br>Ensure that the Misra coding standard is followed. Please
note you need to have a textfile with the misra rule texts to get proper
warning messages. Cppcheck is not legally allowed to distribute the misra
rule texts.</p>
<p><b>Clang-tidy</b><br>Run Clang-tidy</p>
</body>
</html>

View File

@ -0,0 +1,17 @@
<html>
<head>
<title>Standalone analysis</title>
</head>
<body>
<h1>Standalone analysis</h1>
<p>It is possible to quickly analyze files. Open the <i>Analyze</i> menu and click on
either <i>Files...</i> or <i>Directory...</i>.</p>
<p>It is recommended that you create a project for analysis. A properly configured
project will give you better analysis.</p>
</body>
</html>

22
gui/help/tagging.html Normal file
View File

@ -0,0 +1,22 @@
<html>
<head>
<title>Tagging warnings</title>
</head>
<body>
<h1>Tagging warnings</h1>
<p>You can manually categorize warnings.</p>
<p>You choose the names of the categories yourself in the project file
dialog.</p>
<p>If tag names are configured, then you can tag the warnings by
right-clicking on them and selecting the proper tag in the
context menu.</p>
<p>Tags are saved in the project file and will be permanent.</p>
</body>
</html>

View File

@ -1,270 +0,0 @@
---
title: Cppcheck GUI manual
subtitle: Version 2.1.99
author: Cppcheck team
lang: en
documentclass: report
---
# Standalone analysis
It is possible to quickly analyze files. Open the `Analyze` menu and click on
either `Files...` or `Directory...`.
It is recommended that you create a project for analysis. A properly configured
project will give you better analysis.
# Project
## Creating project
Open the `File` menu and click on `New project...`.
## Project options
The `Project file` dialog contains 4 tabs:
- Paths and defines; paths to check and basic preprocessor settings.
- Types and Functions; configuration of platform and 3rd party libraries
- Analysis; analysis options
- Warning options; formatting warnings, suppressing warnings, etc
- Addons; extra analysis with addons
### Paths and defines
It is recommended to import a project file.
#### Import project
Project to import. Cppcheck will get:
* what files to check
* preprocessor defines
* preprocessor include paths
* language standard if set
#### Paths (If you do not import project)
What paths to check.
#### Defines (If you do not import project)
Cppcheck automatically checks the code with different preprocessor configurations.
#ifdef A
code1
#endif
#ifdef B
code2
#endif
Cppcheck will automatically perform analysis both when A is defined and B is
defined. So any bugs in both code1 and code2 will be detected.
If you want to configure that A will always be defined in Cppcheck analysis you
can do that here.
Defines are separated by semicolon. So you can for instance write:
A;B=3;C
#### Undefines (If you do not import project)
Cppcheck automatically checks the code with different preprocessor configurations.
#ifdef A
code1
#endif
#ifdef B
code2
#endif
Cppcheck will automatically perform analysis both when A is defined and B is
defined. So any bugs in both code1 and code2 will be detected.
If you want to configure that A is never defined in Cppcheck analysis you can
do that here.
Undefines are separated by semicolon. So you can for instance write:
A;C
#### Include paths (If you do not import project)
Specify include paths.
### Types and Functions
Cppcheck uses `Platform` setting to determine size of short/int/long/pointer/etc.
Check the libraries that you use in the `Libraries` listbox.
### Analysis
#### Cppcheck build dir
This is a work-folder that Cppcheck uses. Each Cppcheck project should have a
separate build dir. It is used for:
* whole program analysis
* debug output
* faster analysis (if a source file has changed check it, if source file is
not changed then reuse old results)
* statistics
#### Parser
It is in general recommended to use Cppcheck parser. However you can choose to
use Clang parser; Clang will be executed with a command line flag that tells it
to dump its AST and Cppcheck will read that AST and convert it into a
corresponding Cppcheck AST and use that.
#### Analysis
Configure what kind of analysis you want.
The `Normal analysis` is recommended for most use cases. Especially if you use
Cppcheck in CI.
The `Bug hunting` can be used if you really want to find a bug in your code
and can invest time looking at bad results and providing extra configuration.
#### Limit analysis
You can turn off checking of headers. That could be interesting if Cppcheck is
very slow. But normally, you should check the code in headers.
It is possible to check the code in unused templates. However the Cppcheck AST
will be incomplete/wrong. The recommendation is that you do not check unused
templates to avoid wrong warnings. The templates will be checked properly when
you do use them.
Max CTU depth: How deep should the whole program analysis be. The risk with a
"too high" value is that Cppcheck will be slow.
Max recursion in template instantiation: Max recursion when Cppcheck
instantiates templates. The risk with a "too high" value is that Cppcheck will
be slow and can require much memory.
### Warning options
#### Root path
The root path for warnings. Cppcheck will strip away this part of the path
from warnings. For instance if there is a warning in
`../myproject/foo/bar/file.cpp` and the root path is `../myproject/foo` then
the path for the warning will be `bar/file.cpp`.
#### Warning Tags
Tags allow you to manually categorize warnings.
#### Exclude source files
Excluded source files will not be analyzed by Cppcheck
#### Suppressions
List of suppressions. These warnings will not be shown.
### Addons
Y2038 - 32-bit timers that count number of seconds since 1970 will overflow in
year 2038. Check that the code does not use such timers.
Thread safety - Check that the code is thread safe
Cert - Ensure that the Cert coding standard is followed
Misra - Ensure that the Misra coding standard is followed. Please note you
need to have a textfile with the misra rule texts to get proper warning
messages. Cppcheck is not legally allowed to distribute the misra rule texts.
Clang-tidy - Run Clang-tidy
# Preferences
`Number of threads`: Number of threads to use in analysis. Each thread checks
its own source file.
`Force checking of all #ifdef configurations`: Cppcheck try to check all code
and will therefore guess different preprocessor configurations. The maximum
number of configurations that is checked is 14 by default.
`Show full path of files`: Show the full paths in the results.
`Show "No errors found" message when no errors found`: If you want to get a
message box about this.
`Display error id column "Id"`: Show error id in results
`Enable inline suppressions`: You can suppress warnings with comments. See the
Cppcheck manual (http://cppcheck.sf.net/manual.pdf) for more information about
those.
`Check for inconclusive errors also`: When full analysis of the code can not
determine if there should be a warning or not, it is inconclusive. Normally
Cppcheck does not warn then.
`Show statistics on check completion`: Show statistics in a window when
analysis finish.
`Show internal warnings in log`: Internal warnings (for debugging) is shown
in the `Analysis log`.
`Applications`: Configure external editor to open from context menu when you
right click on a warning.
`Save all errors when creating report`: If hidden warnings should be saved or
not.
`Save full path to files in report`: If you use `Root path` the warnings on the
screen will not have the full path.
`Language`: Configure language to use for GUI.
`Python binary`: To be able to execute addons, Cppcheck needs to know where
python is. Unless you configure something, Cppcheck will try to execute python
in your PATH.
`Misra rule texts`: Only needed if you want to use the Misra addon. Cppcheck is
not legally allowed to distribute the Misra rule texts and these must be
provided by users. The Misra rule texts are proprietary. An example rule text
file can be found here: https://github.com/danmar/cppcheck/blob/main/addons/test/misra/misra2012_rules_dummy_ascii.txt
`Clang path`: The path to `clang` binary. If no path is provided then system
PATH is used.
`Visual studio headers`: If you want to use the Visual Studio headers in the
analysis you can provide the path(s) here. Hint: Open a visual studio command
prompt and type `SET INCLUDE`. Then copy/paste the paths.
`Code editor style`: The visual theme to use for the code editor that is used
when you investigate results.
# Looking at results
When you have run the analysis it is time to look at the results.
If you click on a warning then the corresponding code will be shown in the
"Warning details" at the bottom.
You can right click warnings to get options. The difference of "hiding" a
warning and "suppressing" a warning is that the suppression is permanent and
hiding the warning is only temporary.
# Tagging warnings
You can manually categorize warnings.
You choose the names of the categories yourself in the project file dialog.
If tag names are configured then when you look at results you can right click
on a warning and tag it.