Page 1 of 1

Cppcheck and harbour code?

Posted: Tue Jun 17, 2025 9:14 am
by Taavi
Hello,
have anybody tryed to check harbour generated code with Cppcheck or any other static code checker? Any point to try to do this?
On first try cppcheck gives a lot of warnings and errors.

Got a client who requires application code to be checked for security reasons...

Taavi.

Re: Cppcheck and harbour code?

Posted: Tue Jun 17, 2025 10:39 am
by Antonio Linares
Dear Taavi,

Where to get cppcheck from ?

thanks

Re: Cppcheck and harbour code?

Posted: Tue Jun 17, 2025 2:13 pm
by Taavi
Hello Antonio,

https://cppcheck.sourceforge.io/

Taavi.

Re: Cppcheck and harbour code?

Posted: Tue Jun 17, 2025 8:43 pm
by Lailton
Very interesting topic.

probably you can configure the output .c files to some cache folder, and then use some file to run the cppcheck from there.
on the hbm you can use -workdir=.\cache\ and all the C files will be there :)

If you have success with it let us to know. very cool.

I will make some testing at the weekend with it.

Re: Cppcheck and harbour code?

Posted: Wed Jun 18, 2025 2:45 am
by Lailton
Command to check:

build project with -workdir=./.cache/ and I suggest to use -gc3 too.

Code: Select all | Expand

cppcheck -I ./include/ -I /Users/lailton/Developer/harbour/include --suppress=missingIncludeSystem .cache/ --output-file=cppcheck.txt
Part my output:

Code: Select all | Expand

18/20 files checked 96% done
Checking .cache/util.c ...
Checking .cache/util.c: HB_DATASEG_STARTUP;HB_OS_WIN_64;_MSC_VER...
Checking .cache/util.c: HB_DATASEG_STARTUP;HB_PRAGMA_STARTUP...
Checking .cache/util.c: HB_DATASEG_STARTUP;__WATCOMC__...
Checking .cache/util.c: HB_GNUC_STARTUP;__DCC__;__GNUC__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__clang__...
Checking .cache/util.c: HB_GNUC_STARTUP;__DCC__;__GNUC__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__clang__;__DCC__...
Checking .cache/util.c: HB_INITSEG_STARTUP...
Checking .cache/util.c: HB_INITSEG_STARTUP;_M_COFF...
Checking .cache/util.c: HB_NO_FLATTEN;__ICC;__PCC__;__clang__;__GNUC__...
Checking .cache/util.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__...
Checking .cache/util.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__;HB_OS_VXWORKS;_INTPTR;_INTPTR_T...
Checking .cache/util.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__;_MSC_VER...
Checking .cache/util.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__;__BORLANDC__...
19/20 files checked 97% done
Checking .cache/watch.c ...
Checking .cache/watch.c: HB_DATASEG_STARTUP;HB_OS_WIN_64;_MSC_VER...
Checking .cache/watch.c: HB_DATASEG_STARTUP;HB_PRAGMA_STARTUP...
Checking .cache/watch.c: HB_DATASEG_STARTUP;__WATCOMC__...
Checking .cache/watch.c: HB_GNUC_STARTUP;__DCC__;__GNUC__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__clang__...
Checking .cache/watch.c: HB_GNUC_STARTUP;__DCC__;__GNUC__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__clang__;__DCC__...
Checking .cache/watch.c: HB_INITSEG_STARTUP...
Checking .cache/watch.c: HB_INITSEG_STARTUP;_M_COFF...
Checking .cache/watch.c: HB_NO_FLATTEN;__ICC;__PCC__;__clang__;__GNUC__...
Checking .cache/watch.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__...
Checking .cache/watch.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__;HB_OS_VXWORKS;_INTPTR;_INTPTR_T...
Checking .cache/watch.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__;_MSC_VER...
Checking .cache/watch.c: HB_OS_BEOS;HB_OS_BSD;HB_OS_DARWIN;HB_OS_LINUX;HB_OS_MINIX;HB_OS_QNX;HB_OS_SUNOS;HB_OS_VXWORKS;_ISOC99_SOURCE;_MSC_VER;_STDC_C99;__BORLANDC__;__DJGPP__;__DMC__;__GNUC__;__LCC__;__MINGW32__;__POCC__;__STDC_VERSION__;__SUNPRO_C;__SUNPRO_CC;__TINYC__;__WATCOMC__;__XCC__;__BORLANDC__...
20/20 files checked 100% done