summaryrefslogtreecommitdiff
path: root/src/lintmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lintmanager.cpp')
-rw-r--r--src/lintmanager.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/lintmanager.cpp b/src/lintmanager.cpp
index 3b49b0b..8acb622 100644
--- a/src/lintmanager.cpp
+++ b/src/lintmanager.cpp
@@ -48,11 +48,22 @@ void LintManager::addRule(RuleBase *const rule)
void LintManager::deleteRule(RuleBase *const rule)
{
- FOR_EACH (std::vector<RuleBase*>::iterator, it, mRules)
+ deleteFrom(rule, mRules);
+}
+
+void LintManager::deleteSelectedRule(RuleBase *const rule)
+{
+ deleteFrom(rule, mSelectedRules);
+}
+
+void LintManager::deleteFrom(RuleBase *const rule,
+ std::vector<RuleBase*> &rules)
+{
+ FOR_EACH (std::vector<RuleBase*>::iterator, it, rules)
{
if (*it == rule)
{
- mRules.erase(it);
+ rules.erase(it);
return;
}
}
@@ -109,9 +120,12 @@ void LintManager::applyRulesToFile()
const std::string &str = *itStr;
rule->setLine(line);
rule->parseLine(str);
+ if (!rule->getFlag())
+ break;
line ++;
}
- rule->end();
+ if (rule->getFlag())
+ rule->end();
}
}
@@ -145,6 +159,7 @@ void LintManager::selectRulesForFile()
{
// printf("set file %s, for rule %s\n",
// mFileName.c_str(), rule->getName().c_str());
+ rule->init();
rule->setFile(mFileName);
rule->start();
mSelectedRules.push_back(rule);