xref: /rk3399_ARM-atf/docs/process/misra-compliance.csv (revision 0bf0d9286736af0b9374ab0a093b044d3d494a06)
1*6c2c8528SSandrine BailleuxSeq,Dir / Rule,Number,Source,Category,Checker Enabled,Enforced,Comments
2*6c2c8528SSandrine Bailleux1,D,1.1,MISRA C 2012,Required,N/A,Yes,
3*6c2c8528SSandrine Bailleux2,D,2.1,MISRA C 2012,Required,N/A,Yes,
4*6c2c8528SSandrine Bailleux3,D,3.1,MISRA C 2012,Required,N/A,No,It can’t be done retroactively.
5*6c2c8528SSandrine Bailleux4,D,4.1,MISRA C 2012,Required,N/A,Yes,
6*6c2c8528SSandrine Bailleux5,D,4.2,MISRA C 2012,Advisory,N/A,Yes,
7*6c2c8528SSandrine Bailleux6,D,4.3,MISRA C 2012,Required,Yes,Yes,
8*6c2c8528SSandrine Bailleux7,D,4.4,MISRA C 2012,Advisory,Yes,Yes,
9*6c2c8528SSandrine Bailleux8,D,4.5,MISRA C 2012,Advisory,Yes,Yes,
10*6c2c8528SSandrine Bailleux9,D,4.6,MISRA C 2012,Advisory,No,No,We use a mix of both. It would be too disruptive for the project to change.
11*6c2c8528SSandrine Bailleux10,D,4.7,MISRA C 2012,Required,Yes,Yes,
12*6c2c8528SSandrine Bailleux11,D,4.8,MISRA C 2012,Advisory,No,No,Fixing all instances would involve invasive changes to the codebase for no good reason.
13*6c2c8528SSandrine Bailleux12,D,4.9,MISRA C 2012,Advisory,No,No,"We mustn’t introduce new macros unless strictly needed, but this affects assert(), INFO(), etc. It creates too much noise in the report for little gain."
14*6c2c8528SSandrine Bailleux13,D,4.10,MISRA C 2012,Required,Yes,Yes,
15*6c2c8528SSandrine Bailleux14,D,4.11,MISRA C 2012,Required,Yes,Yes,
16*6c2c8528SSandrine Bailleux15,D,4.12,MISRA C 2012,Required,Yes,Yes,
17*6c2c8528SSandrine Bailleux16,D,4.13,MISRA C 2012,Advisory,Yes,Yes,
18*6c2c8528SSandrine Bailleux17,D,4.14,MISRA C 2012 AMD-1,Required,Yes,Yes,
19*6c2c8528SSandrine Bailleux18,R,1.1,MISRA C 2012,Required,Yes,Yes,
20*6c2c8528SSandrine Bailleux19,R,1.2,MISRA C 2012,Advisory,Yes,Optional,It bans __attribute__(())  and similar helpers.
21*6c2c8528SSandrine Bailleux20,R,1.3,MISRA C 2012,Required,N/A,Yes,
22*6c2c8528SSandrine Bailleux21,R,2.1,MISRA C 2012,Required,Yes,Yes,
23*6c2c8528SSandrine Bailleux22,R,2.2,MISRA C 2012,Required,Yes,Yes,
24*6c2c8528SSandrine Bailleux23,R,2.3,MISRA C 2012,Advisory,Yes,Optional,It prevents the usage of CASSERT().
25*6c2c8528SSandrine Bailleux24,R,2.4,MISRA C 2012,Advisory,No,No,Header files may use enumerations instead of defines to group sets of values.
26*6c2c8528SSandrine Bailleux25,R,2.5,MISRA C 2012,Advisory,No,No,We define many headers with macros that are unused in the project but may be used by non-upstream code or may be desirable for completeness.
27*6c2c8528SSandrine Bailleux26,R,2.6,MISRA C 2012,Advisory,Yes,Yes,
28*6c2c8528SSandrine Bailleux27,R,2.7,MISRA C 2012,Advisory,No,No,Doesn't allow for simple implementations of porting functions that don't require all parameters.
29*6c2c8528SSandrine Bailleux28,R,3.1,MISRA C 2012,Required,Yes,Yes,
30*6c2c8528SSandrine Bailleux29,R,3.2,MISRA C 2012,Required,Yes,Yes,
31*6c2c8528SSandrine Bailleux30,R,4.1,MISRA C 2012,Required,Yes,Yes,
32*6c2c8528SSandrine Bailleux31,R,4.2,MISRA C 2012,Advisory,Yes,Yes,
33*6c2c8528SSandrine Bailleux32,R,5.1,MISRA C 2012,Required,No,No,We use weak symbols that prevent us from complying with this rule.
34*6c2c8528SSandrine Bailleux33,R,5.2,MISRA C 2012,Required,Yes,Yes,
35*6c2c8528SSandrine Bailleux34,R,5.3,MISRA C 2012,Required,Yes,Yes,
36*6c2c8528SSandrine Bailleux35,R,5.4,MISRA C 2012,Required,Yes,Yes,
37*6c2c8528SSandrine Bailleux36,R,5.5,MISRA C 2012,Required,Yes,Yes,
38*6c2c8528SSandrine Bailleux37,R,5.6,MISRA C 2012,Required,Yes,Yes,
39*6c2c8528SSandrine Bailleux38,R,5.7,MISRA C 2012,Required,Yes,Optional,Fixing all existing defects is problematic because of compatibility issues.
40*6c2c8528SSandrine Bailleux39,R,5.8,MISRA C 2012,Required,No,No,We use weak symbols that prevent us from complying with this rule.
41*6c2c8528SSandrine Bailleux40,R,5.9,MISRA C 2012,Advisory,Yes,Yes,
42*6c2c8528SSandrine Bailleux41,R,6.1,MISRA C 2012,Required,Yes,Yes,
43*6c2c8528SSandrine Bailleux42,R,6.2,MISRA C 2012,Required,Yes,Yes,
44*6c2c8528SSandrine Bailleux43,R,7.1,MISRA C 2012,Required,Yes,Yes,
45*6c2c8528SSandrine Bailleux44,R,7.2,MISRA C 2012,Required,Yes,Yes,
46*6c2c8528SSandrine Bailleux45,R,7.3,MISRA C 2012,Required,Yes,Yes,
47*6c2c8528SSandrine Bailleux46,R,7.4,MISRA C 2012,Required,Yes,Yes,
48*6c2c8528SSandrine Bailleux47,R,8.1,MISRA C 2012,Required,Yes,Yes,
49*6c2c8528SSandrine Bailleux48,R,8.2,MISRA C 2012,Required,Yes,Yes,
50*6c2c8528SSandrine Bailleux49,R,8.3,MISRA C 2012,Required,Yes,Yes,
51*6c2c8528SSandrine Bailleux50,R,8.4,MISRA C 2012,Required,Yes,Yes,
52*6c2c8528SSandrine Bailleux51,R,8.5,MISRA C 2012,Required,Yes,Yes,
53*6c2c8528SSandrine Bailleux52,R,8.6,MISRA C 2012,Required,No,No,We use weak symbols that prevent us from complying with this rule.
54*6c2c8528SSandrine Bailleux53,R,8.7,MISRA C 2012,Advisory,No,No,"Bans pattern of declaring funcs in private header that are used/defined in separate translation units, which seems over the top."
55*6c2c8528SSandrine Bailleux54,R,8.8,MISRA C 2012,Required,Yes,Yes,
56*6c2c8528SSandrine Bailleux55,R,8.9,MISRA C 2012,Advisory,Yes,Yes,
57*6c2c8528SSandrine Bailleux56,R,8.10,MISRA C 2012,Required,Yes,Yes,
58*6c2c8528SSandrine Bailleux57,R,8.11,MISRA C 2012,Advisory,Yes,Optional,This may not be possible in some interfaces.
59*6c2c8528SSandrine Bailleux58,R,8.12,MISRA C 2012,Required,Yes,Yes,
60*6c2c8528SSandrine Bailleux59,R,8.13,MISRA C 2012,Advisory,Yes,Optional,The benefits of fixing existing code aren’t worth the effort.
61*6c2c8528SSandrine Bailleux60,R,8.14,MISRA C 2012,Required,Yes,Yes,
62*6c2c8528SSandrine Bailleux61,R,9.1,MISRA C 2012,Mandatory,Yes,Yes,
63*6c2c8528SSandrine Bailleux62,R,9.2,MISRA C 2012,Required,Yes,Yes,
64*6c2c8528SSandrine Bailleux63,R,9.3,MISRA C 2012,Required,Yes,Yes,
65*6c2c8528SSandrine Bailleux64,R,9.4,MISRA C 2012,Required,Yes,Yes,
66*6c2c8528SSandrine Bailleux65,R,9.5,MISRA C 2012,Required,Yes,Yes,
67*6c2c8528SSandrine Bailleux66,R,10.1,MISRA C 2012,Required,Yes,Optional,Fixing existing code may be counter-productive and introduce bugs.
68*6c2c8528SSandrine Bailleux67,R,10.2,MISRA C 2012,Required,Yes,Yes,
69*6c2c8528SSandrine Bailleux68,R,10.3,MISRA C 2012,Required,Yes,Optional,Fixing existing code may be counter-productive and introduce bugs.
70*6c2c8528SSandrine Bailleux69,R,10.4,MISRA C 2012,Required,Yes,Optional,Fixing existing code may be counter-productive and introduce bugs.
71*6c2c8528SSandrine Bailleux70,R,10.5,MISRA C 2012,Advisory,Yes,Yes,
72*6c2c8528SSandrine Bailleux71,R,10.6,MISRA C 2012,Required,Yes,Yes,
73*6c2c8528SSandrine Bailleux72,R,10.7,MISRA C 2012,Required,Yes,Yes,
74*6c2c8528SSandrine Bailleux73,R,10.8,MISRA C 2012,Required,Yes,Yes,
75*6c2c8528SSandrine Bailleux74,R,11.1,MISRA C 2012,Required,Yes,Yes,
76*6c2c8528SSandrine Bailleux75,R,11.2,MISRA C 2012,Required,Yes,Yes,
77*6c2c8528SSandrine Bailleux76,R,11.3,MISRA C 2012,Required,Yes,Yes,
78*6c2c8528SSandrine Bailleux77,R,11.4,MISRA C 2012,Advisory,No,No,This would be invasive for TF (e.g. in exported linker script macros). Also bans conversion from uintptr_t.
79*6c2c8528SSandrine Bailleux78,R,11.5,MISRA C 2012,Advisory,No,No,"This seems to preclude the pattern of using void * in interfaces to hide the real object, which we use extensively."
80*6c2c8528SSandrine Bailleux79,R,11.6,MISRA C 2012,Required,Yes,Optional,This is needed in several cases.
81*6c2c8528SSandrine Bailleux80,R,11.7,MISRA C 2012,Required,Yes,Yes,
82*6c2c8528SSandrine Bailleux81,R,11.8,MISRA C 2012,Required,Yes,Yes,
83*6c2c8528SSandrine Bailleux82,R,11.9,MISRA C 2012,Required,Yes,Yes,
84*6c2c8528SSandrine Bailleux83,R,12.1,MISRA C 2012,Advisory,Yes,Yes,
85*6c2c8528SSandrine Bailleux84,R,12.2,MISRA C 2012,Required,Yes,Yes,"This rule is fine, but there are lots of false positives in Coverity."
86*6c2c8528SSandrine Bailleux85,R,12.3,MISRA C 2012,Advisory,Yes,Yes,
87*6c2c8528SSandrine Bailleux86,R,12.4,MISRA C 2012,Advisory,Yes,Yes,
88*6c2c8528SSandrine Bailleux87,R,12.5,MISRA C 2012 AMD-1,Mandatory,Yes,Yes,
89*6c2c8528SSandrine Bailleux88,R,13.1,MISRA C 2012,Required,Yes,Yes,
90*6c2c8528SSandrine Bailleux89,R,13.2,MISRA C 2012,Required,Yes,Yes,
91*6c2c8528SSandrine Bailleux90,R,13.3,MISRA C 2012,Advisory,Yes,Yes,
92*6c2c8528SSandrine Bailleux91,R,13.4,MISRA C 2012,Advisory,Yes,Yes,
93*6c2c8528SSandrine Bailleux92,R,13.5,MISRA C 2012,Required,Yes,Yes,
94*6c2c8528SSandrine Bailleux93,R,13.6,MISRA C 2012,Mandatory,Yes,Yes,
95*6c2c8528SSandrine Bailleux94,R,14.1,MISRA C 2012,Required,Yes,Yes,
96*6c2c8528SSandrine Bailleux95,R,14.2,MISRA C 2012,Required,Yes,Yes,
97*6c2c8528SSandrine Bailleux96,R,14.3,MISRA C 2012,Required,Yes,Yes,
98*6c2c8528SSandrine Bailleux97,R,14.4,MISRA C 2012,Required,Yes,Yes,
99*6c2c8528SSandrine Bailleux98,R,15.1,MISRA C 2012,Advisory,No,No,In some cases goto may be useful for readability.
100*6c2c8528SSandrine Bailleux99,R,15.2,MISRA C 2012,Required,Yes,Yes,
101*6c2c8528SSandrine Bailleux100,R,15.3,MISRA C 2012,Required,Yes,Yes,
102*6c2c8528SSandrine Bailleux101,R,15.4,MISRA C 2012,Advisory,Yes,Yes,
103*6c2c8528SSandrine Bailleux102,R,15.5,MISRA C 2012,Advisory,No,No,This has no real value. It may make code less understandable than before.
104*6c2c8528SSandrine Bailleux103,R,15.6,MISRA C 2012,Required,No,No,This directly contradicts the Linux style guidelines and would require many changes. We would have to remove that rule from checkpatch.
105*6c2c8528SSandrine Bailleux104,R,15.7,MISRA C 2012,Required,Yes,Yes,
106*6c2c8528SSandrine Bailleux105,R,16.1,MISRA C 2012,Required,No,No,Cannot comply with this unless we comply with 16.3
107*6c2c8528SSandrine Bailleux106,R,16.2,MISRA C 2012,Required,Yes,Yes,
108*6c2c8528SSandrine Bailleux107,R,16.3,MISRA C 2012,Required,No,No,Returns within switch statements and fall-throughs can improve readability.
109*6c2c8528SSandrine Bailleux108,R,16.4,MISRA C 2012,Required,Yes,Yes,
110*6c2c8528SSandrine Bailleux109,R,16.5,MISRA C 2012,Required,Yes,Yes,
111*6c2c8528SSandrine Bailleux110,R,16.6,MISRA C 2012,Required,Yes,Yes,
112*6c2c8528SSandrine Bailleux111,R,16.7,MISRA C 2012,Required,Yes,Yes,
113*6c2c8528SSandrine Bailleux112,R,17.1,MISRA C 2012,Required,No,No,This is needed for printf.
114*6c2c8528SSandrine Bailleux113,R,17.2,MISRA C 2012,Required,Yes,Yes,Bans recursion. We consider it acceptable if the max depth is known.
115*6c2c8528SSandrine Bailleux114,R,17.3,MISRA C 2012,Mandatory,Yes,Yes,
116*6c2c8528SSandrine Bailleux115,R,17.4,MISRA C 2012,Mandatory,Yes,Yes,
117*6c2c8528SSandrine Bailleux116,R,17.5,MISRA C 2012,Advisory,Yes,Yes,
118*6c2c8528SSandrine Bailleux117,R,17.6,MISRA C 2012,Mandatory,Yes,Yes,
119*6c2c8528SSandrine Bailleux118,R,17.7,MISRA C 2012,Required,Yes,Optional,In some cases it doesn’t add any value to the code (like with memset() or printf()).
120*6c2c8528SSandrine Bailleux119,R,17.8,MISRA C 2012,Advisory,Yes,Optional,It would make some one-line functions grow in size for no reason.
121*6c2c8528SSandrine Bailleux120,R,18.1,MISRA C 2012,Required,Yes,Yes,
122*6c2c8528SSandrine Bailleux121,R,18.2,MISRA C 2012,Required,Yes,Yes,
123*6c2c8528SSandrine Bailleux122,R,18.3,MISRA C 2012,Required,Yes,Yes,
124*6c2c8528SSandrine Bailleux123,R,18.4,MISRA C 2012,Advisory,Yes,Yes,
125*6c2c8528SSandrine Bailleux124,R,18.5,MISRA C 2012,Advisory,Yes,Yes,
126*6c2c8528SSandrine Bailleux125,R,18.6,MISRA C 2012,Required,Yes,Yes,
127*6c2c8528SSandrine Bailleux126,R,18.7,MISRA C 2012,Required,Yes,Yes,
128*6c2c8528SSandrine Bailleux127,R,18.8,MISRA C 2012,Required,Yes,Yes,
129*6c2c8528SSandrine Bailleux128,R,19.1,MISRA C 2012,Mandatory,Yes,Yes,
130*6c2c8528SSandrine Bailleux129,R,19.2,MISRA C 2012,Advisory,Yes,Optional,"Unions can be useful. We almost don’t use them, so it’s ok."
131*6c2c8528SSandrine Bailleux130,R,20.1,MISRA C 2012,Advisory,Yes,Optional,In some files we have assembly-compatible includes followed by assembly-compatible definitions followed by C includes and C declarations. This is done to not have #ifdef in the include list.
132*6c2c8528SSandrine Bailleux131,R,20.2,MISRA C 2012,Required,Yes,Yes,
133*6c2c8528SSandrine Bailleux132,R,20.3,MISRA C 2012,Required,Yes,Yes,
134*6c2c8528SSandrine Bailleux133,R,20.4,MISRA C 2012,Required,Yes,Yes,
135*6c2c8528SSandrine Bailleux134,R,20.5,MISRA C 2012,Advisory,Yes,Yes,
136*6c2c8528SSandrine Bailleux135,R,20.6,MISRA C 2012,Required,Yes,Yes,
137*6c2c8528SSandrine Bailleux136,R,20.7,MISRA C 2012,Required,Yes,Yes,
138*6c2c8528SSandrine Bailleux137,R,20.8,MISRA C 2012,Required,Yes,Optional,We need a new configuration system to fix all defects.
139*6c2c8528SSandrine Bailleux138,R,20.9,MISRA C 2012,Required,Yes,Optional,"We use a mix of #if and #ifdef for boolean macros, which may raise some failures here. We should consistently use one or the other"
140*6c2c8528SSandrine Bailleux139,R,20.10,MISRA C 2012,Advisory,Yes,Optional,"It’s good to avoid them, but they are sometimes needed."
141*6c2c8528SSandrine Bailleux140,R,20.11,MISRA C 2012,Required,Yes,Yes,
142*6c2c8528SSandrine Bailleux141,R,20.12,MISRA C 2012,Required,Yes,Yes,
143*6c2c8528SSandrine Bailleux142,R,20.13,MISRA C 2012,Required,Yes,Yes,
144*6c2c8528SSandrine Bailleux143,R,20.14,MISRA C 2012,Required,Yes,Yes,
145*6c2c8528SSandrine Bailleux144,R,21.1,MISRA C 2012,Required,Yes,Yes,
146*6c2c8528SSandrine Bailleux145,R,21.2,MISRA C 2012,Required,Yes,Yes,
147*6c2c8528SSandrine Bailleux146,R,21.3,MISRA C 2012,Required,Yes,Yes,
148*6c2c8528SSandrine Bailleux147,R,21.4,MISRA C 2012,Required,Yes,Yes,
149*6c2c8528SSandrine Bailleux148,R,21.5,MISRA C 2012,Required,Yes,Yes,
150*6c2c8528SSandrine Bailleux149,R,21.6,MISRA C 2012,Required,No,No,This bans printf.
151*6c2c8528SSandrine Bailleux150,R,21.7,MISRA C 2012,Required,Yes,Yes,
152*6c2c8528SSandrine Bailleux151,R,21.8,MISRA C 2012,Required,Yes,Yes,
153*6c2c8528SSandrine Bailleux152,R,21.9,MISRA C 2012,Required,Yes,Yes,
154*6c2c8528SSandrine Bailleux153,R,21.10,MISRA C 2012,Required,Yes,Yes,
155*6c2c8528SSandrine Bailleux154,R,21.11,MISRA C 2012,Required,Yes,Yes,
156*6c2c8528SSandrine Bailleux155,R,21.12,MISRA C 2012,Advisory,Yes,Yes,
157*6c2c8528SSandrine Bailleux156,R,21.13,MISRA C 2012 AMD-1,Mandatory,Yes,Yes,
158*6c2c8528SSandrine Bailleux157,R,21.14,MISRA C 2012 AMD-1,Required,Yes,Yes,
159*6c2c8528SSandrine Bailleux158,R,21.15,MISRA C 2012 AMD-1,Required,Yes,Yes,
160*6c2c8528SSandrine Bailleux159,R,21.16,MISRA C 2012 AMD-1,Required,Yes,Yes,
161*6c2c8528SSandrine Bailleux160,R,21.17,MISRA C 2012 AMD-1,Mandatory,Yes,Yes,
162*6c2c8528SSandrine Bailleux161,R,21.18,MISRA C 2012 AMD-1,Mandatory,Yes,Yes,
163*6c2c8528SSandrine Bailleux162,R,21.19,MISRA C 2012 AMD-1,Mandatory,Yes,Yes,
164*6c2c8528SSandrine Bailleux163,R,21.20,MISRA C 2012 AMD-1,Mandatory,Yes,Yes,
165*6c2c8528SSandrine Bailleux164,R,22.1,MISRA C 2012,Required,Yes,Yes,
166*6c2c8528SSandrine Bailleux165,R,22.2,MISRA C 2012,Mandatory,Yes,Yes,
167*6c2c8528SSandrine Bailleux166,R,22.3,MISRA C 2012,Required,Yes,Yes,
168*6c2c8528SSandrine Bailleux167,R,22.4,MISRA C 2012,Mandatory,Yes,Yes,
169*6c2c8528SSandrine Bailleux168,R,22.5,MISRA C 2012,Mandatory,Yes,Yes,
170*6c2c8528SSandrine Bailleux169,R,22.6,MISRA C 2012,Mandatory,Yes,Yes,
171*6c2c8528SSandrine Bailleux170,R,22.7,MISRA C 2012 AMD-1,Required,Yes,Yes,
172*6c2c8528SSandrine Bailleux171,R,22.8,MISRA C 2012 AMD-1,Required,Yes,Yes,
173*6c2c8528SSandrine Bailleux172,R,22.9,MISRA C 2012 AMD-1,Required,Yes,Yes,
174*6c2c8528SSandrine Bailleux173,R,22.10,MISRA C 2012 AMD-1,Required,Yes,Yes,
175