Files
bl-mt798x/atf-20250711/docs/process/misra-compliance.csv
2025-08-21 14:41:45 +08:00

10 KiB

1SeqDir / RuleNumberSourceCategoryChecker EnabledEnforcedComments
21D1.1MISRA C 2012RequiredN/AYes
32D2.1MISRA C 2012RequiredN/AYes
43D3.1MISRA C 2012RequiredN/ANoIt can’t be done retroactively.
54D4.1MISRA C 2012RequiredN/AYes
65D4.2MISRA C 2012AdvisoryN/AYes
76D4.3MISRA C 2012RequiredYesYes
87D4.4MISRA C 2012AdvisoryYesYes
98D4.5MISRA C 2012AdvisoryYesYes
109D4.6MISRA C 2012AdvisoryNoNoWe use a mix of both. It would be too disruptive for the project to change.
1110D4.7MISRA C 2012RequiredYesYes
1211D4.8MISRA C 2012AdvisoryNoNoFixing all instances would involve invasive changes to the codebase for no good reason.
1312D4.9MISRA C 2012AdvisoryNoNoWe 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.
1413D4.10MISRA C 2012RequiredYesYes
1514D4.11MISRA C 2012RequiredYesYes
1615D4.12MISRA C 2012RequiredYesYes
1716D4.13MISRA C 2012AdvisoryYesYes
1817D4.14MISRA C 2012 AMD-1RequiredYesYes
1918R1.1MISRA C 2012RequiredYesYes
2019R1.2MISRA C 2012AdvisoryYesOptionalIt bans __attribute__(()) and similar helpers.
2120R1.3MISRA C 2012RequiredN/AYes
2221R2.1MISRA C 2012RequiredYesYes
2322R2.2MISRA C 2012RequiredYesYes
2423R2.3MISRA C 2012AdvisoryYesOptionalIt prevents the usage of CASSERT().
2524R2.4MISRA C 2012AdvisoryNoNoHeader files may use enumerations instead of defines to group sets of values.
2625R2.5MISRA C 2012AdvisoryNoNoWe 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.
2726R2.6MISRA C 2012AdvisoryYesYes
2827R2.7MISRA C 2012AdvisoryNoNoDoesn't allow for simple implementations of porting functions that don't require all parameters.
2928R3.1MISRA C 2012RequiredYesYes
3029R3.2MISRA C 2012RequiredYesYes
3130R4.1MISRA C 2012RequiredYesYes
3231R4.2MISRA C 2012AdvisoryYesYes
3332R5.1MISRA C 2012RequiredNoNoWe use weak symbols that prevent us from complying with this rule.
3433R5.2MISRA C 2012RequiredYesYes
3534R5.3MISRA C 2012RequiredYesYes
3635R5.4MISRA C 2012RequiredYesYes
3736R5.5MISRA C 2012RequiredYesYes
3837R5.6MISRA C 2012RequiredYesYes
3938R5.7MISRA C 2012RequiredYesOptionalFixing all existing defects is problematic because of compatibility issues.
4039R5.8MISRA C 2012RequiredNoNoWe use weak symbols that prevent us from complying with this rule.
4140R5.9MISRA C 2012AdvisoryYesYes
4241R6.1MISRA C 2012RequiredYesYes
4342R6.2MISRA C 2012RequiredYesYes
4443R7.1MISRA C 2012RequiredYesYes
4544R7.2MISRA C 2012RequiredYesYes
4645R7.3MISRA C 2012RequiredYesYes
4746R7.4MISRA C 2012RequiredYesYes
4847R8.1MISRA C 2012RequiredYesYes
4948R8.2MISRA C 2012RequiredYesYes
5049R8.3MISRA C 2012RequiredYesYes
5150R8.4MISRA C 2012RequiredYesYes
5251R8.5MISRA C 2012RequiredYesYes
5352R8.6MISRA C 2012RequiredNoNoWe use weak symbols that prevent us from complying with this rule.
5453R8.7MISRA C 2012AdvisoryNoNoBans pattern of declaring funcs in private header that are used/defined in separate translation units, which seems over the top.
5554R8.8MISRA C 2012RequiredYesYes
5655R8.9MISRA C 2012AdvisoryYesYes
5756R8.10MISRA C 2012RequiredYesYes
5857R8.11MISRA C 2012AdvisoryYesOptionalThis may not be possible in some interfaces.
5958R8.12MISRA C 2012RequiredYesYes
6059R8.13MISRA C 2012AdvisoryYesOptionalThe benefits of fixing existing code aren’t worth the effort.
6160R8.14MISRA C 2012RequiredYesYes
6261R9.1MISRA C 2012MandatoryYesYes
6362R9.2MISRA C 2012RequiredYesYes
6463R9.3MISRA C 2012RequiredYesYes
6564R9.4MISRA C 2012RequiredYesYes
6665R9.5MISRA C 2012RequiredYesYes
6766R10.1MISRA C 2012RequiredYesOptionalFixing existing code may be counter-productive and introduce bugs.
6867R10.2MISRA C 2012RequiredYesYes
6968R10.3MISRA C 2012RequiredYesOptionalFixing existing code may be counter-productive and introduce bugs.
7069R10.4MISRA C 2012RequiredYesOptionalFixing existing code may be counter-productive and introduce bugs.
7170R10.5MISRA C 2012AdvisoryYesYes
7271R10.6MISRA C 2012RequiredYesYes
7372R10.7MISRA C 2012RequiredYesYes
7473R10.8MISRA C 2012RequiredYesYes
7574R11.1MISRA C 2012RequiredYesYes
7675R11.2MISRA C 2012RequiredYesYes
7776R11.3MISRA C 2012RequiredYesYes
7877R11.4MISRA C 2012AdvisoryNoNoThis would be invasive for TF (e.g. in exported linker script macros). Also bans conversion from uintptr_t.
7978R11.5MISRA C 2012AdvisoryNoNoThis seems to preclude the pattern of using void * in interfaces to hide the real object, which we use extensively.
8079R11.6MISRA C 2012RequiredYesOptionalThis is needed in several cases.
8180R11.7MISRA C 2012RequiredYesYes
8281R11.8MISRA C 2012RequiredYesYes
8382R11.9MISRA C 2012RequiredYesYes
8483R12.1MISRA C 2012AdvisoryYesYes
8584R12.2MISRA C 2012RequiredYesYesThis rule is fine, but there are lots of false positives in Coverity.
8685R12.3MISRA C 2012AdvisoryYesYes
8786R12.4MISRA C 2012AdvisoryYesYes
8887R12.5MISRA C 2012 AMD-1MandatoryYesYes
8988R13.1MISRA C 2012RequiredYesYes
9089R13.2MISRA C 2012RequiredYesYes
9190R13.3MISRA C 2012AdvisoryYesYes
9291R13.4MISRA C 2012AdvisoryYesYes
9392R13.5MISRA C 2012RequiredYesYes
9493R13.6MISRA C 2012MandatoryYesYes
9594R14.1MISRA C 2012RequiredYesYes
9695R14.2MISRA C 2012RequiredYesYes
9796R14.3MISRA C 2012RequiredYesYes
9897R14.4MISRA C 2012RequiredYesYes
9998R15.1MISRA C 2012AdvisoryNoNoIn some cases goto may be useful for readability.
10099R15.2MISRA C 2012RequiredYesYes
101100R15.3MISRA C 2012RequiredYesYes
102101R15.4MISRA C 2012AdvisoryYesYes
103102R15.5MISRA C 2012AdvisoryNoNoThis has no real value. It may make code less understandable than before.
104103R15.6MISRA C 2012RequiredNoNoThis directly contradicts the Linux style guidelines and would require many changes. We would have to remove that rule from checkpatch.
105104R15.7MISRA C 2012RequiredYesYes
106105R16.1MISRA C 2012RequiredNoNoCannot comply with this unless we comply with 16.3
107106R16.2MISRA C 2012RequiredYesYes
108107R16.3MISRA C 2012RequiredNoNoReturns within switch statements and fall-throughs can improve readability.
109108R16.4MISRA C 2012RequiredYesYes
110109R16.5MISRA C 2012RequiredYesYes
111110R16.6MISRA C 2012RequiredYesYes
112111R16.7MISRA C 2012RequiredYesYes
113112R17.1MISRA C 2012RequiredNoNoThis is needed for printf.
114113R17.2MISRA C 2012RequiredYesYesBans recursion. We consider it acceptable if the max depth is known.
115114R17.3MISRA C 2012MandatoryYesYes
116115R17.4MISRA C 2012MandatoryYesYes
117116R17.5MISRA C 2012AdvisoryYesYes
118117R17.6MISRA C 2012MandatoryYesYes
119118R17.7MISRA C 2012RequiredYesOptionalIn some cases it doesn’t add any value to the code (like with memset() or printf()).
120119R17.8MISRA C 2012AdvisoryYesOptionalIt would make some one-line functions grow in size for no reason.
121120R18.1MISRA C 2012RequiredYesYes
122121R18.2MISRA C 2012RequiredYesYes
123122R18.3MISRA C 2012RequiredYesYes
124123R18.4MISRA C 2012AdvisoryYesYes
125124R18.5MISRA C 2012AdvisoryYesYes
126125R18.6MISRA C 2012RequiredYesYes
127126R18.7MISRA C 2012RequiredYesYes
128127R18.8MISRA C 2012RequiredYesYes
129128R19.1MISRA C 2012MandatoryYesYes
130129R19.2MISRA C 2012AdvisoryYesOptionalUnions can be useful. We almost don’t use them, so it’s ok.
131130R20.1MISRA C 2012AdvisoryYesOptionalIn 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.
132131R20.2MISRA C 2012RequiredYesYes
133132R20.3MISRA C 2012RequiredYesYes
134133R20.4MISRA C 2012RequiredYesYes
135134R20.5MISRA C 2012AdvisoryYesYes
136135R20.6MISRA C 2012RequiredYesYes
137136R20.7MISRA C 2012RequiredYesYes
138137R20.8MISRA C 2012RequiredYesOptionalWe need a new configuration system to fix all defects.
139138R20.9MISRA C 2012RequiredYesOptionalWe use a mix of #if and #ifdef for boolean macros, which may raise some failures here. We should consistently use one or the other
140139R20.10MISRA C 2012AdvisoryYesOptionalIt’s good to avoid them, but they are sometimes needed.
141140R20.11MISRA C 2012RequiredYesYes
142141R20.12MISRA C 2012RequiredYesYes
143142R20.13MISRA C 2012RequiredYesYes
144143R20.14MISRA C 2012RequiredYesYes
145144R21.1MISRA C 2012RequiredYesYes
146145R21.2MISRA C 2012RequiredYesYes
147146R21.3MISRA C 2012RequiredYesYes
148147R21.4MISRA C 2012RequiredYesYes
149148R21.5MISRA C 2012RequiredYesYes
150149R21.6MISRA C 2012RequiredNoNoThis bans printf.
151150R21.7MISRA C 2012RequiredYesYes
152151R21.8MISRA C 2012RequiredYesYes
153152R21.9MISRA C 2012RequiredYesYes
154153R21.10MISRA C 2012RequiredYesYes
155154R21.11MISRA C 2012RequiredYesYes
156155R21.12MISRA C 2012AdvisoryYesYes
157156R21.13MISRA C 2012 AMD-1MandatoryYesYes
158157R21.14MISRA C 2012 AMD-1RequiredYesYes
159158R21.15MISRA C 2012 AMD-1RequiredYesYes
160159R21.16MISRA C 2012 AMD-1RequiredYesYes
161160R21.17MISRA C 2012 AMD-1MandatoryYesYes
162161R21.18MISRA C 2012 AMD-1MandatoryYesYes
163162R21.19MISRA C 2012 AMD-1MandatoryYesYes
164163R21.20MISRA C 2012 AMD-1MandatoryYesYes
165164R22.1MISRA C 2012RequiredYesYes
166165R22.2MISRA C 2012MandatoryYesYes
167166R22.3MISRA C 2012RequiredYesYes
168167R22.4MISRA C 2012MandatoryYesYes
169168R22.5MISRA C 2012MandatoryYesYes
170169R22.6MISRA C 2012MandatoryYesYes
171170R22.7MISRA C 2012 AMD-1RequiredYesYes
172171R22.8MISRA C 2012 AMD-1RequiredYesYes
173172R22.9MISRA C 2012 AMD-1RequiredYesYes
174173R22.10MISRA C 2012 AMD-1RequiredYesYes