Commit Graph

145 Commits

Author SHA1 Message Date
Oliver Stöneberg bc58f55c6e
donate-cpu: greatly improved `LibraryIncludes.get_libraries()` performance / some optimizations and cleanups (#4273)
* donate_cpu_lib.py: use `os.path.join()`

* donate-cpu: removed remaining usage of `os.chdir()`

* donate_cpu_lib.py: moved library includes code into class

* donate_cpu_lib.py: pre-compile library include regular expressions

* donate_cpu_lib.py: pre-compile some more regular expressions

* donate_cpu_lib.py: small unpack_package() cleanup and optimization

* donate_cpu_lib.py: added some information about the extracted files to unpack_package()

* donate_cpu_lib.py: bumped version

* added test_donate_cpu_lib.py

* donate_cpu_lib.py: greatly improved `LibraryIncludes.get_libraries()` performance

only scan each file once for previously undetected libraries only

* test_donate_cpu_lib.py: fix for Python 3.5

* scriptcheck.yml: added `-v` to pytest calls so we get the complete diff on assertions

* fixed `test_arguments_regression()` Python tests with additional pytest arguments

* donate_cpu_lib.py: use `subprocess.check_call()`

* test_donate_cpu_lib.py: sort results to address differences in order with Python 3.5
2022-07-13 21:09:29 +02:00
Oliver Stöneberg 1d9b6e1aac
donate-cpu: fixed library detection (#4261) 2022-07-12 19:39:07 +02:00
Daniel Marjamäki 31560299f8 donate-cpu: skip torture test file 2022-05-20 23:20:16 +02:00
Oliver Stöneberg d3ba5a0829
donate-cpu.py: added "--packages" parameter to specify a list of packages to process (#3742) 2022-02-14 12:59:38 +01:00
guillaume-uH57J9 dfd22919bc
donate_cpu_lib.py: fix callstack capture, fix dependency check (#3665)
* donate_cpu_lib.py: fix callstack capture, fix dependency check

check_requirements: verify that module psutil is available. 
scan_package: collect crash callstack regardless of cppcheck_path and cppcheck version

* donate_cpu_lib.pu: remove debug code

* donate_cpu_lib.py: add parameter capture_callstack
2022-01-02 22:16:00 +01:00
guillaume-uH57J9 a3560aaf5a
Better git usage in donate-cpu.py to reduce bandwidth and disk usage (#3584)
* Better git usage in donate-cpu.py to reduce bandwidth and disk usage

Main changes:
* Bump client version
* Move try+retry logic to function try_retry to reduce duplication
* Use exponential backoff for try_retry
* git clone with --depth=1 to reduce bandwidth and disk use
* Use multiple worktree to work with multiple versions, instead of back-and-forth checkouts

* donate-cpu.py fixes for review comments and automated check failures

* Move compile_cppcheck within (if ver == 'main) branch to avoid duplicate compile_cppcheck+compile_version cals
* Use classic format syntax for python 3.5 compatibility
* Fix undefined CalledProcessError detected by pylint

* donate-cpu.py code changes following code review

* Migration existing "cppcheck" directory if available instead of "git clone"
* Logging message tweaks
* Use subprocess' cwd parameter instead of os.chdir() to avoid risk around changing and not restoring the working directory

* Update tools/test-my-pr.py to account for donate_cpu_lib changes

* donate-cpu.py: ensure correct workspace locations with relative --work-path
2021-12-19 18:52:36 +01:00
Oliver Stöneberg f8edb7b6e6
various daca@home client cleanups (#3161) 2021-03-06 12:34:12 +01:00
Oliver Stöneberg b472b4e65d
some Python cleanups based on PyCharm inspections (#2999)
* some Python cleanups based on PyCharm inspections

* test-helloworld.py: adjusted assert in test_addon_relative_path()
2021-01-31 14:27:11 +01:00
Rikard Falkeborn 0d361f8a2e
test-my-pr: Retry if failed to get package (#2515) 2020-02-02 18:00:36 +01:00
Sebastian 2d95c35974
Donate CPU/test-my-pr: Add timeout for the Cppcheck execution (#2500)
This adds a timeout of 60 minutes for the Cppcheck analysis.
Timed out results do not count as crash but they are uploaded and
marked with "TO!" in the list of the latest results. No "diff" is
generated for timed out results so they do not add wrong entries to
the "Diff report".
In test-my-pr.py the timed out results are listed separately just like
the crashes.
donate-cpu-server.py: Add timeout report
2020-01-24 12:33:51 +01:00
Sebastian d8e0f40663
donate-cpu/test-my-pr: Minor fixes (PEP 8, old Python 2 code, ...) (#2499)
* donate-cpu/test-my-pr: Minor fixes (PEP 8, old Python 2 code, ...)

* test-my-pr.py: Add Python 3 shebang
2020-01-21 14:27:39 +01:00
Sebastian 7c7b0e55ed
daca2-getpackages.py: Fix #9508: Add support for xz compressed archives (#2493)
Using .tar.xz packages adds about 4500 additional packages that can be
tested and changes many existing packages where a more recent version
can be used now that is only available as .tar.xz file.

Related ticket: https://trac.cppcheck.net/ticket/9508

donate-cpu.py: Require at least Python 3.4
xz support was added with 3.3.
2020-01-17 12:23:07 +01:00
Sebastian cd9ec5aac6
daca@home client: Require at least Python 3 from now on (#2491)
This makes it possible to implement new features like .tar.xz support
(see https://trac.cppcheck.net/ticket/9508) or aborting endlessly
running analysis via timeout (see
https://sourceforge.net/p/cppcheck/discussion/development/thread/86813a8a53/).
2020-01-16 20:01:46 +01:00
Sebastian 1b28fb2d1a
donate-cpu.py: Verify argument for jobs (-jN) (#2386)
Yesterday, I observed that some client with a wrong jobs setting
(only "-j") requested one package after another and always uploaded
results where it only said that the argument "-j" is invalid for
Cppcheck.
This check should avoid such cases where results are overwritten with
useless data and the server is kept busy for nothing.
2019-11-22 22:04:41 +01:00
Sebastian b93321e038
donate-cpu.py: Add shebang, warn when run under Python 2 (#2336)
Add shebang to run the client via Python 3 by default.
Add warning if Python 2 is used.
As discussed in the forum https://sourceforge.net/p/cppcheck/discussion/development/thread/86813a8a53/ switching to Python 3 has some benefits.
2019-11-09 18:18:57 +01:00
Sebastian 83caedec8a
donate-cpu.py: Fix two pylint warnings (#2327)
Line 102: Comparison to literal
Line 117: Unnecessary "else" after "break"
2019-11-04 18:36:14 +01:00
Maksim Derbasov 2500964b58 [tools] test-my-PR functionality (#2288)
* test my PR functionallity

* Improvement for test-my-pr script

* test-my-pr align master with branch
2019-10-23 09:12:15 +02:00
Sebastian 478625c802
kde.cfg: Add KDE configuration and tests (#2278)
Reference: https://kde.org
2019-10-17 21:29:32 +02:00
Sebastian bf8f96255b
donate-cpu.py: Add internal timing information of Cppcheck to output (#2217)
* donate-cpu.py: Add internal timing information of Cppcheck to output

The option "--showtime=top5" is added to the Cppcheck command line.
The timing output is collected and only for HEAD it is shown in the new
category "head-timing-info" in the results output.
The timing output is indented with one white space, so even in the
unlikely case that a function is named "head result:" or "diff:" it does
not break the parser in the server.

* donate-cpu.py: Also print the "old" timing information for comparison
2019-09-28 22:09:58 +02:00
Sebastian 8207fb7b14
cairo.cfg: Add library configuration/tests/... for cairo library (#2176)
Reference: https://www.cairographics.org/
2019-09-19 08:48:04 +02:00
Sebastian fe236dbdc4 donate-cpu.py: Improve Qt library detection (#2171)
Some projects only use this (older?) style of Qt header inclusion.
There are (older) books and examples which use this style, too.
It seems to be perfectly valid, so we should support it.
2019-09-12 15:14:18 +02:00
Rikard Falkeborn 32eb6e1b19 donate-cpu: Only check libraries once (#2158)
There is no point in checking which libraries to use for each cppcheck
version since there is no change. Refactor the checking to a separate
function and run that once instead. This halves the time it takes to
check for libraries.
2019-09-09 13:42:57 +02:00
Daniel Marjamäki 92ab7c6b92 donate-cpu: switch to new server 2019-09-06 22:28:34 +02:00
Sebastian 1c77661b7e donate-cpu.py: Improve detection of Ruby library usage (#2148)
I looked into many packages where the detection failed and they all use
`#include "ruby.h"`. Some of these packages seem to be Ruby modules,
others seem to be "normal" software.
2019-09-05 20:33:12 +02:00
Rikard Falkeborn 02fd1ac7f7 donate-cpu: Show cppcheck head git hash and commit time (#2096)
This adds one line in the package report to show the git hash and commit
date. This makes it possible to see exactely which revision the result
was obtained with.

The cppcheck head info line is now shown as

	head-info: 1a25d3f9e (2019-08-30 18:34:14 +0200)
2019-09-05 09:08:45 +02:00
Sebastian 901565233b
donate-cpu.py: Enable detection of new library configurations (#2139) 2019-09-02 11:32:50 +02:00
Sebastian a501f65c8c
libcurl.cfg: Add library configuration for libcurl (#2120)
Add curl_easy_*() functions and deprecated functions with warnings.
Add tests and prepare donate-cpu.py
Reference: https://curl.haxx.se/libcurl/c/
2019-08-29 15:11:59 +02:00
Sebastian 8782a5f5e4
lua.cfg: Add Lua C API library configuration with tests (#2119) 2019-08-29 11:38:21 +02:00
Sebastian cf7616a5cf donate-cpu.py: Improve detection of SDL library usage. (#2116)
Add more commonly used includes for SDL headers.
2019-08-27 13:09:56 +02:00
Rikard Falkeborn 9a7089d262 donate-cpu.py: Try a fresh clone if fail to update (#2105)
Check if fetching and updating the cppcheck sources are successful. If
not successful after five retries, try removing the existing clone and
checkout again.
2019-08-27 06:48:00 +02:00
Sebastian 486170489a donate-cpu.py: Use "gtk" library cfg if "<gnome.h>" is included. (#2103)
Gnome includes GTK+, GLib and other libraries, see
https://developer.gnome.org/platform-overview/unstable/tech.html.en
Some projects simply include "<gnome.h>" and use Gtk/GLib functions.
2019-08-20 21:24:49 +02:00
Sebastian ee72bb7107
donate-cpu.py: Improve detection of Qt library usage (#2042) 2019-07-26 13:50:04 +02:00
Sebastian 6d1ce99dce
donate-cpu.py: Do not report crash if no source file has been found. (#2028)
Sometimes there are no relevant source files (.c, .cpp, ...) extracted,
but other files are (.h, ...).
There could be only header files for example. Then Cppcheck returns with
exit code 1 and prints an error message. This is no crash and now no
longer reported as such.
2019-07-26 10:15:09 +02:00
Oliver Stöneberg 4561229906 donate-cpu.py: treat signal 6 (SIGABRT) as crash as well so we get a … (#1995)
* donate-cpu.py: treat signal 6 (SIGABRT) as crash as well so we get a stack trace in the result

* donate-cpu.py: simplified returncode/signal check / also generate stack traces for SIGILL, SIGFPE, SIGBUS

* donate-cpu.py: avoid usage of "not" in if

* donate-cpu.py: do not overwrite returncode in crash handling
2019-07-15 15:37:31 +02:00
Sebastian 9b1066f0bc donate-cpu.py: Enable sqlite3 library for local includes. (#1973)
Many projects use a local copy of the sqlite3 library and several of
them use local includes.
2019-07-09 15:59:00 +02:00
Sebastian c45dff1e1d
openmp.cfg: Add library configuration for OpenMP (#1956)
See https://www.openmp.org/
2019-07-05 03:00:52 +02:00
Sebastian fd3e1ceefc
donate-cpu.py: Enable new libraries (planned after release of 1.88) (#1940)
Tested locally
2019-07-01 10:40:10 +02:00
Daniel Marjamäki 423e23b430 donate-cpu: changed names 2019-06-30 12:43:05 +02:00
Daniel Marjamäki 1b4485a738 Makefile: Add one more flag 'MATCHCOMPILER=yes' 2019-06-23 13:43:09 +02:00
orbitcowboy 9d34ff6fb9 nspr.cfg: Added (limited) support for some macros from Netscape Portable Runtime (NSPR) library. Reference: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR 2019-06-16 13:32:03 +02:00
IOBYTE 2b6d599f1e donate-cpu.py: show size of results sent to server (#1784) 2019-04-05 14:11:03 +02:00
Oliver Stöneberg 6e6cdae20e donate-cpu.py: improved error handling when fetching cppcheck version (#1780)
During a local scan it did not get any cppcheck versions causing the script to fail with an exception when creating the diff.
2019-04-04 13:09:35 +02:00
Oliver Stöneberg 8c26d4ee6a donate-cpu.py: more error detection improvements / properly update data on server (#1768)
* donate-cpu.py: made exitcodes > 0 negative so they will be detected a crash / changed the ThreadExecutor error to -222

* donate-cpu.py: unconditionally upload results and info now that errors are properly handled - will also properly clear the result/info in case there are no more messages

* donate-cpu.py: bumped version

* donate-cpu.py: added stdout to output in case of exitcode != 0

* donate-cpu.py: do not scan packages with no relevant files

* donate-cpu.py: bumped version
2019-04-03 09:27:04 +02:00
versat 6b9a25869e donate-cpu.py: Improve upload error handling, remove old "fast" code.
If an upload fails, the reason (exception text) is now printed.
Fix: If the last retry failed do not wait until continuing.
Remove some obsolete "fast" code in the uploadResults() function.

Tested with Python 2.7.16 and Python 3.6.8.
2019-04-02 10:23:57 +02:00
versat cdb449a1b8 donate-cpu.py: Only some cosmetic / coding style fixes. 2019-03-29 09:51:56 +01:00
Oliver Stöneberg 8d7d93aea7 donate-cpu.py: improved error detection (#1766)
* threadexecutor.cpp: streamlined error messages

* donate-cpu.py: detect additional signals and exitcode != 0 as crash as well and (ab)use elapsedTime to make the errorcode visible in the output / also detect ThreadExecutor issues

* donate-cpu.py: bumped version

* donate-cpu.py: fixed detection of ThreadExecutor errors
2019-03-29 06:53:40 +01:00
Oliver Stöneberg 7d383d1684 donate-cpu.py: add stack traces for daca@home crashes / bugfixes (#1764)
* Get stack traces for daca@home crashes

If a command in daca@home crashes, execute it again within gdb to get a stack trace.

* donate-cpu.py: added "gdb" to checkRequirements()

* donate-cpu.py: handle wget failures

* donate-cpu.py: added --no-upload option to disable all uploads

* donate-cpu.py: set max_packages to 1 if --package is provided to avoid endless processing of the same package

* donate-cpu.py: no longer treat missing sources as a crash

* donate-cpu.py: fixed wget "http://: Invalid host name." error caused by empty argument in subprocess.call()

* donate-cpu.py: added --no-upload to --help

* donate-cpu.py: detect crashes when using -j1

* donate-cpu.py: added -g to compiler flags

* donate-cpu.py: fixed gdb call and stacktrace printing / always pass "-j1" to gdb call so the exception will actually occur in the application

* donate-cpu.py: removed left-over --verbose from wget call

* donate-cpu.py: removed unnecessary break

* donate-cpu.py: only use gdb for crash in head run / actually provide the stack trace for the output

* donate-cpu.py: include the last checked file with the stack trace

* donate-cpu.py: removed unnecessary wget() call and a sleep in it / also inverted some logic

* donate-cpu.py: small hasInclude() optimization

* donate-cpu.py: bumped version number

* donate-cpu.py: detect start of gdb output when Cygwin is used

The Cygwin output looks like this:

Thread 1 "cppcheck" received signal SIGSEGV, Segmentation fault.

Co-Authored-By: firewave <firewave@users.noreply.github.com>
2019-03-28 15:49:20 +01:00
Daniel Marjamäki c7155a8e08 Removed '--experimental-fast' flag 2019-03-17 08:19:56 +01:00
versat 4e051ef865 donate-cpu.py: Improve Python library detection.
The official documentation recommends to include the Python C API via
`#include "Python.h"`:
https://docs.python.org/3/c-api/intro.html
And many projects do it exactly this way, that is why the client script
often does not detect the usage of the Python C API.
2019-03-15 16:16:38 +01:00
versat 49f2fd6d4a donate-cpu.py: Detect and use ruby library. 2019-03-15 15:34:06 +01:00