@@ -541,7 +541,8 @@ class PostProcessor {
541
541
PostProcessor ():
542
542
reGccAnalCoreEvt_ (" ^(.*) (\\ [-Wanalyzer-[A-Za-z0-9-]+\\ ])$" ),
543
543
reGccAnalCwe_ (" ^(.*) \\ [CWE-([0-9]+)\\ ]$" ),
544
- reGccWarningEvt_ (" ^(.*) (\\ [-W[A-Za-z0-9-]+\\ ])$" )
544
+ reGccWarningEvt_ (" ^(.*) (\\ [-W[A-Za-z0-9-]+\\ ])$" ),
545
+ reShellCheckId_ (" (^.*) (\\ [SC([0-9]+)\\ ])$" )
545
546
{
546
547
}
547
548
@@ -552,10 +553,12 @@ class PostProcessor {
552
553
const boost::regex reGccAnalCoreEvt_;
553
554
const boost::regex reGccAnalCwe_;
554
555
const boost::regex reGccWarningEvt_;
556
+ const boost::regex reShellCheckId_;
555
557
const LangDetector langDetector_;
556
558
557
559
void transGccAnal (Defect *pDef);
558
560
void transGccSuffix (Defect *pDef);
561
+ void transShellCheckId (Defect *pDef);
559
562
};
560
563
561
564
void PostProcessor::transGccAnal (Defect *pDef) {
@@ -599,9 +602,26 @@ void PostProcessor::transGccSuffix(Defect *pDef) {
599
602
keyEvt.msg = sm[/* msg */ 1 ];
600
603
}
601
604
605
+ void PostProcessor::transShellCheckId (Defect *pDef) {
606
+ if (" SHELLCHECK_WARNING" != pDef->checker )
607
+ return ;
608
+
609
+ // check for [SC1234] suffix in message of the key event
610
+ DefEvent &keyEvt = pDef->events [pDef->keyEventIdx ];
611
+ boost::smatch sm;
612
+ if (!boost::regex_match (keyEvt.msg , sm, reShellCheckId_))
613
+ return ;
614
+
615
+ // append [SC1234] to key event ID and remove it from event msg
616
+ keyEvt.event += sm[/* id */ 2 ];
617
+ // this invalidates sm
618
+ keyEvt.msg = sm[/* msg */ 1 ];
619
+ }
620
+
602
621
void PostProcessor::apply (Defect *pDef) {
603
622
this ->transGccAnal (pDef);
604
623
this ->transGccSuffix (pDef);
624
+ this ->transShellCheckId (pDef);
605
625
this ->langDetector_ .inferLangFromChecker (pDef);
606
626
}
607
627
0 commit comments