Misra: Remove feature matrix for now. Implement 7.3.

This commit is contained in:
Daniel Marjamäki 2017-04-11 19:03:35 +02:00
parent bf209890cb
commit f4327f5e45
2 changed files with 10 additions and 147 deletions

View File

@ -12,6 +12,10 @@ void misra_7_1() {
int x = 066; // 71 int x = 066; // 71
} }
void misra_7_3() {
int x = 12l; // 73
}
void misra_13_5() { void misra_13_5() {
if (x && (y++ < 123)){} // 135 if (x && (y++ < 123)){} // 135
} }

View File

@ -31,153 +31,6 @@ def isBoolExpression(expr):
return expr and expr.str in ['!', '==', '!=', '<', '<=', '>', '>=', '&&', '||'] return expr and expr.str in ['!', '==', '!=', '<', '<=', '>', '>=', '&&', '||']
# 1.1 Done. Use compiler.
# 1.2 Done. gcc
# 1.3 Done. Use Cppcheck, compiler, ..
# 2.1 Done. Use Cppcheck, clang, etc.
# 2.2 Done. Use Cppcheck
# 2.3 TODO
# 2.4 TODO
# 2.5 Done. clang
# 2.6 Done. Cppcheck
# 2.7 Done. clang, gcc
# 3.1 TODO
# 3.2 TODO
# 4.1 TODO
# 4.2 Done. clang, gcc
# 5.1 Done.
# 5.2 Done.
# 5.3 Done. -Wshadow
# 5.4 Done. clang -Weverything
# 5.5 TODO
# 5.6 TODO
# 5.7 TODO
# 5.8 Done.
# 5.9 Done. -Wshadow
# 6.1 TODO
# 6.2 TODO
# 7.1 Done.
# 7.2 TODO
# 7.3 TODO
# 7.4 Done. Cppcheck, gcc, clang
# 8.1 Done. gcc, clang
# 8.2 TODO
# 8.3 Done. Cppcheck
# 8.4 Done. Clang
# 8.5 TODO
# 8.6 TODO
# 8.7 TODO
# 8.8 TODO
# 8.9 TODO
# 8.10 TODO
# 8.11 TODO
# 8.12 TODO
# 8.13 TODO
# 8.14 TODO
# 9.1 Done. Cppcheck.
# 9.2 TODO
# 9.3 TODO
# 9.4 TODO
# 9.5 TODO
# 10.1 TODO
# 10.2 TODO
# 10.3 Done. Cppcheck.
# 10.4 TODO
# 10.5 TODO
# 10.6 TODO
# 10.7 TODO
# 10.8 TODO
# 11.1 TODO
# 11.2 TODO
# 11.3 TODO
# 11.4 TODO
# 11.5 TODO
# 11.6 TODO
# 11.7 TODO
# 11.8 TODO
# 11.9 TODO
# 12.1 TODO
# 12.2 Done. Cppcheck.
# 12.3 TODO
# 12.4 TODO
# 13.1 TODO
# 13.2 TODO
# 13.3 TODO
# 13.4 TODO
# 13.5 Done
# 13.6 Done. Cppcheck.
# 14.1 TODO
# 14.2 TODO
# 14.3 TODO
# 14.4 Done.
# 15.1 Done.
# 15.2 TODO
# 15.3 TODO
# 15.4 TODO
# 15.5 TODO
# 15.6 TODO
# 15.7 TODO
# 16.1 TODO
# 16.2 TODO
# 16.3 TODO
# 16.4 TODO
# 16.5 TODO
# 16.6 TODO
# 16.7 TODO
# 17.1 TODO
# 17.2 TODO
# 17.3 Done. Compiler.
# 17.4 Done. Compiler.
# 17.5 Done. Cppcheck.
# 17.6 TODO
# 17.7 TODO
# 17.8 TODO
# 18.1 TODO
# 18.2 TODO. Cppcheck.
# 18.3 TODO. Cppcheck.
# 18.4 TODO
# 18.5 TODO
# 18.6 TODO
# 18.7 TODO
# 18.8 TODO
# 19.1 TODO
# 19.2 TODO
# 20.1 TODO
# 20.2 TODO
# 20.3 TODO
# 20.4 TODO
# 20.5 TODO
# 20.6 TODO
# 20.7 TODO
# 20.8 TODO
# 20.9 TODO
# 20.10 TODO
# 20.11 TODO
# 20.12 TODO
# 20.13 TODO
# 20.14 TODO
# 21.1 TODO
# 21.2 TODO
# 21.3 TODO
# 21.4 TODO
# 21.5 TODO
# 21.6 TODO
# 21.7 TODO
# 21.8 TODO
# 21.9 TODO
# 21.10 TODO
# 21.11 TODO
# 21.12 TODO
# 22.1 TODO
# 22.2 TODO
# 22.3 TODO
# 22.4 TODO
# 22.5 TODO
# 22.6 TODO
def misra_5_1(data): def misra_5_1(data):
for token in data.tokenlist: for token in data.tokenlist:
if token.isName and len(token.str) > 31: if token.isName and len(token.str) > 31:
@ -188,6 +41,11 @@ def misra_7_1(rawTokens):
if re.match(r'^0[0-7]+$', tok.str): if re.match(r'^0[0-7]+$', tok.str):
reportError(tok, 71) reportError(tok, 71)
def misra_7_3(rawTokens):
for tok in rawTokens:
if re.match(r'^[0-9]+l+$', tok.str):
reportError(tok, 73)
def misra_13_5(data): def misra_13_5(data):
for token in data.tokenlist: for token in data.tokenlist:
if token.isLogicalOp and hasSideEffects(token.astOperand2): if token.isLogicalOp and hasSideEffects(token.astOperand2):
@ -223,6 +81,7 @@ for arg in sys.argv[1:]:
misra_5_1(cfg) misra_5_1(cfg)
if cfgNumber == 1: if cfgNumber == 1:
misra_7_1(data.rawTokens) misra_7_1(data.rawTokens)
misra_7_3(data.rawTokens)
misra_13_5(cfg) misra_13_5(cfg)
misra_14_4(cfg) misra_14_4(cfg)
misra_15_1(cfg) misra_15_1(cfg)