summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-08-16 17:52:53 +0300
committerAndrei Karas <akaras@inbox.ru>2016-08-16 17:54:47 +0300
commit7213833c054da4a5c46d0f4e3190b2770c204b7c (patch)
tree87abae0aa8cd48e648861f5c8aae3107b9c31fb5
parentd46b9aa882ff04ca43736eb4290cd100e54d2de2 (diff)
downloadmplint-7213833c054da4a5c46d0f4e3190b2770c204b7c.tar.gz
mplint-7213833c054da4a5c46d0f4e3190b2770c204b7c.tar.bz2
mplint-7213833c054da4a5c46d0f4e3190b2770c204b7c.tar.xz
mplint-7213833c054da4a5c46d0f4e3190b2770c204b7c.zip
Add check for wrong brackets formatting.
-rw-r--r--src/Makefile.am1
-rw-r--r--src/rules/brackets.cpp59
-rw-r--r--tests/testreport.txt16
-rw-r--r--tests/testsrc/bad/brackets.cpp81
-rw-r--r--tests/testsrc/bad/brackets.h79
-rw-r--r--tests/testsrc/good/brackets.cpp34
-rw-r--r--tests/testsrc/good/brackets.h34
7 files changed, 304 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 '<?xml version="1.0" encoding="utf-8"?>'
+[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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#include "lintmanager.h"
+
+void func()
+{
+ if (a == 10)
+ {
+ if (b == 20)
+ {
+ }
+ else
+ {
+ }
+ }
+}