cppcheck/tools
Carlo Marcelo Arenas Belón bf5c71bdca sync (#1835)
* build: remove -Wabi and add -Wundef

gcc >= 8 throws a warning about -Wabi (without a specific ABI version)
being ignored, while -Wundef seems more useful (as shown by the change
in config.h, which was probably an unfortunate typo)

travis.yaml should probably be updated soon, but was left out from this
change as the current images don't yet need it

* lib: unused function in valueflow

refactored out since 8c03be3212

lib/valueflow.cpp:3124:21: warning: unused function 'endTemplateArgument' [-Wunused-function]

* readme: include picojson

* make: also clean exe
2019-05-17 09:31:41 +02:00
..
test start_donate_cpu_client_productive.sh: Update client script regularly. 2019-03-06 08:41:16 +01:00
triage triage: add options 'show 100 random results' and 'version' 2019-03-09 11:01:22 +01:00
ci.py
clang-ast.cpp
compare-ast-clang-and-cppcheck.py some small *.py script cleanup (#1328) 2018-08-05 20:36:21 +02:00
compare.cs
daca-test-patch.sh
daca2-download.py Revert "Add semver import for sorting ls-lR list (#1735)" 2019-03-12 06:25:11 +01:00
daca2-getpackages.py daca2-getpackages: more protection when it goes wrong 2019-03-27 06:41:35 +01:00
daca2-logs2git.sh
daca2-report.py daca2-report: use 'diff' tool 2018-08-14 17:49:27 +02:00
dmake.cpp sync (#1835) 2019-05-17 09:31:41 +02:00
dmake.sln
dmake.vcxproj
donate-cpu-server.py donate-cpu-server.py: Fix wrong detection of invalid messageIds. 2019-04-03 11:46:45 +02:00
donate-cpu.py donate-cpu.py: show size of results sent to server (#1784) 2019-04-05 14:11:03 +02:00
extract_and_run_more_tests.sh
extracttests.py
generate_and_run_more_tests.sh
generate_cfg_tests.cpp
git-pre-commit-cppcheck Missing return value in git-pre-commit-cppcheck (#1382) 2018-09-21 04:56:53 +02:00
listErrorsWithoutCWE.py
matchcompiler.py Update copyright year 2019-02-09 07:24:06 +01:00
parse-glibc.py
pr.py pr.py: fix 2019-04-16 20:13:38 +02:00
readme.md tools/readme.md: the tools/reduce.cpp has been removed and tools/reduce.py should be used instead 2019-03-02 18:48:44 +01:00
reduce.py reduce.py: Improved help text 2019-03-03 20:18:54 +01:00
run-coverity.sh
run_more_tests.sh
test_matchcompiler.py
test_showtimetop5.sh
testrunnerify_code.sh
times-tags.sh
times-vs.py
times.c tools: allow short SHA1 longer than 7 (#1399) 2018-09-28 19:04:39 +02:00
times.sh
trac-keywords.py

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