From d695c6c76626c1966cd32dae1ddc422ad97c4457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 11 Dec 2023 15:18:19 +0100 Subject: [PATCH] Update tools/get_checkers.py and lib/checkers.cpp (#5749) --- lib/checkers.cpp | 428 +++++++++++--------- tools/get_checkers.py | 922 ++++++++++++------------------------------ 2 files changed, 489 insertions(+), 861 deletions(-) diff --git a/lib/checkers.cpp b/lib/checkers.cpp index 5921ef8de..da054e635 100644 --- a/lib/checkers.cpp +++ b/lib/checkers.cpp @@ -16,6 +16,9 @@ * along with this program. If not, see . */ +// This file is auto-generated by tools/get_checkers.py: +// python3 tools/get_checkers.py > lib/checkers.cpp + #include "checkers.h" namespace checkers { @@ -201,6 +204,7 @@ namespace checkers { const std::map premiumCheckers{ {"Autosar: A0-1-3","style"}, + {"Autosar: A0-1-6","style"}, {"Autosar: A0-4-2","style"}, {"Autosar: A0-4-4","style"}, {"Autosar: A10-1-1","style"}, @@ -226,6 +230,20 @@ namespace checkers { {"Autosar: A2-13-5","style"}, {"Autosar: A2-13-6","style"}, {"Autosar: A2-5-2","style"}, + {"Autosar: A20-8-2","warning"}, + {"Autosar: A20-8-3","warning"}, + {"Autosar: A20-8-4","style"}, + {"Autosar: A20-8-5","style"}, + {"Autosar: A20-8-6","style"}, + {"Autosar: A21-8-1","warning"}, + {"Autosar: A23-0-1","style"}, + {"Autosar: A25-1-1","warning"}, + {"Autosar: A25-4-1","warning"}, + {"Autosar: A26-5-1","style"}, + {"Autosar: A26-5-2","style"}, + {"Autosar: A27-0-1","warning"}, + {"Autosar: A27-0-2","style"}, + {"Autosar: A27-0-4","style"}, {"Autosar: A3-1-3","style"}, {"Autosar: A3-1-4","style"}, {"Autosar: A3-3-1","style"}, @@ -237,9 +255,9 @@ namespace checkers { {"Autosar: A5-1-1","style"}, {"Autosar: A5-1-2","style"}, {"Autosar: A5-1-3","style"}, - {"Autosar: A5-16-1","style"}, {"Autosar: A5-1-6","style"}, {"Autosar: A5-1-7","style"}, + {"Autosar: A5-16-1","style"}, {"Autosar: A5-2-1","style"}, {"Autosar: A5-2-4","style"}, {"Autosar: A6-5-3","style"}, @@ -249,6 +267,63 @@ namespace checkers { {"Autosar: A8-4-1","style"}, {"Autosar: A8-5-3","style"}, {"Autosar: A9-3-1","style"}, + {"Cert C++: CON51-CPP",""}, + {"Cert C++: CON52-CPP","style"}, + {"Cert C++: CON53-CPP","style"}, + {"Cert C++: CON54-CPP","style"}, + {"Cert C++: CON55-CPP","style"}, + {"Cert C++: CON56-CPP",""}, + {"Cert C++: CTR50-CPP",""}, + {"Cert C++: CTR52-CPP",""}, + {"Cert C++: CTR53-CPP",""}, + {"Cert C++: CTR56-CPP","style"}, + {"Cert C++: CTR57-CPP","warning"}, + {"Cert C++: CTR58-CPP","warning"}, + {"Cert C++: DCL50-CPP","style"}, + {"Cert C++: DCL51-CPP","style"}, + {"Cert C++: DCL52-CPP","style"}, + {"Cert C++: DCL53-CPP","style"}, + {"Cert C++: DCL54-CPP",""}, + {"Cert C++: DCL56-CPP",""}, + {"Cert C++: DCL58-CPP","style"}, + {"Cert C++: DCL59-CPP","style"}, + {"Cert C++: ERR50-CPP",""}, + {"Cert C++: ERR51-CPP","style"}, + {"Cert C++: ERR52-CPP","style"}, + {"Cert C++: ERR53-CPP",""}, + {"Cert C++: ERR54-CPP",""}, + {"Cert C++: ERR55-CPP",""}, + {"Cert C++: ERR56-CPP",""}, + {"Cert C++: ERR58-CPP",""}, + {"Cert C++: ERR59-CPP","warning"}, + {"Cert C++: ERR60-CPP","warning"}, + {"Cert C++: ERR61-CPP","style"}, + {"Cert C++: ERR62-CPP","style"}, + {"Cert C++: EXP50-CPP",""}, + {"Cert C++: EXP51-CPP",""}, + {"Cert C++: EXP55-CPP",""}, + {"Cert C++: EXP56-CPP",""}, + {"Cert C++: EXP57-CPP","style"}, + {"Cert C++: EXP58-CPP","style"}, + {"Cert C++: EXP59-CPP",""}, + {"Cert C++: FIO51-CPP","style"}, + {"Cert C++: INT50-CPP","style"}, + {"Cert C++: MEM52-CPP",""}, + {"Cert C++: MEM53-CPP",""}, + {"Cert C++: MEM54-CPP",""}, + {"Cert C++: MEM55-CPP",""}, + {"Cert C++: MEM57-CPP","style"}, + {"Cert C++: MSC50-CPP","style"}, + {"Cert C++: MSC51-CPP","style"}, + {"Cert C++: MSC53-CPP",""}, + {"Cert C++: MSC54-CPP","style"}, + {"Cert C++: OOP51-CPP",""}, + {"Cert C++: OOP55-CPP",""}, + {"Cert C++: OOP56-CPP",""}, + {"Cert C++: OOP57-CPP",""}, + {"Cert C++: OOP58-CPP","style"}, + {"Cert C++: STR50-CPP",""}, + {"Cert C++: STR53-CPP",""}, {"Cert C: ARR30-C","warning"}, {"Cert C: ARR32-C","warning"}, {"Cert C: ARR37-C","warning"}, @@ -266,18 +341,6 @@ namespace checkers { {"Cert C: CON39-C","warning"}, {"Cert C: CON40-C","warning"}, {"Cert C: CON41-C","style"}, - {"Cert C++: CON51-CPP",""}, - {"Cert C++: CON52-CPP","style"}, - {"Cert C++: CON53-CPP","style"}, - {"Cert C++: CON54-CPP","style"}, - {"Cert C++: CON55-CPP","style"}, - {"Cert C++: CON56-CPP",""}, - {"Cert C++: CTR50-CPP",""}, - {"Cert C++: CTR52-CPP",""}, - {"Cert C++: CTR53-CPP",""}, - {"Cert C++: CTR56-CPP","style"}, - {"Cert C++: CTR57-CPP",""}, - {"Cert C++: CTR58-CPP",""}, {"Cert C: DCL31-C","style"}, {"Cert C: DCL36-C","style"}, {"Cert C: DCL37-C","style"}, @@ -285,14 +348,6 @@ namespace checkers { {"Cert C: DCL39-C","style"}, {"Cert C: DCL40-C","style"}, {"Cert C: DCL41-C","style"}, - {"Cert C++: DCL50-CPP","style"}, - {"Cert C++: DCL51-CPP","style"}, - {"Cert C++: DCL52-CPP","style"}, - {"Cert C++: DCL53-CPP","style"}, - {"Cert C++: DCL54-CPP",""}, - {"Cert C++: DCL56-CPP",""}, - {"Cert C++: DCL58-CPP","style"}, - {"Cert C++: DCL59-CPP","style"}, {"Cert C: ENV30-C","style"}, {"Cert C: ENV31-C","style"}, {"Cert C: ENV32-C","style"}, @@ -301,18 +356,6 @@ namespace checkers { {"Cert C: ERR30-C","warning"}, {"Cert C: ERR32-C","warning"}, {"Cert C: ERR33-C","warning"}, - {"Cert C++: ERR50-CPP",""}, - {"Cert C++: ERR51-CPP","style"}, - {"Cert C++: ERR52-CPP","style"}, - {"Cert C++: ERR53-CPP",""}, - {"Cert C++: ERR54-CPP",""}, - {"Cert C++: ERR55-CPP",""}, - {"Cert C++: ERR56-CPP",""}, - {"Cert C++: ERR58-CPP",""}, - {"Cert C++: ERR59-CPP","warning"}, - {"Cert C++: ERR60-CPP","warning"}, - {"Cert C++: ERR61-CPP","style"}, - {"Cert C++: ERR62-CPP","style"}, {"Cert C: EXP32-C","warning"}, {"Cert C: EXP35-C",""}, {"Cert C: EXP36-C","style"}, @@ -322,13 +365,6 @@ namespace checkers { {"Cert C: EXP42-C","style"}, {"Cert C: EXP43-C","style"}, {"Cert C: EXP45-C","warning"}, - {"Cert C++: EXP50-CPP",""}, - {"Cert C++: EXP51-CPP",""}, - {"Cert C++: EXP55-CPP",""}, - {"Cert C++: EXP56-CPP",""}, - {"Cert C++: EXP57-CPP","style"}, - {"Cert C++: EXP58-CPP","style"}, - {"Cert C++: EXP59-CPP",""}, {"Cert C: FIO30-C","warning"}, {"Cert C: FIO32-C","style"}, {"Cert C: FIO34-C","style"}, @@ -338,7 +374,6 @@ namespace checkers { {"Cert C: FIO41-C","style"}, {"Cert C: FIO44-C","warning"}, {"Cert C: FIO45-C","warning"}, - {"Cert C++: FIO51-CPP","style"}, {"Cert C: FLP30-C","warning"}, {"Cert C: FLP36-C","portability"}, {"Cert C: FLP37-C","style"}, @@ -349,30 +384,15 @@ namespace checkers { {"Cert C: INT34-C","warning"}, {"Cert C: INT35-C","warning"}, {"Cert C: INT36-C","warning"}, - {"Cert C++: INT50-CPP","style"}, {"Cert C: MEM33-C","style"}, {"Cert C: MEM35-C","warning"}, {"Cert C: MEM36-C","warning"}, - {"Cert C++: MEM52-CPP",""}, - {"Cert C++: MEM53-CPP",""}, - {"Cert C++: MEM54-CPP",""}, - {"Cert C++: MEM55-CPP",""}, - {"Cert C++: MEM57-CPP","style"}, {"Cert C: MSC30-C","style"}, {"Cert C: MSC32-C","style"}, {"Cert C: MSC33-C","style"}, {"Cert C: MSC38-C","warning"}, {"Cert C: MSC39-C","warning"}, {"Cert C: MSC40-C","warning"}, - {"Cert C++: MSC50-CPP","style"}, - {"Cert C++: MSC51-CPP","style"}, - {"Cert C++: MSC53-CPP",""}, - {"Cert C++: MSC54-CPP","style"}, - {"Cert C++: OOP51-CPP",""}, - {"Cert C++: OOP55-CPP",""}, - {"Cert C++: OOP56-CPP",""}, - {"Cert C++: OOP57-CPP",""}, - {"Cert C++: OOP58-CPP","style"}, {"Cert C: PRE31-C","style"}, {"Cert C: SIG30-C","style"}, {"Cert C: SIG31-C","warning"}, @@ -382,8 +402,158 @@ namespace checkers { {"Cert C: STR32-C","warning"}, {"Cert C: STR34-C","warning"}, {"Cert C: STR38-C","style"}, - {"Cert C++: STR50-CPP",""}, - {"Cert C++: STR53-CPP",""}, + {"Misra C++: M0-1-11","style"}, + {"Misra C++: M0-1-12","style"}, + {"Misra C++: M0-1-4","style"}, + {"Misra C++: M0-1-5","style"}, + {"Misra C++: M0-1-7","style"}, + {"Misra C++: M0-1-8","style"}, + {"Misra C++: M10-1-1","style"}, + {"Misra C++: M10-1-2","style"}, + {"Misra C++: M10-1-3","style"}, + {"Misra C++: M10-2-1","style"}, + {"Misra C++: M10-3-1","style"}, + {"Misra C++: M10-3-3","style"}, + {"Misra C++: M11-0-1","style"}, + {"Misra C++: M12-1-2","style"}, + {"Misra C++: M12-8-1","style"}, + {"Misra C++: M12-8-2","style"}, + {"Misra C++: M14-5-1","warning"}, + {"Misra C++: M14-5-2","warning"}, + {"Misra C++: M14-5-3","warning"}, + {"Misra C++: M14-6-1","warning"}, + {"Misra C++: M14-6-2","warning"}, + {"Misra C++: M14-7-1","style"}, + {"Misra C++: M14-7-2","style"}, + {"Misra C++: M14-7-3","style"}, + {"Misra C++: M14-8-1","style"}, + {"Misra C++: M14-8-2","style"}, + {"Misra C++: M15-0-3",""}, + {"Misra C++: M15-1-1",""}, + {"Misra C++: M15-1-2","style"}, + {"Misra C++: M15-1-3","style"}, + {"Misra C++: M15-3-2","warning"}, + {"Misra C++: M15-3-3",""}, + {"Misra C++: M15-3-4",""}, + {"Misra C++: M15-4-1","style"}, + {"Misra C++: M15-5-2",""}, + {"Misra C++: M16-0-1","style"}, + {"Misra C++: M16-0-2","style"}, + {"Misra C++: M16-0-3","style"}, + {"Misra C++: M16-0-4","style"}, + {"Misra C++: M16-1-1","style"}, + {"Misra C++: M16-2-1","style"}, + {"Misra C++: M16-2-2","style"}, + {"Misra C++: M16-2-3","style"}, + {"Misra C++: M16-2-4","style"}, + {"Misra C++: M16-2-5","style"}, + {"Misra C++: M16-2-6","style"}, + {"Misra C++: M16-3-1","style"}, + {"Misra C++: M16-3-2","style"}, + {"Misra C++: M17-0-1","style"}, + {"Misra C++: M17-0-2","style"}, + {"Misra C++: M17-0-3","style"}, + {"Misra C++: M17-0-5","style"}, + {"Misra C++: M18-0-1","style"}, + {"Misra C++: M18-0-2","style"}, + {"Misra C++: M18-0-3","style"}, + {"Misra C++: M18-0-4","style"}, + {"Misra C++: M18-0-5","style"}, + {"Misra C++: M18-2-1","style"}, + {"Misra C++: M18-4-1","style"}, + {"Misra C++: M18-7-1","style"}, + {"Misra C++: M19-3-1","style"}, + {"Misra C++: M2-10-1","style"}, + {"Misra C++: M2-10-3","style"}, + {"Misra C++: M2-10-4","style"}, + {"Misra C++: M2-10-5","style"}, + {"Misra C++: M2-10-6","style"}, + {"Misra C++: M2-13-4","style"}, + {"Misra C++: M2-13-5","style"}, + {"Misra C++: M2-7-1","style"}, + {"Misra C++: M2-7-2","style"}, + {"Misra C++: M2-7-3","style"}, + {"Misra C++: M27-0-1","style"}, + {"Misra C++: M3-1-1","style"}, + {"Misra C++: M3-1-2","style"}, + {"Misra C++: M3-1-3","style"}, + {"Misra C++: M3-2-1",""}, + {"Misra C++: M3-3-1","style"}, + {"Misra C++: M3-3-2","style"}, + {"Misra C++: M3-9-1","style"}, + {"Misra C++: M3-9-2","style"}, + {"Misra C++: M3-9-3","style"}, + {"Misra C++: M4-10-1","style"}, + {"Misra C++: M4-10-2","style"}, + {"Misra C++: M4-5-1","style"}, + {"Misra C++: M4-5-2","style"}, + {"Misra C++: M4-5-3","style"}, + {"Misra C++: M5-0-10","style"}, + {"Misra C++: M5-0-11","style"}, + {"Misra C++: M5-0-12","style"}, + {"Misra C++: M5-0-14","style"}, + {"Misra C++: M5-0-15","style"}, + {"Misra C++: M5-0-2","style"}, + {"Misra C++: M5-0-20","style"}, + {"Misra C++: M5-0-21","style"}, + {"Misra C++: M5-0-3","style"}, + {"Misra C++: M5-0-4","style"}, + {"Misra C++: M5-0-5","style"}, + {"Misra C++: M5-0-6","style"}, + {"Misra C++: M5-0-7","style"}, + {"Misra C++: M5-0-8","style"}, + {"Misra C++: M5-0-9","style"}, + {"Misra C++: M5-17-1","style"}, + {"Misra C++: M5-2-1","style"}, + {"Misra C++: M5-2-10","style"}, + {"Misra C++: M5-2-11","style"}, + {"Misra C++: M5-2-12","style"}, + {"Misra C++: M5-2-2","style"}, + {"Misra C++: M5-2-3","style"}, + {"Misra C++: M5-2-5","style"}, + {"Misra C++: M5-2-6","style"}, + {"Misra C++: M5-2-7","style"}, + {"Misra C++: M5-2-8","style"}, + {"Misra C++: M5-2-9","style"}, + {"Misra C++: M5-3-1","style"}, + {"Misra C++: M5-3-2","style"}, + {"Misra C++: M5-3-3","style"}, + {"Misra C++: M6-2-3","style"}, + {"Misra C++: M6-4-4","style"}, + {"Misra C++: M6-4-6","style"}, + {"Misra C++: M6-4-7","style"}, + {"Misra C++: M6-4-8","style"}, + {"Misra C++: M6-5-1","style"}, + {"Misra C++: M6-5-2","style"}, + {"Misra C++: M6-5-3","style"}, + {"Misra C++: M6-5-4","style"}, + {"Misra C++: M6-5-5","style"}, + {"Misra C++: M6-5-6","style"}, + {"Misra C++: M6-6-1","style"}, + {"Misra C++: M6-6-3","style"}, + {"Misra C++: M6-6-4","style"}, + {"Misra C++: M6-6-5","style"}, + {"Misra C++: M7-2-1","style"}, + {"Misra C++: M7-3-1","style"}, + {"Misra C++: M7-3-2","style"}, + {"Misra C++: M7-3-3","style"}, + {"Misra C++: M7-3-4","style"}, + {"Misra C++: M7-3-5","style"}, + {"Misra C++: M7-3-6","style"}, + {"Misra C++: M7-4-2","style"}, + {"Misra C++: M7-4-3","style"}, + {"Misra C++: M7-5-3","style"}, + {"Misra C++: M8-0-1","style"}, + {"Misra C++: M8-3-1","style"}, + {"Misra C++: M8-4-4","style"}, + {"Misra C++: M8-5-2","style"}, + {"Misra C++: M8-5-3","style"}, + {"Misra C++: M9-3-1","style"}, + {"Misra C++: M9-5-1","style"}, + {"Misra C++: M9-6-2","style"}, + {"Misra C++: M9-6-3","style"}, + {"Misra C++: M9-6-4","style"}, + {"Misra C: 1.5","style"}, {"Misra C: 10.1","style"}, {"Misra C: 10.2","style"}, {"Misra C: 10.3","style"}, @@ -394,7 +564,6 @@ namespace checkers { {"Misra C: 10.8","style"}, {"Misra C: 11.10","style"}, {"Misra C: 12.6",""}, - {"Misra C: 1.5","style"}, {"Misra C: 17.10","style"}, {"Misra C: 17.11","style"}, {"Misra C: 17.12","style"}, @@ -434,145 +603,6 @@ namespace checkers { {"Misra C: 8.17","style"}, {"Misra C: 9.6","style"}, {"Misra C: 9.7",""}, - {"Misra C++: M0-1-11","style"}, - {"Misra C++: M0-1-12","style"}, - {"Misra C++: M0-1-4","style"}, - {"Misra C++: M0-1-5","style"}, - {"Misra C++: M0-1-7","style"}, - {"Misra C++: M0-1-8","style"}, - {"Misra C++: M10-1-1","style"}, - {"Misra C++: M10-1-2","style"}, - {"Misra C++: M10-1-3","style"}, - {"Misra C++: M10-2-1","style"}, - {"Misra C++: M10-3-3","style"}, - {"Misra C++: M11-0-1","style"}, - {"Misra C++: M12-8-2","style"}, - {"Misra C++: M14-5-1","warning"}, - {"Misra C++: M14-5-2","warning"}, - {"Misra C++: M14-5-3","warning"}, - {"Misra C++: M14-6-1","warning"}, - {"Misra C++: M14-7-1","style"}, - {"Misra C++: M14-7-2","style"}, - {"Misra C++: M15-0-3",""}, - {"Misra C++: M15-1-1",""}, - {"Misra C++: M15-1-2","style"}, - {"Misra C++: M15-1-3","style"}, - {"Misra C++: M15-3-2","warning"}, - {"Misra C++: M15-3-3",""}, - {"Misra C++: M15-4-1","style"}, - {"Misra C++: M16-0-1","style"}, - {"Misra C++: M16-0-2","style"}, - {"Misra C++: M16-0-3","style"}, - {"Misra C++: M16-0-4","style"}, - {"Misra C++: M16-1-1","style"}, - {"Misra C++: M16-2-1","style"}, - {"Misra C++: M16-2-2","style"}, - {"Misra C++: M16-2-3","style"}, - {"Misra C++: M16-2-4","style"}, - {"Misra C++: M16-2-5","style"}, - {"Misra C++: M16-2-6","style"}, - {"Misra C++: M16-3-1","style"}, - {"Misra C++: M16-3-2","style"}, - {"Misra C++: M17-0-1","style"}, - {"Misra C++: M17-0-2","style"}, - {"Misra C++: M17-0-3","style"}, - {"Misra C++: M17-0-5","style"}, - {"Misra C++: M18-0-1","style"}, - {"Misra C++: M18-0-2","style"}, - {"Misra C++: M18-0-3","style"}, - {"Misra C++: M18-0-4","style"}, - {"Misra C++: M18-0-5","style"}, - {"Misra C++: M18-2-1","style"}, - {"Misra C++: M18-4-1","style"}, - {"Misra C++: M18-7-1","style"}, - {"Misra C++: M19-3-1","style"}, - {"Misra C++: M2-10-1","style"}, - {"Misra C++: M2-10-3","style"}, - {"Misra C++: M2-10-4","style"}, - {"Misra C++: M2-10-5","style"}, - {"Misra C++: M2-10-6","style"}, - {"Misra C++: M2-13-4","style"}, - {"Misra C++: M2-13-5","style"}, - {"Misra C++: M27-0-1","style"}, - {"Misra C++: M2-7-1","style"}, - {"Misra C++: M2-7-2","style"}, - {"Misra C++: M2-7-3","style"}, - {"Misra C++: M3-1-1","style"}, - {"Misra C++: M3-1-2","style"}, - {"Misra C++: M3-1-3","style"}, - {"Misra C++: M3-2-1",""}, - {"Misra C++: M3-3-1","style"}, - {"Misra C++: M3-3-2","style"}, - {"Misra C++: M3-9-1","style"}, - {"Misra C++: M3-9-2","style"}, - {"Misra C++: M3-9-3","style"}, - {"Misra C++: M4-10-1","style"}, - {"Misra C++: M4-10-2","style"}, - {"Misra C++: M4-5-1","style"}, - {"Misra C++: M4-5-2","style"}, - {"Misra C++: M4-5-3","style"}, - {"Misra C++: M5-0-10","style"}, - {"Misra C++: M5-0-11","style"}, - {"Misra C++: M5-0-12","style"}, - {"Misra C++: M5-0-14","style"}, - {"Misra C++: M5-0-15","style"}, - {"Misra C++: M5-0-20","style"}, - {"Misra C++: M5-0-21","style"}, - {"Misra C++: M5-0-2","style"}, - {"Misra C++: M5-0-3","style"}, - {"Misra C++: M5-0-4","style"}, - {"Misra C++: M5-0-5","style"}, - {"Misra C++: M5-0-6","style"}, - {"Misra C++: M5-0-7","style"}, - {"Misra C++: M5-0-8","style"}, - {"Misra C++: M5-0-9","style"}, - {"Misra C++: M5-2-10","style"}, - {"Misra C++: M5-2-11","style"}, - {"Misra C++: M5-2-12","style"}, - {"Misra C++: M5-2-1","style"}, - {"Misra C++: M5-2-2","style"}, - {"Misra C++: M5-2-3","style"}, - {"Misra C++: M5-2-5","style"}, - {"Misra C++: M5-2-6","style"}, - {"Misra C++: M5-2-7","style"}, - {"Misra C++: M5-2-8","style"}, - {"Misra C++: M5-2-9","style"}, - {"Misra C++: M5-3-1","style"}, - {"Misra C++: M5-3-2","style"}, - {"Misra C++: M5-3-3","style"}, - {"Misra C++: M6-2-3","style"}, - {"Misra C++: M6-4-4","style"}, - {"Misra C++: M6-4-6","style"}, - {"Misra C++: M6-4-7","style"}, - {"Misra C++: M6-4-8","style"}, - {"Misra C++: M6-5-1","style"}, - {"Misra C++: M6-5-2","style"}, - {"Misra C++: M6-5-3","style"}, - {"Misra C++: M6-5-4","style"}, - {"Misra C++: M6-5-5","style"}, - {"Misra C++: M6-5-6","style"}, - {"Misra C++: M6-6-1","style"}, - {"Misra C++: M6-6-3","style"}, - {"Misra C++: M6-6-4","style"}, - {"Misra C++: M6-6-5","style"}, - {"Misra C++: M7-2-1","style"}, - {"Misra C++: M7-3-1","style"}, - {"Misra C++: M7-3-2","style"}, - {"Misra C++: M7-3-3","style"}, - {"Misra C++: M7-3-4","style"}, - {"Misra C++: M7-3-5","style"}, - {"Misra C++: M7-3-6","style"}, - {"Misra C++: M7-4-2","style"}, - {"Misra C++: M7-4-3","style"}, - {"Misra C++: M7-5-3","style"}, - {"Misra C++: M8-0-1","style"}, - {"Misra C++: M8-3-1","style"}, - {"Misra C++: M8-4-4","style"}, - {"Misra C++: M9-3-1","style"}, - {"Misra C++: M9-5-1","style"}, - {"Misra C++: M9-6-2","style"}, - {"Misra C++: M9-6-3","style"}, - {"Misra C++: M9-6-4","style"}, {"PremiumCheckBufferOverrun::addressOfPointerArithmetic","warning"}, {"PremiumCheckBufferOverrun::negativeBufferSizeCheckedNonZero","warning"}, {"PremiumCheckBufferOverrun::negativeBufferSizeCheckedNonZero","warning"}, @@ -588,7 +618,7 @@ namespace checkers { {"PremiumCheckUninitVar::uninitmember",""}, {"PremiumCheckUninitVar::uninitvar",""}, {"PremiumCheckUnusedVar::unreadVariable","style"}, - {"PremiumCheckUnusedVar::unusedPrivateMember","style"}, + {"PremiumCheckUnusedVar::unusedPrivateMember","style"} }; const char Req[] = "Required"; diff --git a/tools/get_checkers.py b/tools/get_checkers.py index 7dbdbf368..ca0b84276 100644 --- a/tools/get_checkers.py +++ b/tools/get_checkers.py @@ -1,4 +1,5 @@ import glob +import os import re print("""/* @@ -19,17 +20,15 @@ print("""/* * along with this program. If not, see . */ -#pragma once +// This file is auto-generated by tools/get_checkers.py: +// python3 tools/get_checkers.py > lib/checkers.cpp -#include -#include -#include +#include "checkers.h" namespace checkers { + const std::map allCheckers{""") -static std::map allCheckers{""") - -for filename in glob.glob('../lib/*.cpp'): +for filename in glob.glob(os.path.expanduser('~/cppchecksolutions/cppcheck/lib/*.cpp')): for line in open(filename,'rt'): res = re.match(r'[ \t]*logChecker\(\s*"([:_a-zA-Z0-9]+)"\s*\);.*', line) if res is None: @@ -37,666 +36,265 @@ for filename in glob.glob('../lib/*.cpp'): req = '' if line.find('//')>0: req = line[line.find('//')+2:].strip() - print(' {"%s","%s"},' % (res.group(1), req)) -print("};\n\n") + print(' {"%s","%s"},' % (res.group(1), req)) +print(" };\n") -print('static std::map premiumCheckers{') +print(' const std::map premiumCheckers{') +premium_checkers = [] +for filename in sorted(glob.glob(os.path.expanduser('~/cppchecksolutions/addon/src/*.cpp'))): + for line in open(filename,'rt'): + res = re.match(r'[ \t]*logChecker\("([^"]+)"\);.*', line) + if res is None: + continue + if line.find('//') > 0: + req = line[line.find('//')+2:].strip() + else: + req = '' + premium_checkers.append(' {"%s","%s"}' % (res.group(1), req)) +print(',\n'.join(sorted(premium_checkers))) +print(' };') -premium_checkers = """ -$ grep logChecker src/*.cpp | sed 's/.*logChecker/logChecker/' | sort > 1.txt -logChecker("Autosar: A0-1-3"); // style -logChecker("Autosar: A0-4-2"); // style -logChecker("Autosar: A0-4-4"); // style -logChecker("Autosar: A10-1-1"); // style -logChecker("Autosar: A11-0-2"); // style -logChecker("Autosar: A11-3-1"); // style -logChecker("Autosar: A13-2-1"); // style -logChecker("Autosar: A13-2-3"); // style -logChecker("Autosar: A13-5-2"); // style -logChecker("Autosar: A13-5-5"); // style -logChecker("Autosar: A15-1-2"); // style -logChecker("Autosar: A15-3-5"); // style -logChecker("Autosar: A16-6-1"); // style -logChecker("Autosar: A16-7-1"); // style -logChecker("Autosar: A18-0-3"); // style -logChecker("Autosar: A18-1-1"); // style -logChecker("Autosar: A18-1-2"); // style -logChecker("Autosar: A18-1-3"); // style -logChecker("Autosar: A18-5-1"); // style -logChecker("Autosar: A18-9-1"); // style -logChecker("Autosar: A2-11-1"); // style -logChecker("Autosar: A2-13-1"); // style -logChecker("Autosar: A2-13-3"); // style -logChecker("Autosar: A2-13-5"); // style -logChecker("Autosar: A2-13-6"); // style -logChecker("Autosar: A2-5-2"); // style -logChecker("Autosar: A3-1-3"); // style -logChecker("Autosar: A3-1-4"); // style -logChecker("Autosar: A3-3-1"); // style -logChecker("Autosar: A4-10-1"); // style -logChecker("Autosar: A4-7-1"); // style -logChecker("Autosar: A5-0-2"); // style -logChecker("Autosar: A5-0-3"); // style -logChecker("Autosar: A5-0-4"); // style -logChecker("Autosar: A5-1-1"); // style -logChecker("Autosar: A5-1-2"); // style -logChecker("Autosar: A5-1-3"); // style -logChecker("Autosar: A5-16-1"); // style -logChecker("Autosar: A5-1-6"); // style -logChecker("Autosar: A5-1-7"); // style -logChecker("Autosar: A5-2-1"); // style -logChecker("Autosar: A5-2-4"); // style -logChecker("Autosar: A6-5-3"); // style -logChecker("Autosar: A7-1-4"); // style -logChecker("Autosar: A7-1-6"); // style -logChecker("Autosar: A7-1-7"); // style -logChecker("Autosar: A8-4-1"); // style -logChecker("Autosar: A8-5-3"); // style -logChecker("Autosar: A9-3-1"); // style -logChecker("Cert C: ARR30-C"); // warning -logChecker("Cert C: ARR32-C"); // warning -logChecker("Cert C: ARR37-C"); // warning -logChecker("Cert C: ARR38-C"); -logChecker("Cert C: ARR39-C"); // warning -logChecker("Cert C: CON30-C"); // style -logChecker("Cert C: CON31-C"); // style -logChecker("Cert C: CON32-C"); // style -logChecker("Cert C: CON33-C"); // style -logChecker("Cert C: CON34-C"); // warning -logChecker("Cert C: CON35-C"); // warning -logChecker("Cert C: CON36-C"); // style -logChecker("Cert C: CON37-C"); // style -logChecker("Cert C: CON38-C"); // warning -logChecker("Cert C: CON39-C"); // warning -logChecker("Cert C: CON40-C"); // warning -logChecker("Cert C: CON41-C"); // style -logChecker("Cert C++: CON51-CPP"); -logChecker("Cert C++: CON52-CPP"); // style -logChecker("Cert C++: CON53-CPP"); // style -logChecker("Cert C++: CON54-CPP"); // style -logChecker("Cert C++: CON55-CPP"); // style -logChecker("Cert C++: CON56-CPP"); -logChecker("Cert C++: CTR50-CPP"); -logChecker("Cert C++: CTR52-CPP"); -logChecker("Cert C++: CTR53-CPP"); -logChecker("Cert C++: CTR56-CPP"); // style -logChecker("Cert C++: CTR57-CPP"); -logChecker("Cert C++: CTR58-CPP"); -logChecker("Cert C: DCL31-C"); // style -logChecker("Cert C: DCL36-C"); // style -logChecker("Cert C: DCL37-C"); // style -logChecker("Cert C: DCL38-C"); // style -logChecker("Cert C: DCL39-C"); // style -logChecker("Cert C: DCL40-C"); // style -logChecker("Cert C: DCL41-C"); // style -logChecker("Cert C++: DCL50-CPP"); // style -logChecker("Cert C++: DCL51-CPP"); // style -logChecker("Cert C++: DCL52-CPP"); // style -logChecker("Cert C++: DCL53-CPP"); // style -logChecker("Cert C++: DCL54-CPP"); -logChecker("Cert C++: DCL56-CPP"); -logChecker("Cert C++: DCL58-CPP"); // style -logChecker("Cert C++: DCL59-CPP"); // style -logChecker("Cert C: ENV30-C"); // style -logChecker("Cert C: ENV31-C"); // style -logChecker("Cert C: ENV32-C"); // style -logChecker("Cert C: ENV33-C"); // style -logChecker("Cert C: ENV34-C"); // style -logChecker("Cert C: ERR30-C"); // warning -logChecker("Cert C: ERR32-C"); // warning -logChecker("Cert C: ERR33-C"); // warning -logChecker("Cert C++: ERR50-CPP"); -logChecker("Cert C++: ERR51-CPP"); // style -logChecker("Cert C++: ERR52-CPP"); // style -logChecker("Cert C++: ERR53-CPP"); -logChecker("Cert C++: ERR54-CPP"); -logChecker("Cert C++: ERR55-CPP"); -logChecker("Cert C++: ERR56-CPP"); -logChecker("Cert C++: ERR58-CPP"); -logChecker("Cert C++: ERR59-CPP"); // warning -logChecker("Cert C++: ERR60-CPP"); // warning -logChecker("Cert C++: ERR61-CPP"); // style -logChecker("Cert C++: ERR62-CPP"); // style -logChecker("Cert C: EXP32-C"); // warning -logChecker("Cert C: EXP35-C"); -logChecker("Cert C: EXP36-C"); // style -logChecker("Cert C: EXP37-C"); // style -logChecker("Cert C: EXP39-C"); // style -logChecker("Cert C: EXP40-C"); // style -logChecker("Cert C: EXP42-C"); // style -logChecker("Cert C: EXP43-C"); // style -logChecker("Cert C: EXP45-C"); // warning -logChecker("Cert C++: EXP50-CPP"); -logChecker("Cert C++: EXP51-CPP"); -logChecker("Cert C++: EXP55-CPP"); -logChecker("Cert C++: EXP56-CPP"); -logChecker("Cert C++: EXP57-CPP"); // style -logChecker("Cert C++: EXP58-CPP"); // style -logChecker("Cert C++: EXP59-CPP"); -logChecker("Cert C: FIO30-C"); // warning -logChecker("Cert C: FIO32-C"); // style -logChecker("Cert C: FIO34-C"); // style -logChecker("Cert C: FIO37-C"); -logChecker("Cert C: FIO38-C"); // style -logChecker("Cert C: FIO40-C"); // style -logChecker("Cert C: FIO41-C"); // style -logChecker("Cert C: FIO44-C"); // warning -logChecker("Cert C: FIO45-C"); // warning -logChecker("Cert C++: FIO51-CPP"); // style -logChecker("Cert C: FLP30-C"); // warning -logChecker("Cert C: FLP36-C"); // portability -logChecker("Cert C: FLP37-C"); // style -logChecker("Cert C: INT30-C"); // warning -logChecker("Cert C: INT31-C"); // warning -logChecker("Cert C: INT32-C"); // warning -logChecker("Cert C: INT33-C"); // warning -logChecker("Cert C: INT34-C"); // warning -logChecker("Cert C: INT35-C"); // warning -logChecker("Cert C: INT36-C"); // warning -logChecker("Cert C++: INT50-CPP"); // style -logChecker("Cert C: MEM33-C"); // style -logChecker("Cert C: MEM35-C"); // warning -logChecker("Cert C: MEM36-C"); // warning -logChecker("Cert C++: MEM52-CPP"); -logChecker("Cert C++: MEM53-CPP"); -logChecker("Cert C++: MEM54-CPP"); -logChecker("Cert C++: MEM55-CPP"); -logChecker("Cert C++: MEM57-CPP"); // style -logChecker("Cert C: MSC30-C"); // style -logChecker("Cert C: MSC32-C"); // style -logChecker("Cert C: MSC33-C"); // style -logChecker("Cert C: MSC38-C"); // warning -logChecker("Cert C: MSC39-C"); // warning -logChecker("Cert C: MSC40-C"); // warning -logChecker("Cert C++: MSC50-CPP"); // style -logChecker("Cert C++: MSC51-CPP"); // style -logChecker("Cert C++: MSC53-CPP"); -logChecker("Cert C++: MSC54-CPP"); // style -logChecker("Cert C++: OOP51-CPP"); -logChecker("Cert C++: OOP55-CPP"); -logChecker("Cert C++: OOP56-CPP"); -logChecker("Cert C++: OOP57-CPP"); -logChecker("Cert C++: OOP58-CPP"); // style -logChecker("Cert C: PRE31-C"); // style -logChecker("Cert C: SIG30-C"); // style -logChecker("Cert C: SIG31-C"); // warning -logChecker("Cert C: SIG34-C"); // style -logChecker("Cert C: SIG35-C"); // warning -logChecker("Cert C: STR31-C"); // warning -logChecker("Cert C: STR32-C"); // warning -logChecker("Cert C: STR34-C"); // warning -logChecker("Cert C: STR38-C"); // style -logChecker("Cert C++: STR50-CPP"); -logChecker("Cert C++: STR53-CPP"); -logChecker("Misra C: 10.1"); // style -logChecker("Misra C: 10.2"); // style -logChecker("Misra C: 10.3"); // style -logChecker("Misra C: 10.4"); // style -logChecker("Misra C: 10.5"); // style -logChecker("Misra C: 10.6"); // style -logChecker("Misra C: 10.7"); // style -logChecker("Misra C: 10.8"); // style -logChecker("Misra C: 11.10"); // style -logChecker("Misra C: 12.6"); -logChecker("Misra C: 1.5"); // style -logChecker("Misra C: 17.10"); // style -logChecker("Misra C: 17.11"); // style -logChecker("Misra C: 17.12"); // style -logChecker("Misra C: 17.9"); // style -logChecker("Misra C: 18.10"); // style -logChecker("Misra C: 18.9"); // style -logChecker("Misra C: 21.12"); // style -logChecker("Misra C: 21.22"); // style -logChecker("Misra C: 21.23"); // style -logChecker("Misra C: 21.24"); // style -logChecker("Misra C: 21.25"); // warning -logChecker("Misra C: 21.26"); // warning -logChecker("Misra C: 22.11"); -logChecker("Misra C: 22.12"); // style -logChecker("Misra C: 22.13"); // style -logChecker("Misra C: 22.14"); // style -logChecker("Misra C: 22.15"); // style -logChecker("Misra C: 22.16"); // warning -logChecker("Misra C: 22.17"); // warning -logChecker("Misra C: 22.18"); // warning -logChecker("Misra C: 22.19"); // warning -logChecker("Misra C: 22.20"); // style -logChecker("Misra C: 23.1"); // style -logChecker("Misra C: 23.2"); // style -logChecker("Misra C: 23.3"); // style -logChecker("Misra C: 23.4"); // style -logChecker("Misra C: 23.5"); // style -logChecker("Misra C: 23.6"); // style -logChecker("Misra C: 23.7"); // style -logChecker("Misra C: 23.8"); // style -logChecker("Misra C: 6.3"); // style -logChecker("Misra C: 7.5"); // style -logChecker("Misra C: 7.6"); // style -logChecker("Misra C: 8.10"); // style -logChecker("Misra C: 8.15"); // style -logChecker("Misra C: 8.16"); // style -logChecker("Misra C: 8.17"); // style -logChecker("Misra C: 9.6"); // style -logChecker("Misra C: 9.7"); -logChecker("Misra C++: M0-1-11"); // style -logChecker("Misra C++: M0-1-12"); // style -logChecker("Misra C++: M0-1-4"); // style -logChecker("Misra C++: M0-1-5"); // style -logChecker("Misra C++: M0-1-7"); // style -logChecker("Misra C++: M0-1-8"); // style -logChecker("Misra C++: M10-1-1"); // style -logChecker("Misra C++: M10-1-2"); // style -logChecker("Misra C++: M10-1-3"); // style -logChecker("Misra C++: M10-2-1"); // style -logChecker("Misra C++: M10-3-3"); // style -logChecker("Misra C++: M11-0-1"); // style -logChecker("Misra C++: M12-8-2"); // style -logChecker("Misra C++: M14-5-1"); // warning -logChecker("Misra C++: M14-5-2"); // warning -logChecker("Misra C++: M14-5-3"); // warning -logChecker("Misra C++: M14-6-1"); // warning -logChecker("Misra C++: M14-7-1"); // style -logChecker("Misra C++: M14-7-2"); // style -logChecker("Misra C++: M15-0-3"); -logChecker("Misra C++: M15-1-1"); -logChecker("Misra C++: M15-1-2"); // style -logChecker("Misra C++: M15-1-3"); // style -logChecker("Misra C++: M15-3-2"); // warning -logChecker("Misra C++: M15-3-3"); -logChecker("Misra C++: M15-4-1"); // style -logChecker("Misra C++: M16-0-1"); // style -logChecker("Misra C++: M16-0-2"); // style -logChecker("Misra C++: M16-0-3"); // style -logChecker("Misra C++: M16-0-4"); // style -logChecker("Misra C++: M16-1-1"); // style -logChecker("Misra C++: M16-2-1"); // style -logChecker("Misra C++: M16-2-2"); // style -logChecker("Misra C++: M16-2-3"); // style -logChecker("Misra C++: M16-2-4"); // style -logChecker("Misra C++: M16-2-5"); // style -logChecker("Misra C++: M16-2-6"); // style -logChecker("Misra C++: M16-3-1"); // style -logChecker("Misra C++: M16-3-2"); // style -logChecker("Misra C++: M17-0-1"); // style -logChecker("Misra C++: M17-0-2"); // style -logChecker("Misra C++: M17-0-3"); // style -logChecker("Misra C++: M17-0-5"); // style -logChecker("Misra C++: M18-0-1"); // style -logChecker("Misra C++: M18-0-2"); // style -logChecker("Misra C++: M18-0-3"); // style -logChecker("Misra C++: M18-0-4"); // style -logChecker("Misra C++: M18-0-5"); // style -logChecker("Misra C++: M18-2-1"); // style -logChecker("Misra C++: M18-4-1"); // style -logChecker("Misra C++: M18-7-1"); // style -logChecker("Misra C++: M19-3-1"); // style -logChecker("Misra C++: M2-10-1"); // style -logChecker("Misra C++: M2-10-3"); // style -logChecker("Misra C++: M2-10-4"); // style -logChecker("Misra C++: M2-10-5"); // style -logChecker("Misra C++: M2-10-6"); // style -logChecker("Misra C++: M2-13-4"); // style -logChecker("Misra C++: M2-13-5"); // style -logChecker("Misra C++: M27-0-1"); // style -logChecker("Misra C++: M2-7-1"); // style -logChecker("Misra C++: M2-7-2"); // style -logChecker("Misra C++: M2-7-3"); // style -logChecker("Misra C++: M3-1-1"); // style -logChecker("Misra C++: M3-1-2"); // style -logChecker("Misra C++: M3-1-3"); // style -logChecker("Misra C++: M3-2-1"); -logChecker("Misra C++: M3-3-1"); // style -logChecker("Misra C++: M3-3-2"); // style -logChecker("Misra C++: M3-9-1"); // style -logChecker("Misra C++: M3-9-2"); // style -logChecker("Misra C++: M3-9-3"); // style -logChecker("Misra C++: M4-10-1"); // style -logChecker("Misra C++: M4-10-2"); // style -logChecker("Misra C++: M4-5-1"); // style -logChecker("Misra C++: M4-5-2"); // style -logChecker("Misra C++: M4-5-3"); // style -logChecker("Misra C++: M5-0-10"); // style -logChecker("Misra C++: M5-0-11"); // style -logChecker("Misra C++: M5-0-12"); // style -logChecker("Misra C++: M5-0-14"); // style -logChecker("Misra C++: M5-0-15"); // style -logChecker("Misra C++: M5-0-20"); // style -logChecker("Misra C++: M5-0-21"); // style -logChecker("Misra C++: M5-0-2"); // style -logChecker("Misra C++: M5-0-3"); // style -logChecker("Misra C++: M5-0-4"); // style -logChecker("Misra C++: M5-0-5"); // style -logChecker("Misra C++: M5-0-6"); // style -logChecker("Misra C++: M5-0-7"); // style -logChecker("Misra C++: M5-0-8"); // style -logChecker("Misra C++: M5-0-9"); // style -logChecker("Misra C++: M5-2-10"); // style -logChecker("Misra C++: M5-2-11"); // style -logChecker("Misra C++: M5-2-12"); // style -logChecker("Misra C++: M5-2-1"); // style -logChecker("Misra C++: M5-2-2"); // style -logChecker("Misra C++: M5-2-3"); // style -logChecker("Misra C++: M5-2-5"); // style -logChecker("Misra C++: M5-2-6"); // style -logChecker("Misra C++: M5-2-7"); // style -logChecker("Misra C++: M5-2-8"); // style -logChecker("Misra C++: M5-2-9"); // style -logChecker("Misra C++: M5-3-1"); // style -logChecker("Misra C++: M5-3-2"); // style -logChecker("Misra C++: M5-3-3"); // style -logChecker("Misra C++: M6-2-3"); // style -logChecker("Misra C++: M6-4-4"); // style -logChecker("Misra C++: M6-4-6"); // style -logChecker("Misra C++: M6-4-7"); // style -logChecker("Misra C++: M6-4-8"); // style -logChecker("Misra C++: M6-5-1"); // style -logChecker("Misra C++: M6-5-2"); // style -logChecker("Misra C++: M6-5-3"); // style -logChecker("Misra C++: M6-5-4"); // style -logChecker("Misra C++: M6-5-5"); // style -logChecker("Misra C++: M6-5-6"); // style -logChecker("Misra C++: M6-6-1"); // style -logChecker("Misra C++: M6-6-3"); // style -logChecker("Misra C++: M6-6-4"); // style -logChecker("Misra C++: M6-6-5"); // style -logChecker("Misra C++: M7-2-1"); // style -logChecker("Misra C++: M7-3-1"); // style -logChecker("Misra C++: M7-3-2"); // style -logChecker("Misra C++: M7-3-3"); // style -logChecker("Misra C++: M7-3-4"); // style -logChecker("Misra C++: M7-3-5"); // style -logChecker("Misra C++: M7-3-6"); // style -logChecker("Misra C++: M7-4-2"); // style -logChecker("Misra C++: M7-4-3"); // style -logChecker("Misra C++: M7-5-3"); // style -logChecker("Misra C++: M8-0-1"); // style -logChecker("Misra C++: M8-3-1"); // style -logChecker("Misra C++: M8-4-4"); // style -logChecker("Misra C++: M9-3-1"); // style -logChecker("Misra C++: M9-5-1"); // style -logChecker("Misra C++: M9-6-2"); // style -logChecker("Misra C++: M9-6-3"); // style -logChecker("Misra C++: M9-6-4"); // style -logChecker("PremiumCheckBufferOverrun::addressOfPointerArithmetic"); // warning -logChecker("PremiumCheckBufferOverrun::negativeBufferSizeCheckedNonZero"); // warning -logChecker("PremiumCheckBufferOverrun::negativeBufferSizeCheckedNonZero"); // warning -logChecker("PremiumCheckHang::infiniteLoop"); -logChecker("PremiumCheckHang::infiniteLoopContinue"); -logChecker("PremiumCheckOther::arrayPointerComparison"); // style -logChecker("PremiumCheckOther::knownResult"); // style -logChecker("PremiumCheckOther::lossOfPrecision"); // style -logChecker("PremiumCheckOther::pointerCast"); // style -logChecker("PremiumCheckOther::reassignInLoop"); // style -logChecker("PremiumCheckOther::unreachableCode"); // style -logChecker("PremiumCheckStrictAlias::strictAliasCondition"); // warning -logChecker("PremiumCheckUninitVar::uninitmember"); -logChecker("PremiumCheckUninitVar::uninitvar"); -logChecker("PremiumCheckUnusedVar::unreadVariable"); // style -logChecker("PremiumCheckUnusedVar::unusedPrivateMember"); // style -""" - -for line in premium_checkers.split('\n'): - res = re.match(r'logChecker\("([^"]+)"\);.*', line) - if res is None: - continue - if line.find('//') > 0: - req = line[line.find('//')+2:].strip() - else: - req = '' - print(' {"%s","%s"},' % (res.group(1), req)) - -print('};\n\n') print(""" -struct MisraInfo { - int a; - int b; - const char* str; - int amendment; -}; + const char Req[] = "Required"; + const char Adv[] = "Advisory"; + const char Man[] = "Mandatory"; -const char Req[] = "Required"; -const char Adv[] = "Advisory"; -const char Man[] = "Mandatory"; + const std::vector misraC2012Rules = + { + {1,1,Req,0}, + {1,2,Adv,0}, + {1,3,Req,0}, + {1,4,Req,2}, // amendment 2 + {1,5,Req,3}, // Amendment 3 + {2,1,Req,0}, + {2,2,Req,0}, + {2,3,Adv,0}, + {2,4,Adv,0}, + {2,5,Adv,0}, + {2,6,Adv,0}, + {2,7,Adv,0}, + {2,8,Adv,0}, + {3,1,Req,0}, + {3,2,Req,0}, + {4,1,Req,0}, + {4,2,Adv,0}, + {5,1,Req,0}, + {5,2,Req,0}, + {5,3,Req,0}, + {5,4,Req,0}, + {5,5,Req,0}, + {5,6,Req,0}, + {5,7,Req,0}, + {5,8,Req,0}, + {5,9,Adv,0}, + {6,1,Req,0}, + {6,2,Req,0}, + {6,3,Req,0}, + {7,1,Req,0}, + {7,2,Req,0}, + {7,3,Req,0}, + {7,4,Req,0}, + {7,5,Man,0}, + {7,6,Req,0}, + {8,1,Req,0}, + {8,2,Req,0}, + {8,3,Req,0}, + {8,4,Req,0}, + {8,5,Req,0}, + {8,6,Req,0}, + {8,7,Adv,0}, + {8,8,Req,0}, + {8,9,Adv,0}, + {8,10,Req,0}, + {8,11,Adv,0}, + {8,12,Req,0}, + {8,13,Adv,0}, + {8,14,Req,0}, + {8,15,Req,0}, + {8,16,Adv,0}, + {8,17,Adv,0}, + {9,1,Man,0}, + {9,2,Req,0}, + {9,3,Req,0}, + {9,4,Req,0}, + {9,5,Req,0}, + {9,6,Req,0}, + {9,7,Man,0}, + {10,1,Req,0}, + {10,2,Req,0}, + {10,3,Req,0}, + {10,4,Req,0}, + {10,5,Adv,0}, + {10,6,Req,0}, + {10,7,Req,0}, + {10,8,Req,0}, + {11,1,Req,0}, + {11,2,Req,0}, + {11,3,Req,0}, + {11,4,Adv,0}, + {11,5,Adv,0}, + {11,6,Req,0}, + {11,7,Req,0}, + {11,8,Req,0}, + {11,9,Req,0}, + {11,10,Req,0}, + {12,1,Adv,0}, + {12,2,Req,0}, + {12,3,Adv,0}, + {12,4,Adv,0}, + {12,5,Man,1}, // amendment 1 + {12,6,Req,4}, // amendment 4 + {13,1,Req,0}, + {13,2,Req,0}, + {13,3,Adv,0}, + {13,4,Adv,0}, + {13,5,Req,0}, + {13,6,Man,0}, + {14,1,Req,0}, + {14,2,Req,0}, + {14,3,Req,0}, + {14,4,Req,0}, + {15,1,Adv,0}, + {15,2,Req,0}, + {15,3,Req,0}, + {15,4,Adv,0}, + {15,5,Adv,0}, + {15,6,Req,0}, + {15,7,Req,0}, + {16,1,Req,0}, + {16,2,Req,0}, + {16,3,Req,0}, + {16,4,Req,0}, + {16,5,Req,0}, + {16,6,Req,0}, + {16,7,Req,0}, + {17,1,Req,0}, + {17,2,Req,0}, + {17,3,Man,0}, + {17,4,Man,0}, + {17,5,Adv,0}, + {17,6,Man,0}, + {17,7,Req,0}, + {17,8,Adv,0}, + {17,9,Man,0}, + {17,10,Req,0}, + {17,11,Adv,0}, + {17,12,Adv,0}, + {17,13,Req,0}, + {18,1,Req,0}, + {18,2,Req,0}, + {18,3,Req,0}, + {18,4,Adv,0}, + {18,5,Adv,0}, + {18,6,Req,0}, + {18,7,Req,0}, + {18,8,Req,0}, + {18,9,Req,0}, + {18,10,Man,0}, + {19,1,Man,0}, + {19,2,Adv,0}, + {20,1,Adv,0}, + {20,2,Req,0}, + {20,3,Req,0}, + {20,4,Req,0}, + {20,5,Adv,0}, + {20,6,Req,0}, + {20,7,Req,0}, + {20,8,Req,0}, + {20,9,Req,0}, + {20,10,Adv,0}, + {20,11,Req,0}, + {20,12,Req,0}, + {20,13,Req,0}, + {20,14,Req,0}, + {21,1,Req,0}, + {21,2,Req,0}, + {21,3,Req,0}, + {21,4,Req,0}, + {21,5,Req,0}, + {21,6,Req,0}, + {21,7,Req,0}, + {21,8,Req,0}, + {21,9,Req,0}, + {21,10,Req,0}, + {21,11,Req,0}, + {21,12,Adv,0}, + {21,13,Man,1}, // Amendment 1 + {21,14,Req,1}, // Amendment 1 + {21,15,Req,1}, // Amendment 1 + {21,16,Req,1}, // Amendment 1 + {21,17,Req,1}, // Amendment 1 + {21,18,Man,1}, // Amendment 1 + {21,19,Man,1}, // Amendment 1 + {21,20,Man,1}, // Amendment 1 + {21,21,Req,3}, // Amendment 3 + {21,22,Man,3}, // Amendment 3 + {21,23,Req,3}, // Amendment 3 + {21,24,Req,3}, // Amendment 3 + {21,25,Req,4}, // Amendment 4 + {21,26,Req,4}, // Amendment 4 + {22,1,Req,0}, + {22,2,Man,0}, + {22,3,Req,0}, + {22,4,Man,0}, + {22,5,Man,0}, + {22,6,Man,0}, + {22,7,Req,1}, // Amendment 1 + {22,8,Req,1}, // Amendment 1 + {22,9,Req,1}, // Amendment 1 + {22,10,Req,1}, // Amendment 1 + {22,11,Req,4}, // Amendment 4 + {22,12,Man,4}, // Amendment 4 + {22,13,Req,4}, // Amendment 4 + {22,14,Man,4}, // Amendment 4 + {22,15,Req,4}, // Amendment 4 + {22,16,Req,4}, // Amendment 4 + {22,17,Req,4}, // Amendment 4 + {22,18,Req,4}, // Amendment 4 + {22,19,Req,4}, // Amendment 4 + {22,20,Man,4}, // Amendment 4 + {23,1,Adv,3}, // Amendment 3 + {23,2,Req,3}, // Amendment 3 + {23,3,Adv,3}, // Amendment 3 + {23,4,Req,3}, // Amendment 3 + {23,5,Adv,3}, // Amendment 3 + {23,6,Req,3}, // Amendment 3 + {23,7,Adv,3}, // Amendment 3 + {23,8,Req,3}, // Amendment 3 + }; -const MisraInfo misraC2012Rules[] = -{ - {1,1,Req,0}, - {1,2,Adv,0}, - {1,3,Req,0}, - {1,4,Req,2}, // amendment 2 - {1,5,Req,3}, // Amendment 3 - {2,1,Req,0}, - {2,2,Req,0}, - {2,3,Adv,0}, - {2,4,Adv,0}, - {2,5,Adv,0}, - {2,6,Adv,0}, - {2,7,Adv,0}, - {2,8,Adv,0}, - {3,1,Req,0}, - {3,2,Req,0}, - {4,1,Req,0}, - {4,2,Adv,0}, - {5,1,Req,0}, - {5,2,Req,0}, - {5,3,Req,0}, - {5,4,Req,0}, - {5,5,Req,0}, - {5,6,Req,0}, - {5,7,Req,0}, - {5,8,Req,0}, - {5,9,Adv,0}, - {6,1,Req,0}, - {6,2,Req,0}, - {6,3,Req,0}, - {7,1,Req,0}, - {7,2,Req,0}, - {7,3,Req,0}, - {7,4,Req,0}, - {7,5,Man,0}, - {7,6,Req,0}, - {8,1,Req,0}, - {8,2,Req,0}, - {8,3,Req,0}, - {8,4,Req,0}, - {8,5,Req,0}, - {8,6,Req,0}, - {8,7,Adv,0}, - {8,8,Req,0}, - {8,9,Adv,0}, - {8,10,Req,0}, - {8,11,Adv,0}, - {8,12,Req,0}, - {8,13,Adv,0}, - {8,14,Req,0}, - {8,15,Req,0}, - {8,16,Adv,0}, - {8,17,Adv,0}, - {9,1,Man,0}, - {9,2,Req,0}, - {9,3,Req,0}, - {9,4,Req,0}, - {9,5,Req,0}, - {9,6,Req,0}, - {9,7,Man,0}, - {10,1,Req,0}, - {10,2,Req,0}, - {10,3,Req,0}, - {10,4,Req,0}, - {10,5,Adv,0}, - {10,6,Req,0}, - {10,7,Req,0}, - {10,8,Req,0}, - {11,1,Req,0}, - {11,2,Req,0}, - {11,3,Req,0}, - {11,4,Adv,0}, - {11,5,Adv,0}, - {11,6,Req,0}, - {11,7,Req,0}, - {11,8,Req,0}, - {11,9,Req,0}, - {11,10,Req,0}, - {12,1,Adv,0}, - {12,2,Req,0}, - {12,3,Adv,0}, - {12,4,Adv,0}, - {12,5,Man,1}, // amendment 1 - {12,6,Req,4}, // amendment 4 - {13,1,Req,0}, - {13,2,Req,0}, - {13,3,Adv,0}, - {13,4,Adv,0}, - {13,5,Req,0}, - {13,6,Man,0}, - {14,1,Req,0}, - {14,2,Req,0}, - {14,3,Req,0}, - {14,4,Req,0}, - {15,1,Adv,0}, - {15,2,Req,0}, - {15,3,Req,0}, - {15,4,Adv,0}, - {15,5,Adv,0}, - {15,6,Req,0}, - {15,7,Req,0}, - {16,1,Req,0}, - {16,2,Req,0}, - {16,3,Req,0}, - {16,4,Req,0}, - {16,5,Req,0}, - {16,6,Req,0}, - {16,7,Req,0}, - {17,1,Req,0}, - {17,2,Req,0}, - {17,3,Man,0}, - {17,4,Man,0}, - {17,5,Adv,0}, - {17,6,Man,0}, - {17,7,Req,0}, - {17,8,Adv,0}, - {17,9,Man,0}, - {17,10,Req,0}, - {17,11,Adv,0}, - {17,12,Adv,0}, - {17,13,Req,0}, - {18,1,Req,0}, - {18,2,Req,0}, - {18,3,Req,0}, - {18,4,Adv,0}, - {18,5,Adv,0}, - {18,6,Req,0}, - {18,7,Req,0}, - {18,8,Req,0}, - {18,9,Req,0}, - {18,10,Man,0}, - {19,1,Man,0}, - {19,2,Adv,0}, - {20,1,Adv,0}, - {20,2,Req,0}, - {20,3,Req,0}, - {20,4,Req,0}, - {20,5,Adv,0}, - {20,6,Req,0}, - {20,7,Req,0}, - {20,8,Req,0}, - {20,9,Req,0}, - {20,10,Adv,0}, - {20,11,Req,0}, - {20,12,Req,0}, - {20,13,Req,0}, - {20,14,Req,0}, - {21,1,Req,0}, - {21,2,Req,0}, - {21,3,Req,0}, - {21,4,Req,0}, - {21,5,Req,0}, - {21,6,Req,0}, - {21,7,Req,0}, - {21,8,Req,0}, - {21,9,Req,0}, - {21,10,Req,0}, - {21,11,Req,0}, - {21,12,Adv,0}, - {21,13,Man,1}, // Amendment 1 - {21,14,Req,1}, // Amendment 1 - {21,15,Req,1}, // Amendment 1 - {21,16,Req,1}, // Amendment 1 - {21,17,Req,1}, // Amendment 1 - {21,18,Man,1}, // Amendment 1 - {21,19,Man,1}, // Amendment 1 - {21,20,Man,1}, // Amendment 1 - {21,21,Req,3}, // Amendment 3 - {21,22,Man,3}, // Amendment 3 - {21,23,Req,3}, // Amendment 3 - {21,24,Req,3}, // Amendment 3 - {21,25,Req,4}, // Amendment 4 - {21,26,Req,4}, // Amendment 4 - {22,1,Req,0}, - {22,2,Man,0}, - {22,3,Req,0}, - {22,4,Man,0}, - {22,5,Man,0}, - {22,6,Man,0}, - {22,7,Req,1}, // Amendment 1 - {22,8,Req,1}, // Amendment 1 - {22,9,Req,1}, // Amendment 1 - {22,10,Req,1}, // Amendment 1 - {22,11,Req,4}, // Amendment 4 - {22,12,Man,4}, // Amendment 4 - {22,13,Req,4}, // Amendment 4 - {22,14,Man,4}, // Amendment 4 - {22,15,Req,4}, // Amendment 4 - {22,16,Req,4}, // Amendment 4 - {22,17,Req,4}, // Amendment 4 - {22,18,Req,4}, // Amendment 4 - {22,19,Req,4}, // Amendment 4 - {22,20,Man,4}, // Amendment 4 - {23,1,Adv,3}, // Amendment 3 - {23,2,Req,3}, // Amendment 3 - {23,3,Adv,3}, // Amendment 3 - {23,4,Req,3}, // Amendment 3 - {23,5,Adv,3}, // Amendment 3 - {23,6,Req,3}, // Amendment 3 - {23,7,Adv,3}, // Amendment 3 - {23,8,Req,3}, // Amendment 3 -}; - -static std::map misraRuleSeverity{ - {"1.1", "error"}, //{"syntaxError", "unknownMacro"}}, - {"1.3", "error"}, //most "error" - {"2.1", "style"}, //{"alwaysFalse", "duplicateBreak"}}, - {"2.2", "style"}, //{"alwaysTrue", "redundantCondition", "redundantAssignment", "redundantAssignInSwitch", "unreadVariable"}}, - {"2.6", "style"}, //{"unusedLabel"}}, - {"2.8", "style"}, //{"unusedVariable"}}, - {"5.3", "style"}, //{"shadowVariable"}}, - {"8.3", "style"}, //{"funcArgNamesDifferent"}}, // inconclusive - {"8.13", "style"}, //{"constPointer"}}, - {"9.1", "error"}, //{"uninitvar"}}, - {"14.3", "style"}, //{"alwaysTrue", "alwaysFalse", "compareValueOutOfTypeRangeError", "knownConditionTrueFalse"}}, - {"13.2", "error"}, //{"unknownEvaluationOrder"}}, - {"13.6", "style"}, //{"sizeofCalculation"}}, - {"17.4", "error"}, //{"missingReturn"}}, - {"17.5", "warning"}, //{"argumentSize"}}, - {"18.1", "error"}, //{"pointerOutOfBounds"}}, - {"18.2", "error"}, //{"comparePointers"}}, - {"18.3", "error"}, //{"comparePointers"}}, - {"18.6", "error"}, //{"danglingLifetime"}}, - {"19.1", "error"}, //{"overlappingWriteUnion", "overlappingWriteFunction"}}, - {"20.6", "error"}, //{"preprocessorErrorDirective"}}, - {"21.13", "error"}, //{"invalidFunctionArg"}}, - {"21.17", "error"}, //{"bufferAccessOutOfBounds"}}, - {"21.18", "error"}, //{"bufferAccessOutOfBounds"}}, - {"22.1", "error"}, //{"memleak", "resourceLeak", "memleakOnRealloc", "leakReturnValNotUsed", "leakNoVarFunctionCall"}}, - {"22.2", "error"}, //{"autovarInvalidDeallocation"}}, - {"22.3", "error"}, //{"incompatibleFileOpen"}}, - {"22.4", "error"}, //{"writeReadOnlyFile"}}, - {"22.6", "error"}, //{"useClosedFile"}} -}; - -} - -""") + const std::map misraRuleSeverity{ + {"1.1", "error"}, //{"syntaxError", "unknownMacro"}}, + {"1.3", "error"}, //most "error" + {"2.1", "style"}, //{"alwaysFalse", "duplicateBreak"}}, + {"2.2", "style"}, //{"alwaysTrue", "redundantCondition", "redundantAssignment", "redundantAssignInSwitch", "unreadVariable"}}, + {"2.6", "style"}, //{"unusedLabel"}}, + {"2.8", "style"}, //{"unusedVariable"}}, + {"5.3", "style"}, //{"shadowVariable"}}, + {"8.3", "style"}, //{"funcArgNamesDifferent"}}, // inconclusive + {"8.13", "style"}, //{"constPointer"}}, + {"9.1", "error"}, //{"uninitvar"}}, + {"14.3", "style"}, //{"alwaysTrue", "alwaysFalse", "compareValueOutOfTypeRangeError", "knownConditionTrueFalse"}}, + {"13.2", "error"}, //{"unknownEvaluationOrder"}}, + {"13.6", "style"}, //{"sizeofCalculation"}}, + {"17.4", "error"}, //{"missingReturn"}}, + {"17.5", "warning"}, //{"argumentSize"}}, + {"18.1", "error"}, //{"pointerOutOfBounds"}}, + {"18.2", "error"}, //{"comparePointers"}}, + {"18.3", "error"}, //{"comparePointers"}}, + {"18.6", "error"}, //{"danglingLifetime"}}, + {"19.1", "error"}, //{"overlappingWriteUnion", "overlappingWriteFunction"}}, + {"20.6", "error"}, //{"preprocessorErrorDirective"}}, + {"21.13", "error"}, //{"invalidFunctionArg"}}, + {"21.17", "error"}, //{"bufferAccessOutOfBounds"}}, + {"21.18", "error"}, //{"bufferAccessOutOfBounds"}}, + {"22.1", "error"}, //{"memleak", "resourceLeak", "memleakOnRealloc", "leakReturnValNotUsed", "leakNoVarFunctionCall"}}, + {"22.2", "error"}, //{"autovarInvalidDeallocation"}}, + {"22.3", "error"}, //{"incompatibleFileOpen"}}, + {"22.4", "error"}, //{"writeReadOnlyFile"}}, + {"22.6", "error"}, //{"useClosedFile"}} + }; +}""")