summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-05-23 23:47:00 +0300
committerAndrei Karas <akaras@inbox.ru>2014-05-23 23:47:00 +0300
commit04dc442ed114e37bcd7a3c2722ea38bab27023a9 (patch)
tree8b3ff2ab6087c31bc36fb2e514b78c882865b6e5
parentc6adf05890f2786e43980c6e17f949c8a820f07d (diff)
downloadmplint-04dc442ed114e37bcd7a3c2722ea38bab27023a9.tar.gz
mplint-04dc442ed114e37bcd7a3c2722ea38bab27023a9.tar.bz2
mplint-04dc442ed114e37bcd7a3c2722ea38bab27023a9.tar.xz
mplint-04dc442ed114e37bcd7a3c2722ea38bab27023a9.zip
Now rules adding self rules list.
-rw-r--r--src/lintmanager.cpp13
-rw-r--r--src/lintmanager.h10
-rw-r--r--src/main.cpp2
-rw-r--r--src/rulebase.cpp3
-rw-r--r--src/rules/dump.cpp5
5 files changed, 25 insertions, 8 deletions
diff --git a/src/lintmanager.cpp b/src/lintmanager.cpp
index 312ddd6..69cd21c 100644
--- a/src/lintmanager.cpp
+++ b/src/lintmanager.cpp
@@ -32,15 +32,20 @@
#include "localconsts.h"
-LintManager::LintManager(std::string path)
+LintManager lint;
+
+LintManager::LintManager()
+{
+}
+
+void LintManager::run(std::string path)
{
- registerRules();
enumFiles(path);
}
-void LintManager::registerRules()
+void LintManager::addRule(RuleBase *const rule)
{
- mRules.push_back(new Dump);
+ mRules.push_back(rule);
}
void LintManager::enumFiles(std::string path)
diff --git a/src/lintmanager.h b/src/lintmanager.h
index 9d7fe1f..4fe6902 100644
--- a/src/lintmanager.h
+++ b/src/lintmanager.h
@@ -31,7 +31,11 @@ class RuleBase;
class LintManager final
{
public:
- LintManager(std::string path);
+ LintManager();
+
+ void run(std::string path);
+
+ void addRule(RuleBase *const rule);
protected:
void enumFiles(std::string path);
@@ -42,8 +46,6 @@ class LintManager final
void readFile();
- void registerRules();
-
void selectRulesForFile();
void applyRulesToFile();
@@ -58,4 +60,6 @@ class LintManager final
std::string mFileName;
};
+extern LintManager lint;
+
#endif // LINTMANAGER_H
diff --git a/src/main.cpp b/src/main.cpp
index 88f431b..af3dbb9 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -24,6 +24,6 @@
int main(int argc A_UNUSED, char *argv[] A_UNUSED)
{
- LintManager lint("..");
+ lint.run("..");
return 0;
}
diff --git a/src/rulebase.cpp b/src/rulebase.cpp
index dfb3f1d..7a53c9b 100644
--- a/src/rulebase.cpp
+++ b/src/rulebase.cpp
@@ -20,12 +20,15 @@
#include "rulebase.h"
+#include "lintmanager.h"
+
#include "localconsts.h"
RuleBase::RuleBase() :
file(),
line(-1)
{
+ lint.addRule(this);
}
void RuleBase::print(const std::string &text) const
diff --git a/src/rules/dump.cpp b/src/rules/dump.cpp
index 163cf54..3140e6a 100644
--- a/src/rules/dump.cpp
+++ b/src/rules/dump.cpp
@@ -22,6 +22,11 @@
#include "localconsts.h"
+namespace
+{
+ Dump instance;
+}
+
Dump::Dump()
{
addMask("(.+)[.]cpp");