cppcheck/tools
Oliver Stöneberg 3bafe164a3
enabled some clang-tidy warnings for non-GUI code (#5679)
There are some clang-tidy warnings which cannot properly handle the
extensions used in the Qt code so the produce lots of false positives
and were previously enabled. With clang-tidy now offering the
possibility to inherit the parent configuration we can enable these
across the project and simply disable them for the GUI code.

No additional warnings were found as they were already fixed in earlier
commits without enabling the checks in question.
2023-11-20 10:06:46 +01:00
..
bisect Typos and stilistic updates (#5141) 2023-06-14 12:30:45 +02:00
defines refs #11928 / refs #10045 / fixes #11794 - generate `limits.h`/`climits` defines from platform (#5414) 2023-10-21 17:21:12 +02:00
test tools/test: Make scripts executable (#2509) 2020-01-27 06:53:58 +01:00
triage enabled some clang-tidy warnings for non-GUI code (#5679) 2023-11-20 10:06:46 +01:00
triage_py Typos and stilistic updates (#5141) 2023-06-14 12:30:45 +02:00
CMakeLists.txt use `ccache` for sanitizer builds / do not use precompiled headers with `ccache` (#4910) 2023-04-01 09:40:10 +02:00
MT-Unsafe.py The threadsafety.py addon now flags MT-Unsafe symbols and functions. (#5086) 2023-06-08 14:46:09 +02:00
ci.py use python3 on debians too (#3812) 2022-11-03 22:14:30 +01:00
compare.cs added .gitattributes and normalized files (#4668) 2022-12-30 21:33:45 +01:00
compare_ast_symdb.py extended the Python script checks in the CI and adjusted some scripts (#3186) 2021-03-31 22:09:42 +02:00
creduce.py Add creduce.py script to run creduce (#3341) 2021-07-18 07:51:01 +02:00
daca2-download.py daca2: Improve package sorting using natsort (#2505) 2020-01-26 18:39:37 +01:00
daca2-getpackages.py some Python cleanups based on PyCharm inspections (#2999) 2021-01-31 14:27:11 +01:00
dmake.cpp fixed #12145 - provided order of source files is not preserved (#5625) 2023-11-07 21:21:24 +01:00
dmake.vcxproj fixed #12145 - provided order of source files is not preserved (#5625) 2023-11-07 21:21:24 +01:00
donate-cpu-server.py donate-cpu-server.py: fixed "top x" reports / some cleanups (#5475) 2023-09-22 15:18:16 +02:00
donate-cpu.py donate-cpu: some small improvements (#5585) 2023-10-23 12:53:34 +02:00
donate_cpu_lib.py fixed #12099 - daca: missing diff entries (#5586) 2023-11-01 22:58:33 +01:00
extract_and_run_more_tests.sh fixed/excluded some shellcheck warnings and actually fail the build when something is found (#3068) 2021-01-20 18:43:49 +01:00
extracttests.py use python3 on debians too (#3812) 2022-11-03 22:14:30 +01:00
generate_and_run_more_tests.sh Fix for 6597: false negative: uninitialized variable usage not detected (ValueFlow , multi variables) (#3535) 2021-10-30 22:13:58 +02:00
get_checkers.py Ticket #11897. Write Autosar/Cert C/Cert C++/Misra C++ in the checkers report also. (#5400) 2023-09-03 20:42:09 +02:00
git-pre-commit-cppcheck Missing return value in git-pre-commit-cppcheck (#1382) 2018-09-21 04:56:53 +02:00
listErrorsWithoutCWE.py use python3 on debians too (#3812) 2022-11-03 22:14:30 +01:00
matchcompiler.py use python3 on debians too (#3812) 2022-11-03 22:14:30 +01:00
parse-glibc.py added .gitattributes and normalized files (#4668) 2022-12-30 21:33:45 +01:00
readme.md tools/readme.md: Remove astyle_client description (#3115) 2021-02-07 09:03:37 +01:00
reduce.py use python3 on debians too (#3812) 2022-11-03 22:14:30 +01:00
run-coverity.sh run-coverity: updated coverity tool 2022-02-18 19:55:45 +01:00
run_more_tests.sh ValueFlow: Evaluate if statement for function returns (#4908) 2023-03-24 13:31:26 +01:00
test-my-pr.py Fix #11813 (daca: script crashes (UnicodeDecodeError) when checking package lgeneral) (#5217) 2023-07-04 19:17:26 +02:00
test_donate_cpu_lib.py donate-cpu: fixed #11276 (donate-cpu: Improve library detection) / respect `--no-upload` in "nodata" uploads (#5292) 2023-08-04 10:30:58 +02:00
test_donate_cpu_server.py refs #10700 - donate-cpu-server.py: added query parameter `pkgs` to some reports to request a list of affected packages (#3743) 2022-09-29 21:55:44 +02:00
test_matchcompiler.py use python3 on debians too (#3812) 2022-11-03 22:14:30 +01:00
test_reduce.py Typos found by running "codespell" (#4260) 2022-07-10 22:40:05 +02:00
testrunnerify_code.sh fix a couple of issues in shell scripts found by codacy. 2016-12-25 00:43:47 +01:00
trac-keywords.py extended the Python script checks in the CI and adjusted some scripts (#3186) 2021-03-31 22:09:42 +02:00

readme.md

Cppcheck developer and build tools

* tools/matchcompiler.py

The matchcompiler.py is a build script that performs a few code transformations to .cpp files under the lib directory. These transformations are related to the use of Token::Match() function and are intended to improve code performance. The transformed files are saved on the build directory. This tool is silently used when building the code with SRCDIR=build, that is:

$ cd path/to/cppcheck
$ make MATCHCOMPILER=yes

Here is a simple example of the matchcompiler.py optimization. Suppose there is a file example.cpp under lib/:

// lib/example.cpp
void f1() {
    Token::Match(tok, "abc");
}

void f2() {
    const char *abc = "abc";
    Token::Match(tok, abc);
}

If you manually run matchcompiler.py from the main directory:

$ cd path/to/cppcheck
$ python tools/matchcompiler.py

A file example.cpp will be generated on the build directory:

// build/example.cpp
#include "token.h"
#include "errorlogger.h"
#include <string>
#include <cstring>
static const std::string matchStr1("abc");
// pattern: abc
static bool match1(const Token* tok) {
    if (!tok || !(tok->str()==matchStr1)/* abc */)
        return false;
    return true;
}
void f1() {
    match1(tok);
}

void f2() {
    const char *abc = "abc";
    Token::Match(tok, abc);
}

From this we can see that the usage of Token::Match() in f1() has been optimized, whereas the one in f2() couldn't be optimized (the string wasn't inline on the Token::Match() call). The developer doesn't need to use this tool during development but should be aware of these optimizations. Building with this optimization, cppcheck can get a boost of 2x of speed-up.

* tools/dmake.cpp

Automatically generates the main Makefile for Cppcheck (the main Makefile should not be modified manually). To build and run the dmake tool execute:

$ cd path/to/cppcheck
$ make dmake
$ ./dmake

* tools/reduce.py

Script that reduces code for a hang/false positive.

* tools/times.sh

Script to generate a times.log file that contains timing information of the last 20 revisions.

* tools/donate-cpu.py

Script to donate CPU time to Cppcheck project by checking current Debian packages.

* tools/test-my-pr.py

Script to compare result of working Cppcheck from your branch with main branch.

* tools/triage

This tool lets you comfortably look at Cppcheck analysis results for daca packages. It automatically downloads the package, extracts it and jumps to the corresponding source code for a Cppcheck message.