1{
2    "version": "1.0",
3    "content": [
4        {
5            "id": "SAF-0-safe",
6            "analyser": {
7                "eclair": "MC3A2.R8.6",
8                "coverity": "misra_c_2012_rule_8_6_violation"
9            },
10            "name": "Rule 8.6: linker script defined symbols",
11            "text": "It is safe to declare this symbol because it is defined in the linker script."
12        },
13        {
14            "id": "SAF-1-safe",
15            "analyser": {
16                "eclair": "MC3A2.R8.4"
17            },
18            "name": "Rule 8.4: asm-only definition",
19            "text": "Functions and variables used only by asm modules do not need to have a visible declaration prior to their definition."
20        },
21        {
22            "id": "SAF-2-safe",
23            "analyser": {
24                "eclair": "MC3A2.R10.1"
25            },
26            "name": "MC3A2.R10.1: use of an enumeration constant in an arithmetic operation",
27            "text": "This violation can be fixed with a cast to (int) of the enumeration constant, but a deviation was chosen due to code readability (see also the comment in BITS_TO_LONGS)."
28        },
29        {
30            "id": "SAF-3-safe",
31            "analyser": {
32                "eclair": "MC3A2.R20.4"
33            },
34            "name": "MC3A2.R20.4: allow the definition of a macro with the same name as a keyword in some special cases",
35            "text": "The definition of a macro with the same name as a keyword can be useful in certain configurations to improve the guarantees that can be provided by Xen. See docs/misra/deviations.rst for a precise rationale for all such cases."
36        },
37        {
38            "id": "SAF-4-safe",
39            "analyser": {
40                "eclair": "MC3A2.R17.1"
41            },
42            "name": "Rule 17.1: internal helper functions made to break long running hypercalls into multiple calls.",
43            "text": "They need to take a variable number of arguments depending on the original hypercall they are trying to continue."
44        },
45        {
46            "id": "SAF-5-safe",
47            "analyser": {
48                "eclair": "MC3A2.R16.2"
49            },
50            "name": "MC3A2.R16.2: using a case label when the most closely-enclosing compound statement is not a switch statement",
51            "text": "A switch label enclosed by some compound statement that is not the body of a switch is permitted within local helper macros that are unlikely to be misused or misunderstood."
52        },
53        {
54            "id": "SAF-6-safe",
55            "analyser": {
56                "eclair": "MC3A2.R20.12"
57            },
58            "name": "MC3A2.R20.12: use of a macro argument that deliberately violates the Rule",
59            "text": "A macro parameter that is itself a macro is intentionally used within the macro both as a regular parameter and for text replacement."
60        },
61        {
62            "id": "SAF-7-safe",
63            "analyser": {
64                "eclair": "MC3A2.R20.7"
65            },
66            "name": "MC3A2.R20.7: deliberately non-parenthesized macro argument",
67            "text": "A macro parameter expands to an expression that is non-parenthesized, as doing so would break the functionality."
68        },
69        {
70            "id": "SAF-8-safe",
71            "analyser": {
72                "eclair": "MC3A2.D4.10"
73            },
74            "name": "Dir 4.10: headers that leave it up to the caller to include them correctly",
75            "text": "Headers that deliberatively leave the responsability of their correct inclusion to the caller are allowed."
76        },
77        {
78            "id": "SAF-9-safe",
79            "analyser": {
80                "eclair": "MC3A2.D4.10"
81            },
82            "name": "Dir 4.10: empty headers",
83            "text": "Empty headers pose no risk if included more than once."
84        },
85        {
86            "id": "SAF-10-safe",
87            "analyser": {
88                "eclair": "MC3A2.D4.10"
89            },
90            "name": "Dir 4.10: direct inclusion guard before",
91            "text": "Headers with just the direct inclusion guard before the inclusion guard are safe."
92        },
93        {
94            "id": "SAF-11-safe",
95            "analyser": {
96                "eclair": "MC3A2.R16.6"
97            },
98            "name": "Rule 16.6: single clause due to kconfig",
99            "text": "A switch statement with a single switch clause because other switch clauses are disabled in a given kconfig is safe."
100        },
101        {
102            "id": "SAF-12-safe",
103            "analyser": {
104                "eclair": "MC3A2.R16.6"
105            },
106            "name": "Rule 16.6: single clause due to future expansion",
107            "text": "A switch statement with a single switch clause to purposely enable future additions of new cases is safe."
108        },
109        {
110            "id": "SAF-13-safe",
111            "analyser": {
112                "eclair": "MC3A2.R8.4"
113            },
114            "name": "Rule 8.4: compiler-called function",
115            "text": "A function, all invocations of which are compiler generated, does not need to have a visible declaration prior to its definition."
116        },
117        {
118            "id": "SAF-14-safe",
119            "analyser": {
120                "eclair": "MC3A2.R10.1"
121            },
122            "name": "Rule 10.1: use boolean as an array index",
123            "text": "Using a boolean type as an array index is safe."
124        },
125        {
126            "id": "SAF-15-safe",
127            "analyser": {},
128            "name": "Sentinel",
129            "text": "Next ID to be used"
130        }
131    ]
132}
133