@@ -42,22 +42,26 @@ inline std::string regexReplaceWrap(
4242MsgFilter* MsgFilter::self_;
4343
4444struct MsgReplace {
45- const RE regex;
45+ const RE reChecker;
46+ const RE reMsg;
4647 const std::string replaceWith;
4748
48- MsgReplace (const std::string ®ex_, const std::string &rpl) :
49- regex (regex_),
50- replaceWith (rpl)
49+ MsgReplace (
50+ const std::string &reChecker,
51+ const std::string &reMsg,
52+ const std::string &replaceWith) :
53+ reChecker (reChecker),
54+ reMsg (reMsg),
55+ replaceWith (replaceWith)
5156 {
5257 }
5358};
5459
55- typedef std::vector<MsgReplace *> TRegexList;
56- typedef std::map<const std::string, TRegexList> TMsgFilterMap;
60+ typedef std::vector<MsgReplace *> TMsgReplaceList;
5761
5862struct MsgFilter ::Private {
5963 bool ignorePath = false ;
60- TMsgFilterMap msgFilterMap ;
64+ TMsgReplaceList repList ;
6165 TSubstMap fileSubsts;
6266
6367 const std::string strKrn = " ^[a-zA-Z+]+" ;
@@ -70,12 +74,15 @@ struct MsgFilter::Private {
7074 const RE reTmpCleaner = RE(" (.*)" );
7175
7276 void addMsgFilter (
73- const std::string & checker,
77+ std::string checker,
7478 const std::string ®exp,
7579 const std::string &replacement = " " )
7680 {
77- struct MsgReplace *rpl = new MsgReplace (regexp, replacement);
78- msgFilterMap[checker].push_back (rpl);
81+ if (checker.empty ())
82+ // match everything
83+ checker = " .*" ;
84+
85+ this ->repList .push_back (new MsgReplace (checker, regexp, replacement));
7986 }
8087};
8188
@@ -115,21 +122,17 @@ MsgFilter::MsgFilter():
115122 " on line [0-9]+\\ .$" , " on line NNNN." );
116123
117124 // pylint reports, either raw, or prospector-wrapped
118- const std::vector<std::string> pylintCheckers= {
119- " PROSPECTOR_WARNING" ,
120- " PYLINT_WARNING"
121- };
122- for (const std::string &checker : pylintCheckers) {
123- // "Too many lines in module (1152/1000)" etc.
124- d->addMsgFilter (checker, " \\ ([0-9]+/[0-9]+\\ )$" , " " );
125-
126- // "... Redefining name 'desc' from outer scope (line 10)" etc.
127- d->addMsgFilter (checker, " \\ ((?:imported )?line [0-9]+\\ )$" , " " );
128-
129- // ".. method already defined line 199"
130- d->addMsgFilter (checker, " method already defined line [0-9]+$" ,
131- " method already defined" );
132- }
125+ const std::string pylintCheckers = " PROSPECTOR_WARNING|PYLINT_WARNING" ;
126+
127+ // "Too many lines in module (1152/1000)" etc.
128+ d->addMsgFilter (pylintCheckers, " \\ ([0-9]+/[0-9]+\\ )$" , " " );
129+
130+ // "... Redefining name 'desc' from outer scope (line 10)" etc.
131+ d->addMsgFilter (pylintCheckers, " \\ ((?:imported )?line [0-9]+\\ )$" , " " );
132+
133+ // ".. method already defined line 199"
134+ d->addMsgFilter (pylintCheckers, " method already defined line [0-9]+$" ,
135+ " method already defined" );
133136
134137 // "__coverity_strcmp" -> "strcmp", etc.
135138 d->addMsgFilter (" " , " __coverity_" , " " );
@@ -143,9 +146,8 @@ MsgFilter::MsgFilter():
143146
144147MsgFilter::~MsgFilter ()
145148{
146- for (TMsgFilterMap::const_reference item : d->msgFilterMap )
147- for (struct MsgReplace *rpl : item.second)
148- delete rpl;
149+ for (struct MsgReplace *rpl : d->repList)
150+ delete rpl;
149151
150152 delete d;
151153}
@@ -167,14 +169,9 @@ std::string MsgFilter::filterMsg(
167169 const std::string &checker)
168170{
169171 std::string filtered = msg;
170- for (const struct MsgReplace *rpl : d->msgFilterMap[checker]) {
171- filtered = regexReplaceWrap (filtered, rpl->regex , rpl->replaceWith );
172- }
173-
174- // these substitutions are common for all checkers
175- for (const struct MsgReplace *rpl : d->msgFilterMap[" " ]) {
176- filtered = regexReplaceWrap (filtered, rpl->regex , rpl->replaceWith );
177- }
172+ for (const struct MsgReplace *rpl : d->repList)
173+ if (boost::regex_match (checker, rpl->reChecker ))
174+ filtered = regexReplaceWrap (filtered, rpl->reMsg , rpl->replaceWith );
178175
179176#if DEBUG_SUBST > 1
180177 std::cerr << " filterMsg: " << filtered << " \n " ;
0 commit comments