Misra: Add rule 8.12
This commit is contained in:
parent
b2a846dff0
commit
ad8fef8a2f
|
@ -26,6 +26,11 @@ void misra_7_3() {
|
||||||
int x = 12lu; // 7.3
|
int x = 12lu; // 7.3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum e812 {
|
||||||
|
A=3,
|
||||||
|
B=3 // 8.12
|
||||||
|
};
|
||||||
|
|
||||||
void misra_8_14(char * restrict str) {} // 8.14
|
void misra_8_14(char * restrict str) {} // 8.14
|
||||||
|
|
||||||
void misra_9_5() {
|
void misra_9_5() {
|
||||||
|
|
|
@ -275,6 +275,26 @@ def misra_7_3(rawTokens):
|
||||||
if re.match(r'^[0-9]+l', tok.str):
|
if re.match(r'^[0-9]+l', tok.str):
|
||||||
reportError(tok, 7, 3)
|
reportError(tok, 7, 3)
|
||||||
|
|
||||||
|
def misra_8_12(data):
|
||||||
|
for token in data.tokenlist:
|
||||||
|
if token.str != '{':
|
||||||
|
continue
|
||||||
|
if not token.scope or token.scope.type != 'Enum':
|
||||||
|
continue
|
||||||
|
etok = token
|
||||||
|
values = []
|
||||||
|
while etok:
|
||||||
|
if etok.str == '}':
|
||||||
|
break
|
||||||
|
if etok.str == '=':
|
||||||
|
rhsValues = etok.astOperand2.values
|
||||||
|
if rhsValues and len(rhsValues)==1:
|
||||||
|
if rhsValues[0].intvalue in values:
|
||||||
|
reportError(etok, 8, 12)
|
||||||
|
break
|
||||||
|
values.append(rhsValues[0].intvalue)
|
||||||
|
etok = etok.next
|
||||||
|
|
||||||
def misra_8_14(rawTokens):
|
def misra_8_14(rawTokens):
|
||||||
for token in rawTokens:
|
for token in rawTokens:
|
||||||
if token.str == 'restrict':
|
if token.str == 'restrict':
|
||||||
|
@ -474,7 +494,7 @@ def misra_12_2(data):
|
||||||
|
|
||||||
def misra_12_3(data):
|
def misra_12_3(data):
|
||||||
for token in data.tokenlist:
|
for token in data.tokenlist:
|
||||||
if token.str != ',':
|
if token.str != ',' or token.scope.type == 'Enum':
|
||||||
continue
|
continue
|
||||||
if token.astParent and (token.astParent.str in ['(', ',', '{']):
|
if token.astParent and (token.astParent.str in ['(', ',', '{']):
|
||||||
continue
|
continue
|
||||||
|
@ -882,6 +902,8 @@ for arg in sys.argv[1:]:
|
||||||
if cfgNumber == 1:
|
if cfgNumber == 1:
|
||||||
misra_7_1(data.rawTokens)
|
misra_7_1(data.rawTokens)
|
||||||
misra_7_3(data.rawTokens)
|
misra_7_3(data.rawTokens)
|
||||||
|
misra_8_12(cfg)
|
||||||
|
if cfgNumber == 1:
|
||||||
misra_8_14(data.rawTokens)
|
misra_8_14(data.rawTokens)
|
||||||
misra_9_5(data.rawTokens)
|
misra_9_5(data.rawTokens)
|
||||||
misra_10_4(cfg)
|
misra_10_4(cfg)
|
||||||
|
|
Loading…
Reference in New Issue