[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH] xen/build: Add cppcheck and cppcheck-html make rules



Hi Bertrand,

On 24/03/2022 11:04, Bertrand Marquis wrote:
cppcheck can be used to check Xen code quality.

Is there anything we should be concerned of in the initial report?


To create a report do "make cppcheck" on a built tree adding any options
you added during the process you used to build xen (like CROSS_COMPILE
or XEN_TARGET_ARCH). This will generate an xml report xen-cppcheck.xml.

To create a html report do "make cppcheck-html" in the same way and a
full report to be seen in a browser will be generated in
cppcheck-htmlreport/index.html.

For better results it is recommended to build your own cppcheck from the
latest sources that you can find at [1].
Development and result analysis has been done with cppcheck 2.7.

We want to write down the minimum version of cppcheck we are going to support. My suggestion would be to use the version you picked for your development.


The Makefile rule is searching for all C files which have been compiled
(ie which have a generated .o file) and is running cppcheck on all of
them using the current configuration of xen so only the code actually
compiled is checked.

A new tool is introduced to merge all cppcheck reports into one global
report including all findings and removing duplicates.

Some extra variables can be used to customize the report:
- CPPCHECK can be used to give the full path to the cppcheck binary to
use (default is to use the one from the standard path).
- CPPCHECK_HTMLREPORT can be used to give the full path to
cppcheck-htmlreport (default is to use the one from the standard path).

This has been tested on several arm configurations (x86 should work but
has not been tested).

[1] https://cppcheck.sourceforge.io/

Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
---
  .gitignore                           |  3 ++
  xen/Makefile                         | 75 +++++++++++++++++++++++++++-
  xen/arch/arm/include/asm/processor.h |  4 +-
  xen/include/xen/config.h             |  4 ++
  xen/include/xen/kconfig.h            |  5 ++
  xen/tools/merge_cppcheck_reports.py  | 73 +++++++++++++++++++++++++++

In the long term, I think it would be useful if we generate the report regularly. We might be able to hook the script that generate https://xenbits.xen.org/docs/.

diff --git a/xen/arch/arm/include/asm/processor.h 
b/xen/arch/arm/include/asm/processor.h
index 852b5f3c24..0b4ba73760 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -219,9 +219,11 @@
                           SCTLR_Axx_ELx_A    | SCTLR_Axx_ELx_C   |\
                           SCTLR_Axx_ELx_WXN  | SCTLR_Axx_ELx_EE)
-#if (SCTLR_EL2_SET ^ SCTLR_EL2_CLEAR) != 0xffffffffffffffffUL
+#ifndef CPPCHECK
+#if (SCTLR_EL2_SET ^ SCTLR_EL2_CLEAR) != 0xffffffffffffffffULL
  #error "Inconsistent SCTLR_EL2 set/clear bits"
  #endif
+#endif

Why is it necessary?

Cheers,

--
Julien Grall



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.