[PATCH v2] docs/misra/rules.rst: add more rules

Stefano Stabellini posted 1 patch 4 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/alpine.DEB.2.22.394.2312071609060.1265976@ubuntu-linux-20-04-desktop
docs/misra/rules.rst | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
[PATCH v2] docs/misra/rules.rst: add more rules
Posted by Stefano Stabellini 4 months, 3 weeks ago
Add the rules accepted in the last three MISRA C working group meetings.

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
---
Changes in v2:
- remove 17.1 for now, to be a separate patch
- add a clarification comment for 17.7
---
 docs/misra/rules.rst | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
index 75921b9a34..2b570af0e0 100644
--- a/docs/misra/rules.rst
+++ b/docs/misra/rules.rst
@@ -462,6 +462,13 @@ maintainers if you want to suggest a change.
 
        while(0) and while(1) and alike are allowed.
 
+   * - `Rule 16.3 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_03.c>`_
+     - Required
+     - An unconditional break statement shall terminate every
+       switch-clause
+     - In addition to break, also other flow control statements such as
+       continue, return, goto are allowed.
+
    * - `Rule 16.7 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_07.c>`_
      - Required
      - A switch-expression shall not have essentially Boolean type
@@ -478,12 +485,27 @@ maintainers if you want to suggest a change.
        have an explicit return statement with an expression
      -
 
+   * - `Rule 17.5 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_17_05.c>`_
+     - Advisory
+     - The function argument corresponding to a parameter declared to
+       have an array type shall have an appropriate number of elements
+     -
+
    * - `Rule 17.6 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_17_06.c>`_
      - Mandatory
      - The declaration of an array parameter shall not contain the
        static keyword between the [ ]
      -
 
+   * - `Rule 17.7 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_17_07.c>`_
+     - Required
+     - The value returned by a function having non-void return type
+       shall be used
+     - Please beware that this rule has many violations in the Xen
+       codebase today, and its adoption is aspirational. However, when
+       submitting new patches please try to decrease the number of
+       violations when possible.
+
    * - `Rule 18.3 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_18_03.c>`_
      - Required
      - The relational operators > >= < and <= shall not be applied to objects of pointer type except where they point into the same object
@@ -498,6 +520,11 @@ maintainers if you want to suggest a change.
        instances where Eclair is unable to verify that the code is valid
        in regard to Rule 19.1. Caution reports are not violations.
 
+   * - `Rule 20.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_20_04.c>`_
+     - Required
+     - A macro shall not be defined with the same name as a keyword
+     -
+
    * - `Rule 20.7 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_20_07.c>`_
      - Required
      - Expressions resulting from the expansion of macro parameters
@@ -506,6 +533,13 @@ maintainers if you want to suggest a change.
        as function arguments, as macro arguments, array indices, lhs in
        assignments
 
+   * - `Rule 20.9 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_20_09.c>`_
+     - Required
+     - All identifiers used in the controlling expression of #if or
+       #elif preprocessing directives shall be #define'd before
+       evaluation
+     -
+
    * - `Rule 20.13 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_20_13.c>`_
      - Required
      - A line whose first token is # shall be a valid preprocessing
-- 
2.25.1
Re: [PATCH v2] docs/misra/rules.rst: add more rules
Posted by Andrew Cooper 4 months, 2 weeks ago
On 08/12/2023 12:09 am, Stefano Stabellini wrote:
> Add the rules accepted in the last three MISRA C working group meetings.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
> ---
> Changes in v2:
> - remove 17.1 for now, to be a separate patch
> - add a clarification comment for 17.7
> ---
>  docs/misra/rules.rst | 34 ++++++++++++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
>
> diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
> index 75921b9a34..2b570af0e0 100644
> --- a/docs/misra/rules.rst
> +++ b/docs/misra/rules.rst
> @@ -462,6 +462,13 @@ maintainers if you want to suggest a change.
>  
>         while(0) and while(1) and alike are allowed.
>  
> +   * - `Rule 16.3 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_03.c>`_
> +     - Required
> +     - An unconditional break statement shall terminate every
> +       switch-clause
> +     - In addition to break, also other flow control statements such as
> +       continue, return, goto are allowed.

And what about fallthrough ?

$ git grep -iwe fallthrough -e "fall through" | wc -l
315

This is an under-estimate because there are other comment based
justifications too.

All are an explicit statement that a break, or other control flow
statement, is wrong in the given context.

~Andrew
Re: [PATCH v2] docs/misra/rules.rst: add more rules
Posted by Jan Beulich 4 months, 2 weeks ago
On 11.12.2023 11:53, Andrew Cooper wrote:
> On 08/12/2023 12:09 am, Stefano Stabellini wrote:
>> Add the rules accepted in the last three MISRA C working group meetings.
>>
>> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
>> ---
>> Changes in v2:
>> - remove 17.1 for now, to be a separate patch
>> - add a clarification comment for 17.7
>> ---
>>  docs/misra/rules.rst | 34 ++++++++++++++++++++++++++++++++++
>>  1 file changed, 34 insertions(+)
>>
>> diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
>> index 75921b9a34..2b570af0e0 100644
>> --- a/docs/misra/rules.rst
>> +++ b/docs/misra/rules.rst
>> @@ -462,6 +462,13 @@ maintainers if you want to suggest a change.
>>  
>>         while(0) and while(1) and alike are allowed.
>>  
>> +   * - `Rule 16.3 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_03.c>`_
>> +     - Required
>> +     - An unconditional break statement shall terminate every
>> +       switch-clause
>> +     - In addition to break, also other flow control statements such as
>> +       continue, return, goto are allowed.
> 
> And what about fallthrough ?
> 
> $ git grep -iwe fallthrough -e "fall through" | wc -l
> 315
> 
> This is an under-estimate because there are other comment based
> justifications too.
> 
> All are an explicit statement that a break, or other control flow
> statement, is wrong in the given context.

But that's going to be documented in deviations.rst according to my
understanding.

Jan
Re: [PATCH v2] docs/misra/rules.rst: add more rules
Posted by Jan Beulich 4 months, 3 weeks ago
On 08.12.2023 01:09, Stefano Stabellini wrote:
> Add the rules accepted in the last three MISRA C working group meetings.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>

Acked-by: Jan Beulich <jbeulich@suse.com>

> --- a/docs/misra/rules.rst
> +++ b/docs/misra/rules.rst
> @@ -462,6 +462,13 @@ maintainers if you want to suggest a change.
>  
>         while(0) and while(1) and alike are allowed.
>  
> +   * - `Rule 16.3 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_03.c>`_
> +     - Required
> +     - An unconditional break statement shall terminate every
> +       switch-clause
> +     - In addition to break, also other flow control statements such as
> +       continue, return, goto are allowed.

To eliminate any room for doubt, maybe add "unconditional" also again here?

Jan
Re: [PATCH v2] docs/misra/rules.rst: add more rules
Posted by Stefano Stabellini 4 months, 3 weeks ago
On Fri, 8 Dec 2023, Jan Beulich wrote:
> On 08.12.2023 01:09, Stefano Stabellini wrote:
> > Add the rules accepted in the last three MISRA C working group meetings.
> > 
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
> 
> Acked-by: Jan Beulich <jbeulich@suse.com>
> 
> > --- a/docs/misra/rules.rst
> > +++ b/docs/misra/rules.rst
> > @@ -462,6 +462,13 @@ maintainers if you want to suggest a change.
> >  
> >         while(0) and while(1) and alike are allowed.
> >  
> > +   * - `Rule 16.3 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_03.c>`_
> > +     - Required
> > +     - An unconditional break statement shall terminate every
> > +       switch-clause
> > +     - In addition to break, also other flow control statements such as
> > +       continue, return, goto are allowed.
> 
> To eliminate any room for doubt, maybe add "unconditional" also again here?

Thanks for the Ack! I am OK with the addition you suggested. I'll let
you do it on commit so that we can be sure it is added in the way you
intended.