cppcheck produces too many false positives to be useful. This is likely due to a configuration error (not all header files are included?) but until this is sorted out, disable the tool as it currently does more harm than good.
CI specific scripts
Static tests
The static_tests.sh script runs all static tests and outputs them in a unified
output. You can also run this script by running make static-test in the base
directory.
To add a new static test, just write a check.sh script or call your static
checker directly and add it to the list of static tests in static_tests.sh:
ENV1=foobar ENV2=snafu run <your test command> --args
Github annotations
Using github_annotate.sh you can generate Github annotations for your
tests. You can generate both warnings and errors. Before doing anything however,
you include github_annotate.sh\ (assuming ${RIOTTOOLS is set to} [dist/tools/])
. "${RIOTTOOLS}"/ci/github_annotate.sh
and set-up the mechanism
github_annotate_setup
If your tests generate output you now can pipe that to the file ${LOGFILE} by
using ${LOG}, e.g.
my_awesome_test | ${LOG}
Don't worry, your test will function normal still, if you don't run it in a Github Action!
Now you can use github_annotate_error and github_annotate_warning to
generate the actual errors and warnings. Both commands expect 3 parameters:
FILENAME: The name of the file the warning or error occurred in,LINENUM: The number of the line the warning or error occurred in, andDETAILS: Some descriptive details or the message of your warning or error.
You can parse those from ${LOGFILE} (e.g. using tools such as grep, sed,
or awk) or generate them on the fly, if your script allows for that. E.g.
cat ${LOGFILE} | grep '^.*:[0-9]\+:' | while read error; do
github_annotate_error \
$(echo "${error}" | cut -d: -f1) \
$(echo "${error}" | cut -d: -f2) \
$(echo "${error}" | cut -d: -f3-)
done
If your output has the common output format <filename>:<lineno>:<details> you
can also use the function github_annotate_parse_log_default. It takes the
annotation function it should call on every line as an optional parameter with
github_annotate_error being the default. E.g.
github_annotate_parse_log_default github_annotate_warning
does the same as the last example snippet, but uses github_annotate_warning
instead.
If you do not need to provide a file with your error or warning, you can also
use github_annotate_error_no_file or github_annotate_warning_no_file,
respectively. Both take a just message as single parameter:
github_annotate_error_no_file "Something is wrong!"
After all errors or warnings are annotated, call github_annotate_teardown to
finish annotations.
Note: github_annotate_report_last_run is called within static_tests.sh
to attach the actual annotations to your PR. You don't need to call it from
within your test if you are adding that test to static_tests.sh.