Skip to content

Commit 685c672

Browse files
committed
gcc-parser: tag trace events produced by gcc -fanalyzer
1 parent c04fd99 commit 685c672

File tree

3 files changed

+485
-462
lines changed

3 files changed

+485
-462
lines changed

src/gcc-parser.cc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,12 +558,14 @@ struct GccPostProcessor::Private {
558558
const LangDetector langDetector;
559559

560560
void transGccAnal(Defect *pDef) const;
561+
void polishGccAnal(Defect *pDef) const;
561562
void transSuffixGeneric(Defect *pDef, const std::string, const RE &) const;
562563
void transShellCheckId(Defect *pDef) const;
563564

564565
const RE reClangWarningEvt = RE("^(.*) (\\[[A-Za-z.]+\\])$");
565566
const RE reGccAnalCoreEvt = RE("^(.*) (\\[-Wanalyzer-[^ \\]]+\\])$");
566567
const RE reGccAnalCwe = RE("^(.*) \\[CWE-([0-9]+)\\]$");
568+
const RE reGccAnalTraceEvt = RE("^\\([0-9]+\\) .*$$");
567569
const RE reGccWarningEvt = RE("^(.*) (\\[-W[^ \\]]+\\])$");
568570
const RE reShellCheckId = RE("(^.*) (\\[SC([0-9]+)\\])$");
569571
};
@@ -604,6 +606,24 @@ void GccPostProcessor::Private::transGccAnal(Defect *pDef) const
604606
keyEvt.msg = sm[/* msg */ 1];
605607
}
606608

609+
void GccPostProcessor::Private::polishGccAnal(Defect *pDef) const
610+
{
611+
if ("GCC_ANALYZER_WARNING" != pDef->checker)
612+
return;
613+
614+
for (DefEvent &evt : pDef->events) {
615+
if (evt.verbosityLevel != /* note */ 1 || evt.event != "note")
616+
// not a "note" event
617+
continue;
618+
619+
if (!boost::regex_match(evt.msg, this->reGccAnalTraceEvt))
620+
// not a "trace" event either
621+
continue;
622+
623+
evt.verbosityLevel = /* trace */ 2;
624+
}
625+
}
626+
607627
void GccPostProcessor::Private::transSuffixGeneric(
608628
Defect *pDef,
609629
const std::string checker,
@@ -631,6 +651,9 @@ void GccPostProcessor::apply(Defect *pDef) const
631651
d->transSuffixGeneric(pDef, "CLANG_WARNING", d->reClangWarningEvt);
632652
d->transSuffixGeneric(pDef, "COMPILER_WARNING", d->reGccWarningEvt);
633653
d->transSuffixGeneric(pDef, "SHELLCHECK_WARNING", d->reShellCheckId);
654+
655+
d->polishGccAnal(pDef);
656+
634657
d->langDetector.inferLangFromChecker(pDef);
635658
}
636659

tests/csgrep/63-gcc-parser-checker-lang-stdout.txt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
"column": 5,
108108
"event": "note",
109109
"message": "(1) following 'false' branch...",
110-
"verbosity_level": "1"
110+
"verbosity_level": "2"
111111
},
112112
{
113113
"file_name": "",
@@ -128,15 +128,15 @@
128128
"line": 0,
129129
"event": "note",
130130
"message": "(2) ...to here",
131-
"verbosity_level": "1"
131+
"verbosity_level": "2"
132132
},
133133
{
134134
"file_name": "/builddir/build/BUILD/systemtap-4.4/staprun/relay.c",
135135
"line": 53,
136136
"column": 8,
137137
"event": "note",
138138
"message": "(3) following 'false' branch...",
139-
"verbosity_level": "1"
139+
"verbosity_level": "2"
140140
},
141141
{
142142
"file_name": "",
@@ -158,7 +158,7 @@
158158
"column": 27,
159159
"event": "note",
160160
"message": "(4) ...to here",
161-
"verbosity_level": "1"
161+
"verbosity_level": "2"
162162
},
163163
{
164164
"file_name": "",
@@ -180,7 +180,7 @@
180180
"column": 5,
181181
"event": "note",
182182
"message": "(5) following 'false' branch...",
183-
"verbosity_level": "1"
183+
"verbosity_level": "2"
184184
},
185185
{
186186
"file_name": "",
@@ -202,7 +202,7 @@
202202
"column": 40,
203203
"event": "note",
204204
"message": "(6) ...to here",
205-
"verbosity_level": "1"
205+
"verbosity_level": "2"
206206
},
207207
{
208208
"file_name": "",
@@ -224,15 +224,15 @@
224224
"column": 40,
225225
"event": "note",
226226
"message": "(7) allocated here",
227-
"verbosity_level": "1"
227+
"verbosity_level": "2"
228228
},
229229
{
230230
"file_name": "/builddir/build/BUILD/systemtap-4.4/staprun/relay.c",
231231
"line": 56,
232232
"column": 5,
233233
"event": "note",
234234
"message": "(8) assuming '<unknown>' is non-NULL",
235-
"verbosity_level": "1"
235+
"verbosity_level": "2"
236236
},
237237
{
238238
"file_name": "",
@@ -254,15 +254,15 @@
254254
"column": 5,
255255
"event": "note",
256256
"message": "(9) following 'false' branch...",
257-
"verbosity_level": "1"
257+
"verbosity_level": "2"
258258
},
259259
{
260260
"file_name": "/builddir/build/BUILD/systemtap-4.4/staprun/relay.c",
261261
"line": 60,
262262
"column": 16,
263263
"event": "note",
264264
"message": "(10) ...to here",
265-
"verbosity_level": "1"
265+
"verbosity_level": "2"
266266
},
267267
{
268268
"file_name": "",
@@ -284,7 +284,7 @@
284284
"column": 16,
285285
"event": "note",
286286
"message": "(11) '<unknown>' leaks here; was allocated at (7)",
287-
"verbosity_level": "1"
287+
"verbosity_level": "2"
288288
}
289289
]
290290
},

0 commit comments

Comments
 (0)