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
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
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
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
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.
© 2016 - 2024 Red Hat, Inc.