cppcheck/tools
Sebastian fe6f4193fd donate-cpu.py: Fix Python3 compatibility problem with f.read().decode() (#1507)
With Python3 f.read() directly returns a string object that has no
decode() function. As a workaround AttributeError exceptions during
calling the decode() function are ignored and the data read from the file
is left unchanged.
With Python2 calling the decode() function is necessary and still done.
2018-12-07 06:51:07 +01:00
..
triage triage: better handling of daca@home results 2018-11-25 12:59:08 +01:00
ci.py Improve Python code 2017-06-04 22:51:48 +02:00
clang-ast.cpp clang-ast: print constructors and destructors 2018-04-30 15:42:40 +02:00
compare-ast-clang-and-cppcheck.py some small *.py script cleanup (#1328) 2018-08-05 20:36:21 +02:00
compare.cs tools/compare.cs: changed format for error message 2018-02-15 15:17:04 +01:00
daca-test-patch.sh Added script that tests a patch with daca 2018-08-04 09:42:55 +02:00
daca2-download.py Improve Python code 2017-07-22 11:05:50 +02:00
daca2-logs2git.sh daca2: add script which crawls the daca logs and feeds them into a git repository. 2017-09-03 22:31:36 +02:00
daca2-report.py daca2-report: use 'diff' tool 2018-08-14 17:49:27 +02:00
dmake.cpp Disable shadow warnings when compiling 2018-11-19 09:25:59 +01:00
dmake.sln dmake: Fix windows project and build (#1091) 2018-02-17 06:31:12 +01:00
dmake.vcxproj dmake: Fix windows project and build (#1091) 2018-02-17 06:31:12 +01:00
donate-cpu-server.py donate-cpu-server: restore handling of crashes. do not recheck. 2018-12-02 07:10:23 +01:00
donate-cpu.py donate-cpu.py: Fix Python3 compatibility problem with f.read().decode() (#1507) 2018-12-07 06:51:07 +01:00
extract_and_run_more_tests.sh Testing: extract testcases, edit comparisons, run cppcheck, compare results 2015-07-22 09:52:24 +02:00
extracttests.py Updated copyright year 2018-01-14 15:37:52 +01:00
generate_and_run_more_tests.sh generate_and_run_more_tests: Add testuninitvar 2015-07-26 11:29:02 +02:00
generate_cfg_tests.cpp generate_cfg_tests: fix argument count 2018-03-19 20:46:55 +01:00
git-pre-commit-cppcheck Missing return value in git-pre-commit-cppcheck (#1382) 2018-09-21 04:56:53 +02:00
listErrorsWithoutCWE.py Improve Python code 2017-07-22 11:05:50 +02:00
matchcompiler.py Updated copyright year 2018-03-31 20:59:09 +02:00
parse-glibc.py Improve Python code 2017-06-05 13:23:00 +02:00
pr.py tools/pr.py: minor tweak 2018-11-20 06:36:08 +01:00
readme.md PEP8 fixes. 2015-08-21 11:59:52 +03:00
reduce.cpp Updated copyright year 2018-01-14 15:37:52 +01:00
reduce.py Add executable bit to reduce.py 2018-03-21 09:13:26 +01:00
run-coverity.sh Updated run-coverity.sh script 2018-05-05 15:23:35 +02:00
run_more_tests.sh tools/run_more_tests.sh: Fixed comment 2018-02-02 11:27:38 +01:00
test_matchcompiler.py Updated copyright year 2018-01-14 15:37:52 +01:00
test_showtimetop5.sh Correct script 2017-05-03 21:09:20 +02:00
testrunnerify_code.sh fix a couple of issues in shell scripts found by codacy. 2016-12-25 00:43:47 +01:00
times-tags.sh fix a couple of issues in shell scripts found by codacy. 2016-12-25 00:43:47 +01:00
times-vs.py Improve Python code 2017-06-04 22:51:48 +02:00
times.c tools: allow short SHA1 longer than 7 (#1399) 2018-09-28 19:04:39 +02:00
times.sh fix a couple of issues in shell scripts found by codacy. 2016-12-25 00:43:47 +01:00
trac-keywords.py python formatting. Run autopep8 and replace tabs with spaces. 2018-02-13 09:26:11 +01: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 SRCDIR=build

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.cpp

Cppcheck tool that reduces code for a hang/false positive. To build the tool run:

$ cd path/to/cppcheck
$ make reduce

* tools/times.sh

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