diff mbox series

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

Message ID alpine.DEB.2.22.394.2312071609060.1265976@ubuntu-linux-20-04-desktop (mailing list archive)
State New
Headers show
Series [v2] docs/misra/rules.rst: add more rules | expand

Commit Message

Stefano Stabellini Dec. 8, 2023, 12:09 a.m. UTC
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(+)

Comments

Jan Beulich Dec. 8, 2023, 7:18 a.m. UTC | #1
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
Stefano Stabellini Dec. 9, 2023, 1:36 a.m. UTC | #2
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.
Andrew Cooper Dec. 11, 2023, 10:53 a.m. UTC | #3
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
Jan Beulich Dec. 11, 2023, 11:20 a.m. UTC | #4
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
diff mbox series

Patch

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