|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] docs/misra: add rules 10.1 10.2 10.3 10.4
commit 591fd09ffba5c6e587477d07302792ec2e68cf16
Author: Stefano Stabellini <stefano.stabellini@xxxxxxx>
AuthorDate: Fri Aug 25 14:48:42 2023 -0700
Commit: Stefano Stabellini <stefano.stabellini@xxxxxxx>
CommitDate: Wed Aug 30 18:30:51 2023 -0700
docs/misra: add rules 10.1 10.2 10.3 10.4
10.1 with several caveats, described in the notes.
10.3 and 10.4 as "aspirational" guidelines, as clarified in the notes.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxx>
Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
---
docs/misra/rules.rst | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
index db30632b93..34916e266a 100644
--- a/docs/misra/rules.rst
+++ b/docs/misra/rules.rst
@@ -310,6 +310,59 @@ maintainers if you want to suggest a change.
- An element of an object shall not be initialized more than once
-
+ * - `Rule 10.1
<https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_10_01.c>`_
+ - Required
+ - Operands shall not be of an inappropriate essential type
+ - The following are allowed:
+ - Value-preserving conversions of integer constants
+ - Bitwise and, or, xor, one's complement, bitwise and assignment,
+ bitwise or assignment, bitwise xor assignment (bitwise and, or, xor
+ are safe on non-negative integers; also Xen assumes two's complement
+ representation)
+ - Left shift, right shift, left shift assignment, right shift
+ assignment (see C-language-toolchain.rst for uses of
+ compilers' extensions)
+ - Implicit conversions to boolean for conditionals (?: if while
+ for) and logical operators (! || &&)
+
+ * - `Rule 10.2
<https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_10_02.c>`_
+ - Required
+ - Expressions of essentially character type shall not be used
+ inappropriately in addition and subtraction operations
+ -
+
+ * - `Rule 10.3
<https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_10_03.c>`_
+ - Required
+ - The value of an expression shall not be assigned to an object
+ with a narrower essential type or of a different essential type
+ category
+ - 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.
+
+ gcc has a helpful warning that can help you spot and remove
+ violations of this kind: conversion. For instance, you can use
+ it as follows:
+
+ CFLAGS="-Wconversion -Wno-error=sign-conversion -Wno-error=conversion"
make -C xen
+
+ * - `Rule 10.4
<https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_10_04.c>`_
+ - Required
+ - Both operands of an operator in which the usual arithmetic
+ conversions are performed shall have the same essential type
+ category
+ - 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.
+
+ gcc has a helpful warning that can help you spot and remove
+ violations of this kind: arith-conversion. For instance, you
+ can use it as follows:
+
+ CFLAGS="-Warith-conversion -Wno-error=arith-conversion" make -C xen
+
* - `Rule 12.5
<https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_12_05.c>`_
- Mandatory
- The sizeof operator shall not have an operand which is a function
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |