@@ -164,6 +164,32 @@ EToken Tokenizer::readNext(DefEvent *pEvt) {
164
164
return tok;
165
165
}
166
166
167
+ class NoiseFilter : public AbstractTokenFilter {
168
+ public:
169
+ NoiseFilter (ITokenizer *slave):
170
+ AbstractTokenFilter (slave),
171
+ reClangWarnCnt_ (" ^((1 warning)|([0-9]+ warnings)) generated\\ .$" )
172
+ {
173
+ }
174
+
175
+ virtual EToken readNext (DefEvent *);
176
+
177
+ private:
178
+ const boost::regex reClangWarnCnt_;
179
+ };
180
+
181
+ EToken NoiseFilter::readNext (DefEvent *pEvt)
182
+ {
183
+ for (;;) {
184
+ const EToken tok = slave_->readNext (pEvt);
185
+ if (T_UNKNOWN != tok)
186
+ return tok;
187
+
188
+ if (!boost::regex_match (pEvt->msg , reClangWarnCnt_))
189
+ return tok;
190
+ }
191
+ }
192
+
167
193
class MarkerConverter : public AbstractTokenFilter {
168
194
public:
169
195
MarkerConverter (ITokenizer *slave):
@@ -313,7 +339,8 @@ class BasicGccParser {
313
339
const std::string &fileName,
314
340
const bool silent):
315
341
rawTokenizer_ (input),
316
- markerConverter_ (&rawTokenizer_),
342
+ noiseFilter_ (&rawTokenizer_),
343
+ markerConverter_ (&noiseFilter_),
317
344
tokenizer_ (&markerConverter_),
318
345
fileName_ (fileName),
319
346
silent_ (silent),
@@ -332,6 +359,7 @@ class BasicGccParser {
332
359
333
360
private:
334
361
Tokenizer rawTokenizer_;
362
+ NoiseFilter noiseFilter_;
335
363
MarkerConverter markerConverter_;
336
364
MultilineConcatenator tokenizer_;
337
365
const std::string fileName_;
0 commit comments