Skip to content

Commit bed9282

Browse files
Vampiretnyblom
authored andcommitted
Output the rules ordered by filename and linenumber when using --stats (#14)
1 parent 6ca6bc6 commit bed9282

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

src/ruleparser.cpp

+10-12
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ class Stats::Private
331331
void ruleMatched(const Rules::Match &rule, const int rev);
332332
void addRule(const Rules::Match &rule);
333333
private:
334-
QMap<QString,int> m_usedRules;
334+
QMap<Rules::Match,int> m_usedRules;
335335
};
336336

337337
Stats::Stats() : d(new Private())
@@ -381,29 +381,27 @@ Stats::Private::Private()
381381
void Stats::Private::printStats() const
382382
{
383383
printf("\nRule stats\n");
384-
foreach(const QString name, m_usedRules.keys()) {
385-
printf("%s was matched %i times\n", qPrintable(name), m_usedRules[name]);
384+
foreach(const Rules::Match rule, m_usedRules.keys()) {
385+
printf("%s was matched %i times\n", qPrintable(rule.info()), m_usedRules[rule]);
386386
}
387387
}
388388

389389
void Stats::Private::ruleMatched(const Rules::Match &rule, const int rev)
390390
{
391391
Q_UNUSED(rev);
392-
const QString name = rule.info();
393-
if(!m_usedRules.contains(name)) {
394-
m_usedRules.insert(name, 1);
395-
qWarning() << "WARN: New match rule, should have been added when created.";
392+
if(!m_usedRules.contains(rule)) {
393+
m_usedRules.insert(rule, 1);
394+
qWarning() << "WARN: New match rule" << rule.info() << ", should have been added when created.";
396395
} else {
397-
m_usedRules[name]++;
396+
m_usedRules[rule]++;
398397
}
399398
}
400399

401400
void Stats::Private::addRule( const Rules::Match &rule)
402401
{
403-
const QString name = rule.info();
404-
if(m_usedRules.contains(name))
405-
qWarning() << "WARN: Rule" << name << "was added multiple times.";
406-
m_usedRules.insert(name, 0);
402+
if(m_usedRules.contains(rule))
403+
qWarning() << "WARN: Rule" << rule.info() << "was added multiple times.";
404+
m_usedRules.insert(rule, 0);
407405
}
408406

409407
#ifndef QT_NO_DEBUG_STREAM

src/ruleparser.h

+5
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ class Rules
8383
} action;
8484

8585
Match() : minRevision(-1), maxRevision(-1), annotate(false), action(Ignore) { }
86+
bool operator<(const Match other) const {
87+
if (filename != other.filename)
88+
return filename < other.filename;
89+
return lineNumber < other.lineNumber;
90+
}
8691
const QString info() const {
8792
const QString info = Rule::filename % ":" % QByteArray::number(Rule::lineNumber) % " " % rx.pattern();
8893
return info;

0 commit comments

Comments
 (0)