From 7213833c054da4a5c46d0f4e3190b2770c204b7c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 16 Aug 2016 17:52:53 +0300 Subject: Add check for wrong brackets formatting. --- src/Makefile.am | 1 + src/rules/brackets.cpp | 59 ++++++++++++++++++++++++++++++ tests/testreport.txt | 16 ++++++++ tests/testsrc/bad/brackets.cpp | 81 +++++++++++++++++++++++++++++++++++++++++ tests/testsrc/bad/brackets.h | 79 ++++++++++++++++++++++++++++++++++++++++ tests/testsrc/good/brackets.cpp | 34 +++++++++++++++++ tests/testsrc/good/brackets.h | 34 +++++++++++++++++ 7 files changed, 304 insertions(+) create mode 100644 src/rules/brackets.cpp create mode 100644 tests/testsrc/bad/brackets.cpp create mode 100644 tests/testsrc/bad/brackets.h create mode 100644 tests/testsrc/good/brackets.cpp create mode 100644 tests/testsrc/good/brackets.h diff --git a/src/Makefile.am b/src/Makefile.am index e516d03..4992044 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -17,6 +17,7 @@ mplint_SOURCES = \ stringutils.h \ stringvector.h \ template.hpp \ + rules/brackets.cpp \ rules/constructor.cpp \ rules/debug.cpp \ rules/dump.cpp \ diff --git a/src/rules/brackets.cpp b/src/rules/brackets.cpp new file mode 100644 index 0000000..13e7101 --- /dev/null +++ b/src/rules/brackets.cpp @@ -0,0 +1,59 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "template.hpp" + +registerRuleExt(brackets, "015", "(.+)[.](cpp|h)") + +startRule(brackets) +{ +} + +endRule(brackets) +{ +} + +parseLineRule(brackets) +{ + trim(data); + if (!data.empty()) + { + if (data[0] == '}') + { + std::string text = data.substr(1); + trim(text); + if (!text.empty()) + { + if (text == "else" || + text == "while") + { + print("Brackets formatting error. Wrong first bracket position"); + } + } + } + if (data[data.size() - 1] == '{') + { + std::string text = data.substr(1, data.size() - 1); + trim(text); + if (!text.empty()) + print("Brackets formatting error. Wrong last bracket position"); + } + } +} diff --git a/tests/testreport.txt b/tests/testreport.txt index c8ac058..22e1413 100644 --- a/tests/testreport.txt +++ b/tests/testreport.txt @@ -1,4 +1,20 @@ [testsrc/bad/avatarlistbox.xml:1]: V009: Wrong xml header. Must be '' +[testsrc/bad/brackets.cpp:23]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.cpp:34]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.cpp:45]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.cpp:56]: V015: Brackets formatting error. Wrong first bracket position +[testsrc/bad/brackets.cpp:69]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.cpp:76]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.cpp:77]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.cpp:78]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.h:21]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.h:32]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.h:43]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.h:54]: V015: Brackets formatting error. Wrong first bracket position +[testsrc/bad/brackets.h:67]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.h:74]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.h:75]: V015: Brackets formatting error. Wrong last bracket position +[testsrc/bad/brackets.h:76]: V015: Brackets formatting error. Wrong last bracket position [testsrc/bad/constructor1.cpp:25]: V007: Need add final or notfinal into class declaration [testsrc/bad/constructor1.cpp:32]: V007: Need add final or notfinal into class declaration [testsrc/bad/constructor1.cpp:34]: V006: Add space between constructor and ":". diff --git a/tests/testsrc/bad/brackets.cpp b/tests/testsrc/bad/brackets.cpp new file mode 100644 index 0000000..898a258 --- /dev/null +++ b/tests/testsrc/bad/brackets.cpp @@ -0,0 +1,81 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "debug.h" + +void func1() { + if (a == 10) + { + if (b == 20) + { + } + } +} + +void func2() +{ + if (a == 10) { + if (b == 20) + { + } + } +} + +void func3() +{ + if (a == 10) + { + if (b == 20) { + } + } +} + +void func4() +{ + if (a == 10) + { + if (b == 20) + { + } else + { + } + } +} + +void func5() +{ + if (a == 10) + { + if (b == 20) + { + } + else { + } + } +} + +void func6() +{ + if (a == 10) { + if (b == 20) { + } else { + } + } +} diff --git a/tests/testsrc/bad/brackets.h b/tests/testsrc/bad/brackets.h new file mode 100644 index 0000000..bb1ba39 --- /dev/null +++ b/tests/testsrc/bad/brackets.h @@ -0,0 +1,79 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +void func1() { + if (a == 10) + { + if (b == 20) + { + } + } +} + +void func2() +{ + if (a == 10) { + if (b == 20) + { + } + } +} + +void func3() +{ + if (a == 10) + { + if (b == 20) { + } + } +} + +void func4() +{ + if (a == 10) + { + if (b == 20) + { + } else + { + } + } +} + +void func5() +{ + if (a == 10) + { + if (b == 20) + { + } + else { + } + } +} + +void func6() +{ + if (a == 10) { + if (b == 20) { + } else { + } + } +} diff --git a/tests/testsrc/good/brackets.cpp b/tests/testsrc/good/brackets.cpp new file mode 100644 index 0000000..2708945 --- /dev/null +++ b/tests/testsrc/good/brackets.cpp @@ -0,0 +1,34 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "debug.h" + +void func() +{ + if (a == 10) + { + if (b == 20) + { + } + else + { + } + } +} diff --git a/tests/testsrc/good/brackets.h b/tests/testsrc/good/brackets.h new file mode 100644 index 0000000..89f5b71 --- /dev/null +++ b/tests/testsrc/good/brackets.h @@ -0,0 +1,34 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "lintmanager.h" + +void func() +{ + if (a == 10) + { + if (b == 20) + { + } + else + { + } + } +} -- cgit v1.2.3-60-g2f50