Skip to content

Commit

Permalink
automation/eclair_analysis: address violations of MISRA C Rule 20.7
Browse files Browse the repository at this point in the history
MISRA C Rule 20.7 states: "Expressions resulting from the expansion
of macro parameters shall be enclosed in parentheses".

The local helpers GRP2 and XADD in the x86 emulator use their first
argument as the constant expression for a case label. This pattern
is deviated project-wide, because it is very unlikely to induce
developer confusion and result in the wrong control flow being
carried out.

No functional change.

Signed-off-by: Nicola Vetrini <[email protected]>
Reviewed-by: Stefano Stabellini <[email protected]>
Release-Acked-by: Oleksii Kurochko <[email protected]>
  • Loading branch information
nvetrini authored and jbeulich committed Jun 27, 2024
1 parent f39642c commit c7e195f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 3 deletions.
6 changes: 4 additions & 2 deletions automation/eclair_analysis/ECLAIR/deviations.ecl
Original file line number Diff line number Diff line change
Expand Up @@ -458,13 +458,15 @@ unexpected result when the structure is given as argument to a sizeof() operator

-doc_begin="Code violating Rule 20.7 is safe when macro parameters are used: (1)
as function arguments; (2) as macro arguments; (3) as array indices; (4) as lhs
in assignments; (5) as initializers, possibly designated, in initalizer lists."
in assignments; (5) as initializers, possibly designated, in initalizer lists;
(6) as the constant expression in a switch clause label."
-config=MC3R1.R20.7,expansion_context=
{safe, "context(__call_expr_arg_contexts)"},
{safe, "left_right(^[(,\\[]$,^[),\\]]$)"},
{safe, "context(skip_to(__expr_non_syntactic_contexts, stmt_child(node(array_subscript_expr), subscript)))"},
{safe, "context(skip_to(__expr_non_syntactic_contexts, stmt_child(operator(assign), lhs)))"},
{safe, "context(skip_to(__expr_non_syntactic_contexts, stmt_child(node(init_list_expr||designated_init_expr), init)))"}
{safe, "context(skip_to(__expr_non_syntactic_contexts, stmt_child(node(init_list_expr||designated_init_expr), init)))"},
{safe, "context(skip_to(__expr_non_syntactic_contexts, stmt_child(node(case_stmt), lower||upper)))"}
-doc_end

-doc_begin="Violations involving the __config_enabled macros cannot be fixed without
Expand Down
3 changes: 2 additions & 1 deletion docs/misra/deviations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,8 @@ Deviations related to MISRA C:2012 Rules:
(2) as macro arguments;
(3) as array indices;
(4) as lhs in assignments;
(5) as initializers, possibly designated, in initalizer lists.
(5) as initializers, possibly designated, in initalizer lists;
(6) as constant expressions of switch case labels.
- Tagged as `safe` for ECLAIR.

* - R20.7
Expand Down

0 comments on commit c7e195f

Please sign in to comment.