<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 "too high" value is that Cppcheck will be slow.</p> <p>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.</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>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>