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

Re: [XEN PATCH v2 3/3] eclair: add deviations of MISRA C Rule 5.5



On Wed, 9 Jul 2025, Dmytro Prokopchuk1 wrote:
> MISRA C Rule 5.5 states that: "Identifiers shall
> be distinct from macro names".
> 
> Update ECLAIR configuration to deviate:
> - clashes in 'xen/include/xen/bitops.h';
> - clashes in 'xen/include/xen/irq.h';
> - clashes in 'xen/common/grant_table.c'.
> 
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>

Hi Dmytro,

I tried to apply the patch and run a pipeline but it only results clean
on ARM but not on x86. There are 2087 outstanding violations:

https://gitlab.com/xen-project/people/sstabellini/xen/-/pipelines/1919889048

https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/sstabellini/xen/ECLAIR_normal/ppp1-1/X86_64/10644506983/PROJECT.ecd;/by_service/MC3A2.R5.5.html#{%22select%22:true,%22selection%22:{%22hiddenAreaKinds%22:[],%22hiddenSubareaKinds%22:[],%22show%22:false,%22selector%22:{%22enabled%22:true,%22negated%22:true,%22kind%22:0,%22domain%22:%22kind%22,%22inputs%22:[{%22enabled%22:true,%22text%22:%22violation%22}]}}}


Jan, Andrew, Roger,

About half of them are from bitops.h which could be deviated the same
way xen/include/xen/bitops.h is deviated in this patch.

xen/arch/x86/include/asm/x86_64/page.h:virt_to_maddr could be deviated
too.

I don't know how to handle the rest or even how to configure the
deviation in Eclair. These are the results with those two deviations
added:

https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/sstabellini/xen/ECLAIR_normal/ppp1-2/X86_64/10644744316/PROJECT.ecd;/by_service/MC3A2.R5.5.html#{%22select%22:true,%22selection%22:{%22hiddenAreaKinds%22:[],%22hiddenSubareaKinds%22:[],%22show%22:false,%22selector%22:{%22enabled%22:true,%22negated%22:true,%22kind%22:0,%22domain%22:%22kind%22,%22inputs%22:[{%22enabled%22:true,%22text%22:%22violation%22}]}}}

We only have 49 left. Any suggestions on how to handle them so that we
can mark the rule as "clean" and stop future regressions in the CI
loop?


> ---
>  automation/eclair_analysis/ECLAIR/deviations.ecl | 8 ++++++++
>  docs/misra/deviations.rst                        | 8 ++++++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl 
> b/automation/eclair_analysis/ECLAIR/deviations.ecl
> index e8f513fbc5..a5d7b00094 100644
> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
> @@ -117,6 +117,14 @@ it defines would (in the common case) be already 
> defined. Peer reviewed by the c
>  -config=MC3A2.R5.5,reports+={deliberate, 
> "any_area(decl(kind(function))||any_loc(macro(name(memcpy||memset||memmove))))&&any_area(any_loc(file(^xen/common/libelf/libelf-private\\.h$)))"}
>  -doc_end
>  
> +-doc_begin="Clashes between function names and macros are deliberate for 
> bitops functions, pirq_cleanup_check, update_gnttab_par and 
> parse_gnttab_limit functions
> +and needed to have a function-like macro that acts as a wrapper for the 
> function to be called. Before calling the function,
> +the macro adds additional checks or adjusts the number of parameters 
> depending on the configuration."
> +-config=MC3A2.R5.5,reports+={deliberate, 
> "any_area(all_loc(file(^xen/include/xen/bitops\\.h$)))"}
> +-config=MC3A2.R5.5,reports+={deliberate, 
> "any_area(all_loc(file(^xen/include/xen/irq\\.h$))&&context(name(pirq_cleanup_check)&&kind(function)))"}
> +-config=MC3A2.R5.5,reports+={deliberate, 
> "any_area(all_loc(file(^xen/common/grant_table\\.c$))&&context(name(update_gnttab_par||parse_gnttab_limit)&&kind(function)))"}
> +-doc_end
> +
>  -doc_begin="The type \"ret_t\" is deliberately defined multiple times,
>  depending on the guest."
>  
> -config=MC3A2.R5.6,reports+={deliberate,"any_area(any_loc(text(^.*ret_t.*$)))"}
> diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
> index 0d56d45b66..fe05e4062e 100644
> --- a/docs/misra/deviations.rst
> +++ b/docs/misra/deviations.rst
> @@ -142,6 +142,14 @@ Deviations related to MISRA C:2012 Rules:
>         memmove.
>       - Tagged as `deliberate` for ECLAIR.
>  
> +   * - R5.5
> +     - Clashes between function names and macros are deliberate for bitops 
> functions,
> +       pirq_cleanup_check, update_gnttab_par and parse_gnttab_limit 
> functions and needed
> +       to have a function-like macro that acts as a wrapper for the function 
> to be
> +       called. Before calling the function, the macro adds additional checks 
> or
> +       adjusts the number of parameters depending on the configuration.
> +     - Tagged as `deliberate` for ECLAIR.
> +
>     * - R5.6
>       - The type ret_t is deliberately defined multiple times depending on the
>         type of guest to service.
> -- 
> 2.43.0
> 



 


Rackspace

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