From a3c1145553b12532b18d2f439b01b649dc0d4b6e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 1 Apr 2015 22:49:03 +0300 Subject: Add rule for check virtual and override or final in same line. --- src/Makefile.am | 1 + src/rules/virtual.cpp | 37 +++++++++++++++++++++++++++++++++++++ tests/testreport.txt | 6 +++++- tests/testsrc/bad/virtual1.cpp | 36 ++++++++++++++++++++++++++++++++++++ tests/testsrc/bad/virtual1.h | 33 +++++++++++++++++++++++++++++++++ tests/testsrc/good/virtual1.cpp | 34 ++++++++++++++++++++++++++++++++++ tests/testsrc/good/virtual1.h | 34 ++++++++++++++++++++++++++++++++++ 7 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 src/rules/virtual.cpp create mode 100644 tests/testsrc/bad/virtual1.cpp create mode 100644 tests/testsrc/bad/virtual1.h create mode 100644 tests/testsrc/good/virtual1.cpp create mode 100644 tests/testsrc/good/virtual1.h diff --git a/src/Makefile.am b/src/Makefile.am index 05072fe..58030c9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -26,6 +26,7 @@ mplint_SOURCES = \ rules/license.cpp \ rules/packet.cpp \ rules/po.cpp \ + rules/virtual.cpp \ rules/xml.cpp # set the include path found by configure diff --git a/src/rules/virtual.cpp b/src/rules/virtual.cpp new file mode 100644 index 0000000..70f0e36 --- /dev/null +++ b/src/rules/virtual.cpp @@ -0,0 +1,37 @@ +/* + * 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(virtualCheck, "013", "(.+)[.](cpp|h)") + +startRule(virtualCheck) +{ +} + +endRule(virtualCheck) +{ +} + +parseLineRule(virtualCheck) +{ + if (isMatch(data, "(.+)virtual[ ](.+)[ ](override|final)(.+)")) + print("Keywords virtual is useless if used with override or final"); +} diff --git a/tests/testreport.txt b/tests/testreport.txt index 0d13bed..8b47e0b 100644 --- a/tests/testreport.txt +++ b/tests/testreport.txt @@ -41,5 +41,9 @@ [testsrc/bad/license5.h:3]: V005: Missing copyrights section [testsrc/bad/license6.cpp:5]: V005: Missing "This file is part of The ManaPlus Client." [testsrc/bad/license6.h:5]: V005: Missing "This file is part of The ManaPlus Client." +[testsrc/bad/packet.cpp:25]: V012: Wrong output packet creation. Must be 'createOutPacket(CMSG...' [testsrc/bad/uk.po:2257]: V010: Wrong character at end of translation line. -[testsrc/good/packet.cpp:25]: V012: Wrong output packet creation. Must be 'createOutPacket(SMSG...' +[testsrc/bad/virtual1.cpp:33]: V013: Keywords virtual is useless if used with override or final +[testsrc/bad/virtual1.cpp:34]: V013: Keywords virtual is useless if used with override or final +[testsrc/bad/virtual1.h:31]: V013: Keywords virtual is useless if used with override or final +[testsrc/bad/virtual1.h:32]: V013: Keywords virtual is useless if used with override or final diff --git a/tests/testsrc/bad/virtual1.cpp b/tests/testsrc/bad/virtual1.cpp new file mode 100644 index 0000000..cfc4176 --- /dev/null +++ b/tests/testsrc/bad/virtual1.cpp @@ -0,0 +1,36 @@ +/* + * 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" + +#include "debug.h" + +class Test1 final +{ + virtual Test1(); + virtual Test2(); +} + +class Test2 notfinal : public Test1 +{ + virtual Test2() override; + virtual Test3() final; +} + diff --git a/tests/testsrc/bad/virtual1.h b/tests/testsrc/bad/virtual1.h new file mode 100644 index 0000000..7a9e0f7 --- /dev/null +++ b/tests/testsrc/bad/virtual1.h @@ -0,0 +1,33 @@ +/* + * 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" + +class Test1 notfinal +{ + virtual Test1(); + virtual Test2(); +} + +class Test2 final : public Test1 +{ + virtual Test2() override; + virtual Test3() final; +} diff --git a/tests/testsrc/good/virtual1.cpp b/tests/testsrc/good/virtual1.cpp new file mode 100644 index 0000000..0f72e65 --- /dev/null +++ b/tests/testsrc/good/virtual1.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 "lintmanager.h" + +#include "debug.h" + +class Test1 final +{ + virtual Test1(); +} + +class Test2 notfinal : public Test1 +{ + Test2() override final; +} + diff --git a/tests/testsrc/good/virtual1.h b/tests/testsrc/good/virtual1.h new file mode 100644 index 0000000..c66c08a --- /dev/null +++ b/tests/testsrc/good/virtual1.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" + +class Test1 notfinal +{ +} + +class Test2 final : public Test1 +{ +} + + +/* + * Sets the widget being dragged. Used by the Gui class to +*/ \ No newline at end of file -- cgit v1.2.3-60-g2f50