ba33c7f6cd
* daca2: Improve package sorting using natsort This switches the external dependency from semver to natsort, and improves comparison of packages where one or more of the packages do not use semantic versioning (major.minor.patch). This also makes daca2-download and daca2-getpackages work with python 3. In theory, they should work with python 2 as well, but I have not tested it. * Make daca2 scripts executable * Update hashbangs to python3 * Update usage description To avoid specifying python version in the usage description, just show how to execute the scripts and leave the rest to the shebangs. * No need to specify python version in start_donate_cpu_server_test_local.sh Leave it to the hashbang instead. |
||
---|---|---|
.. | ||
test | ||
triage | ||
ci.py | ||
clang-ast.cpp | ||
compare-ast-clang-and-cppcheck.py | ||
compare.cs | ||
daca2-download.py | ||
daca2-getpackages.py | ||
daca2-logs2git.sh | ||
dmake.cpp | ||
dmake.sln | ||
dmake.vcxproj | ||
donate-cpu-server.py | ||
donate-cpu.py | ||
donate_cpu_lib.py | ||
extract_and_run_more_tests.sh | ||
extracttests.py | ||
generate_and_run_more_tests.sh | ||
generate_cfg_tests.cpp | ||
git-pre-commit-cppcheck | ||
listErrorsWithoutCWE.py | ||
matchcompiler.py | ||
parse-glibc.py | ||
pr.py | ||
readme.md | ||
reduce.py | ||
run-coverity.sh | ||
run_more_tests.sh | ||
test-my-pr.py | ||
test_matchcompiler.py | ||
test_showtimetop5.sh | ||
testrunnerify_code.sh | ||
times-tags.sh | ||
times-vs.py | ||
times.c | ||
times.sh | ||
trac-keywords.py |
readme.md
Cppcheck developer and build tools
* tools/astyle-client.py
With this tool you can astyle-format arbitrary cpp/header files even if you do not have astyle on your computer.
astyle on a server is used.
Example usage:
python tools/astyle-client.py lib/token.cpp
The file is reformatted and a status message is written that says if there were any changes or not.
This script is a lot slower than running astyle locally on your computer.
* 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 master 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.