diff options
| author | bloodstalker <thabogre@gmail.com> | 2017-01-03 12:23:10 +0000 | 
|---|---|---|
| committer | bloodstalker <thabogre@gmail.com> | 2017-01-03 12:23:10 +0000 | 
| commit | 6b004dfffb3b0a1ab289c34ff02b266d12776999 (patch) | |
| tree | 894a21065e4d905013f6768cc44dc2dec8f06c49 | |
| parent | fixed (diff) | |
| download | mutator-6b004dfffb3b0a1ab289c34ff02b266d12776999.tar.gz mutator-6b004dfffb3b0a1ab289c34ff02b266d12776999.zip | |
implemented the MainOnly option
| -rw-r--r-- | mutator-lvl0.cpp | 1131 | 
1 files changed, 762 insertions, 369 deletions
| diff --git a/mutator-lvl0.cpp b/mutator-lvl0.cpp index b7e4974..fdded89 100644 --- a/mutator-lvl0.cpp +++ b/mutator-lvl0.cpp @@ -137,11 +137,14 @@ public:          return void();        } -      std::cout << "14.9:" << "\"Else\" statement has no braces {}:"; -      std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +      if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        std::cout << "14.9:" << "\"Else\" statement has no braces {}:"; +        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -      XMLDocOut.XMLAddNode(MR.Context, SL, "14.9", "\"Else\" statement has no braces {}: "); -      JSONDocOUT.JSONAddElement(MR.Context, SL, "14.9", "\"Else\" statement has no braces {}: "); +        XMLDocOut.XMLAddNode(MR.Context, SL, "14.9", "\"Else\" statement has no braces {}: "); +        JSONDocOUT.JSONAddElement(MR.Context, SL, "14.9", "\"Else\" statement has no braces {}: "); +      }      }      else      { @@ -171,11 +174,14 @@ public:          return void();        } -      std::cout << "14.9:" << "\"If\" statement has no braces {}:"; -      std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +      if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        std::cout << "14.9:" << "\"If\" statement has no braces {}:"; +        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -      XMLDocOut.XMLAddNode(MR.Context, SL, "14.9", "\"If\" statement has no braces {}: "); -      JSONDocOUT.JSONAddElement(MR.Context, SL, "14.9", "\"If\" statement has no braces {}: "); +        XMLDocOut.XMLAddNode(MR.Context, SL, "14.9", "\"If\" statement has no braces {}: "); +        JSONDocOUT.JSONAddElement(MR.Context, SL, "14.9", "\"If\" statement has no braces {}: "); +      }      }      else      { @@ -206,11 +212,14 @@ public:          return void();        } -      std::cout << "14.10:" << "\"If-Else If\" statement has no ending Else:"; -      std::cout << IFESL.printToString(*MR.SourceManager) << ":" << std::endl; +      if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, IFESL)) +      { +        std::cout << "14.10:" << "\"If-Else If\" statement has no ending Else:"; +        std::cout << IFESL.printToString(*MR.SourceManager) << ":" << std::endl; -      XMLDocOut.XMLAddNode(MR.Context, IFESL, "14.10", "\"If-Else If\" statement has no ending Else: "); -      JSONDocOUT.JSONAddElement(MR.Context, IFESL, "14.10", "\"If-Else If\" statement has no ending Else: "); +        XMLDocOut.XMLAddNode(MR.Context, IFESL, "14.10", "\"If-Else If\" statement has no ending Else: "); +        JSONDocOUT.JSONAddElement(MR.Context, IFESL, "14.10", "\"If-Else If\" statement has no ending Else: "); +      }      }      else      { @@ -280,11 +289,14 @@ public:          return void();        } -      std::cout << "15.3:" << "\"SwitchStmt\" does not have a defaultStmt:"; -      std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +      if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        std::cout << "15.3:" << "\"SwitchStmt\" does not have a defaultStmt:"; +        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -      XMLDocOut.XMLAddNode(MR.Context, SL, "15.3", "\"SwitchStmt\" does not have a defaultStmt: "); -      JSONDocOUT.JSONAddElement(MR.Context, SL, "15.3", "\"SwitchStmt\" does not have a defaultStmt: "); +        XMLDocOut.XMLAddNode(MR.Context, SL, "15.3", "\"SwitchStmt\" does not have a defaultStmt: "); +        JSONDocOUT.JSONAddElement(MR.Context, SL, "15.3", "\"SwitchStmt\" does not have a defaultStmt: "); +      }      }      else      { @@ -321,7 +333,7 @@ public:        ASTContext::DynTypedNodeList NodeList = ASTC->getParents(*CS); -      /*assumptions:nothing has more than one parent in C.*/ +      /*@DEVI-assumptions:nothing has more than one parent in C.*/        ast_type_traits::DynTypedNode ParentNode = NodeList[0];        ast_type_traits::ASTNodeKind ParentNodeKind = ParentNode.getNodeKind(); @@ -330,11 +342,14 @@ public:        if (StringKind != "SwitchStmt")        { -        std::cout << "15.1:" << "\"CaseStmt\" has a CompoundStmt ancestor that is not the child of the SwitchStmt:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "15.1:" << "\"CaseStmt\" has a CompoundStmt ancestor that is not the child of the SwitchStmt:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "15.1", "\"CaseStmt\" has a CompoundStmt ancestor that is not the child of the SwitchStmt: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "15.1", "\"CaseStmt\" has a CompoundStmt ancestor that is not the child of the SwitchStmt: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "15.1", "\"CaseStmt\" has a CompoundStmt ancestor that is not the child of the SwitchStmt: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "15.1", "\"CaseStmt\" has a CompoundStmt ancestor that is not the child of the SwitchStmt: "); +        }        }      }      else @@ -366,11 +381,14 @@ public:          return void();        } -      std::cout << "15.5:" << "\"SwitchStmt\" does not have a CaseStmt:"; -      std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +      if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        std::cout << "15.5:" << "\"SwitchStmt\" does not have a CaseStmt:"; +        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -      XMLDocOut.XMLAddNode(MR.Context, SL, "15.5", "\"SwitchStmt\" does not have a CaseStmt: "); -      JSONDocOUT.JSONAddElement(MR.Context, SL, "15.5", "\"SwitchStmt\" does not have a CaseStmt: "); +        XMLDocOut.XMLAddNode(MR.Context, SL, "15.5", "\"SwitchStmt\" does not have a CaseStmt: "); +        JSONDocOUT.JSONAddElement(MR.Context, SL, "15.5", "\"SwitchStmt\" does not have a CaseStmt: "); +      }      }      else      { @@ -403,11 +421,14 @@ public:            return void();          } -        std::cout << "16.1:" << "\"FunctionDecl\" is variadic:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "16.1:" << "\"FunctionDecl\" is variadic:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "16.1", "\"FunctionDecl\" is variadic: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "16.1", "\"FunctionDecl\" is variadic: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "16.1", "\"FunctionDecl\" is variadic: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "16.1", "\"FunctionDecl\" is variadic: "); +        }        }      }      else @@ -440,6 +461,16 @@ public:          return void();        } +      if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        /*intentionally left blank*/ +      } +      else +      { +        return void(); +      } + +        std::string FuncNameStr = FD->getNameInfo().getAsString();        if (CE->getDirectCallee()) @@ -498,6 +529,15 @@ public:            return void();          } +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          /*intentionally left blank*/ +        } +        else +        { +          return void(); +        } +          SourceLocation SLDcl = FDcl->getLocStart();          SLDcl = Devi::SourceLocationHasMacro(SLDcl, Rewrite, "start"); @@ -577,11 +617,14 @@ public:          }          else          { -          std::cout << "20.4:" << "Dynamic heap memory allocation used:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "20.4:" << "Dynamic heap memory allocation used:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "20.4", "Dynamic heap memory allocation used: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "20.4", "Dynamic heap memory allocation used: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "20.4", "Dynamic heap memory allocation used: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "20.4", "Dynamic heap memory allocation used: "); +          }          }        }        /*end of 20.4*/ @@ -595,11 +638,14 @@ public:          }          else          { -          std::cout << "20.7:" << "Use of lonjmp is illegal:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "20.7:" << "Use of lonjmp is illegal:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "20.7", "Use of longjmp is illegal: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "20.7", "Use of longjmp is illegal: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "20.7", "Use of longjmp is illegal: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "20.7", "Use of longjmp is illegal: "); +          }          }        }        /*end of 20.7*/ @@ -613,11 +659,14 @@ public:          }          else          { -          std::cout << "20.10:" << "Use of atof,atoi and atol is illegal:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "20.10:" << "Use of atof,atoi and atol is illegal:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "20.10", "Use of atof,atoi and atol is illegal: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "20.10", "Use of atof,atoi and atol is illegal: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "20.10", "Use of atof,atoi and atol is illegal: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "20.10", "Use of atof,atoi and atol is illegal: "); +          }          }        }        /*end of 20.10*/ @@ -631,11 +680,14 @@ public:          }          else          { -          std::cout << "20.11:" << "Use of abort,exit,getenv and system is illegal:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "20.11:" << "Use of abort,exit,getenv and system is illegal:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "20.11", "Use of abort,exit,getenv and system is illegal : "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "20.11", "Use of abort,exit,getenv and system is illegal : "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "20.11", "Use of abort,exit,getenv and system is illegal : "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "20.11", "Use of abort,exit,getenv and system is illegal : "); +          }          }        }        /*end of 20.11*/ @@ -648,11 +700,14 @@ public:          }          else          { -          std::cout << "16.6:" << "CallExpr number of arguments does not equal the number of parameters in the declaration:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "16.6:" << "CallExpr number of arguments does not equal the number of parameters in the declaration:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "16.6", "CallExpr number of arguments does not equal the number of parameters in the declaration: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "16.6", "CallExpr number of arguments does not equal the number of parameters in the declaration: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "16.6", "CallExpr number of arguments does not equal the number of parameters in the declaration: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "16.6", "CallExpr number of arguments does not equal the number of parameters in the declaration: "); +          }          }        }      } @@ -688,6 +743,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        SourceLocation SLE = RT->getLocEnd();        SLE = Devi::SourceLocationHasMacro(SLE, Rewrite, "end"); @@ -730,6 +790,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        CastKind CK = ICE->getCastKind();        if (CK == CK_FunctionToPointerDecay) @@ -808,11 +873,14 @@ public:        }        else        { -        std::cout << "18.4:" << "Union declared:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "18.4:" << "Union declared:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "18.4", "Union declared: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "18.4", "Union declared: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "18.4", "Union declared: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "18.4", "Union declared: "); +        }        }        std::string MatchedName = RD->getNameAsString(); @@ -905,11 +973,14 @@ public:          }          else          { -          std::cout << "18.1:" << "Incomplete struct declared:"; -          std::cout << StructInfoProto[x].StructSL << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, StructInfoProto[x].FSL.getManager().isInMainFile(StructInfoProto[x].SL), StructInfoProto[x].SL)) +          { +            std::cout << "18.1:" << "Incomplete struct declared:"; +            std::cout << StructInfoProto[x].StructSL << ":" << std::endl; -          XMLDocOut.XMLAddNode(StructInfoProto[x].FSL, StructInfoProto[x].SL, "18.1", "Incomplete struct declared: "); -          JSONDocOUT.JSONAddElement(StructInfoProto[x].FSL, StructInfoProto[x].SL, "18.1", "Incomplete struct declared: "); +            XMLDocOut.XMLAddNode(StructInfoProto[x].FSL, StructInfoProto[x].SL, "18.1", "Incomplete struct declared: "); +            JSONDocOUT.JSONAddElement(StructInfoProto[x].FSL, StructInfoProto[x].SL, "18.1", "Incomplete struct declared: "); +          }          }        }      } @@ -924,11 +995,14 @@ public:          }          else          { -          std::cout << "18.1:" << "Incomplete union declared:"; -          std::cout << UnionInfoProto[x].UnionSL << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, UnionInfoProto[x].FSL.getManager().isInMainFile(UnionInfoProto[x].SL), UnionInfoProto[x].SL)) +          { +            std::cout << "18.1:" << "Incomplete union declared:"; +            std::cout << UnionInfoProto[x].UnionSL << ":" << std::endl; -          XMLDocOut.XMLAddNode(UnionInfoProto[x].FSL, UnionInfoProto[x].SL, "18.1", "Incomplete union declared: "); -          JSONDocOUT.JSONAddElement(UnionInfoProto[x].FSL, UnionInfoProto[x].SL, "18.1", "Incomplete union declared: "); +            XMLDocOut.XMLAddNode(UnionInfoProto[x].FSL, UnionInfoProto[x].SL, "18.1", "Incomplete union declared: "); +            JSONDocOUT.JSONAddElement(UnionInfoProto[x].FSL, UnionInfoProto[x].SL, "18.1", "Incomplete union declared: "); +          }          }        }      } @@ -992,12 +1066,15 @@ public:          }          else          { -          /*this part is ueless since the clang parser wont let such a bitfield through.*/ -          std::cout << "6.4:" << "BitField has a type other than int or unsigned int:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            /*@DEVI-this part is ueless since the clang parser wont let such a bitfield through.*/ +            std::cout << "6.4:" << "BitField has a type other than int or unsigned int:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "6.4", "BitField has a type other than int or unsigned int: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "6.4", "BitField has a type other than int or unsigned int: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "6.4", "BitField has a type other than int or unsigned int: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "6.4", "BitField has a type other than int or unsigned int: "); +          }          }        } @@ -1014,11 +1091,14 @@ public:            }            else            { -            std::cout << "6.5:" << "BitField of type signed integer has a length of less than 2 in bits:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "6.5:" << "BitField of type signed integer has a length of less than 2 in bits:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "6.5", "BitField of type signed integer has a length of less than 2 in bits : "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "6.5", "BitField of type signed integer has a length of less than 2 in bits : "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "6.5", "BitField of type signed integer has a length of less than 2 in bits : "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "6.5", "BitField of type signed integer has a length of less than 2 in bits : "); +            }            }          }        } @@ -1083,11 +1163,14 @@ public:          }          else          { -          std::cout << "8.5:" << "Function definition inside a header file:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "8.5:" << "Function definition inside a header file:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "8.5", "Function definition inside a header file : "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "8.5", "Function definition inside a header file : "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "8.5", "Function definition inside a header file : "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "8.5", "Function definition inside a header file : "); +          }          }        }        /*end of 8.5*/ @@ -1109,14 +1192,17 @@ public:              }              else              { -              std::cout << "19.5:" << "Macro defined inside a block:"; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "19.5:" << "Macro defined inside a block:";  #if 0 -              std::cout << MacroDefSourceLocation[x].printToString(*MR.SourceManager) << " " << MacroNameString[x] << "\n" << std::endl; +                std::cout << MacroDefSourceLocation[x].printToString(*MR.SourceManager) << " " << MacroNameString[x] << "\n" << std::endl;  #endif -              std::cout << MacroDefSourceLocation[x].printToString(*MR.SourceManager) << ":" << std::endl; +                std::cout << MacroDefSourceLocation[x].printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, MacroDefSourceLocation[x], "19.5", "Macro defined inside a block : "); -              JSONDocOUT.JSONAddElement(MR.Context, MacroDefSourceLocation[x], "19.5", "Macro defined inside a block : "); +                XMLDocOut.XMLAddNode(MR.Context, MacroDefSourceLocation[x], "19.5", "Macro defined inside a block : "); +                JSONDocOUT.JSONAddElement(MR.Context, MacroDefSourceLocation[x], "19.5", "Macro defined inside a block : "); +              }              }            }          } @@ -1133,11 +1219,14 @@ public:              }              else              { -              std::cout << "19.5:" << "Macro undefined inside a block:"; -              std::cout << MacroUndefSourceLocation[x].printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "19.5:" << "Macro undefined inside a block:"; +                std::cout << MacroUndefSourceLocation[x].printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, MacroUndefSourceLocation[x], "19.5", "Macro undefined inside a block : "); -              JSONDocOUT.JSONAddElement(MR.Context, MacroUndefSourceLocation[x], "19.5", "Macro undefined inside a block : "); +                XMLDocOut.XMLAddNode(MR.Context, MacroUndefSourceLocation[x], "19.5", "Macro undefined inside a block : "); +                JSONDocOUT.JSONAddElement(MR.Context, MacroUndefSourceLocation[x], "19.5", "Macro undefined inside a block : "); +              }              }            }          } @@ -1194,11 +1283,14 @@ public:          }          else          { -          std::cout << "8.1:" << "Function does not have a FunctionDecl that is not a definition:"; -          std::cout << FuncInfoProto[x].StrcSL << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, FuncInfoProto[x].FuncFSL.getManager().isInMainFile(FuncInfoProto[x].FuncSL), FuncInfoProto[x].FuncSL)) +          { +            std::cout << "8.1:" << "Function does not have a FunctionDecl that is not a definition:"; +            std::cout << FuncInfoProto[x].StrcSL << ":" << std::endl; -          XMLDocOut.XMLAddNode(FuncInfoProto[x].FuncFSL, FuncInfoProto[x].FuncSL, "8.1", "Function does not have a FunctionDecl that is not a definition : "); -          JSONDocOUT.JSONAddElement(FuncInfoProto[x].FuncFSL, FuncInfoProto[x].FuncSL, "8.1", "Function does not have a FunctionDecl that is not a definition : "); +            XMLDocOut.XMLAddNode(FuncInfoProto[x].FuncFSL, FuncInfoProto[x].FuncSL, "8.1", "Function does not have a FunctionDecl that is not a definition : "); +            JSONDocOUT.JSONAddElement(FuncInfoProto[x].FuncFSL, FuncInfoProto[x].FuncSL, "8.1", "Function does not have a FunctionDecl that is not a definition : "); +          }          }        }      } @@ -1301,11 +1393,14 @@ public:          }          else          { -          std::cout << "8.5:" << "Variable definition inside a header file:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "8.5:" << "Variable definition inside a header file:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "8.5", "Variable definition inside a header file : "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "8.5", "Variable definition inside a header file : "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "8.5", "Variable definition inside a header file : "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "8.5", "Variable definition inside a header file : "); +          }          }        }        /*end of 8.5*/ @@ -1323,12 +1418,15 @@ public:              }              else              { -              /*end of 8.12*/ -              std::cout << "8.12:" << "External array type is incomplete and has no initialization:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                /*end of 8.12*/ +                std::cout << "8.12:" << "External array type is incomplete and has no initialization:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "8.12", "External array type is incomplete and has no initialization : "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "8.12", "External array type is incomplete and has no initialization : "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "8.12", "External array type is incomplete and has no initialization : "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "8.12", "External array type is incomplete and has no initialization : "); +              }              }            }          } @@ -1356,11 +1454,14 @@ public:              }              else              { -              std::cout << "9.2:" << "Curly braces not used:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "9.2:" << "Curly braces not used:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "9.2", "Curly braces not used : "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "9.2", "Curly braces not used : "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "9.2", "Curly braces not used : "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "9.2", "Curly braces not used : "); +              }              }            }          } @@ -1378,11 +1479,14 @@ public:            }            else            { -            std::cout << "9.1:" << "staic local variable does not have initialization:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "9.1:" << "staic local variable does not have initialization:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "9.1", "staic local variable does not have initialization : "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "9.1", "staic local variable does not have initialization : "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "9.1", "staic local variable does not have initialization : "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "9.1", "staic local variable does not have initialization : "); +            }            }          }        } @@ -1414,6 +1518,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        unsigned int NumInits [[maybe_unused]] = ILE->getNumInits();  #if 0 @@ -1486,12 +1595,15 @@ public:              }              else              { -              /*in breach of misrac*/ -              std::cout << "9.3:" << "first enumeration has integerliteral initialization but not all enumerations do:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                /*in breach of misrac*/ +                std::cout << "9.3:" << "first enumeration has integerliteral initialization but not all enumerations do:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "9.3", "first enumeration has integerliteral initialization but not all enumerations do : "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "9.3", "first enumeration has integerliteral initialization but not all enumerations do : "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "9.3", "first enumeration has integerliteral initialization but not all enumerations do : "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "9.3", "first enumeration has integerliteral initialization but not all enumerations do : "); +              }              }            }            else @@ -1509,12 +1621,15 @@ public:              }              else              { -              /*in breach of misrac*/ -              std::cout << "9.3:" << "first enumeration does not have integerliteral initialization but at least one other enumeration does:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                /*in breach of misrac*/ +                std::cout << "9.3:" << "first enumeration does not have integerliteral initialization but at least one other enumeration does:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "9.3", "first enumeration does not have integerliteral initialization but at least one other enumeration does : "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "9.3", "first enumeration does not have integerliteral initialization but at least one other enumeration does : "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "9.3", "first enumeration does not have integerliteral initialization but at least one other enumeration does : "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "9.3", "first enumeration does not have integerliteral initialization but at least one other enumeration does : "); +              }              }            }            else @@ -1562,6 +1677,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        ASTContext *const ASTC = MR.Context;        if (EXP->HasSideEffects(*ASTC, true)) @@ -1598,6 +1718,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        ASTContext *const ASTC = MR.Context;        if (EXP->HasSideEffects(*ASTC, true)) @@ -1663,11 +1788,14 @@ public:          }          else          { -          std::cout << "12.5:" << "RHS and/or LHS operands are not primary expressions:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "12.5:" << "RHS and/or LHS operands are not primary expressions:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "12.5", "RHS and/or LHS operands are not primary expressions : "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "12.5", "RHS and/or LHS operands are not primary expressions : "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "12.5", "RHS and/or LHS operands are not primary expressions : "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "12.5", "RHS and/or LHS operands are not primary expressions : "); +          }          }        }      } @@ -1698,6 +1826,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        if (!EXP->isKnownToHaveBooleanValue())        {          std::cout << "12.6:" << "RHS and/or LHS operands are not effectively-boolean values:"; @@ -1732,6 +1865,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        QualType QT = EXP->getType();        const clang::Type* TP = QT.getTypePtr(); @@ -1771,6 +1909,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        QualType RQT = RHS->getType();        QualType LQT = LHS->getType(); @@ -1823,6 +1966,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        QualType QT = EXP->getType();        const clang::Type* TP = QT.getTypePtr(); @@ -1861,6 +2009,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        std::cout << "12.10:" << "Comma used:";        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; @@ -1892,6 +2045,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        std::cout << "12.13:" << "Unary ++ or -- have been used in an expr with other operators:";        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; @@ -1923,6 +2081,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        if (EXP->isKnownToHaveBooleanValue())        {          std::cout << "13.1:" << "assignment operator used in an expr that is known to return boolean:"; @@ -1957,6 +2120,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        if (!EXP->isKnownToHaveBooleanValue())        {          std::cout << "13.2:" << "Implicit test of an expr against zero which is not known to return a boolean result:"; @@ -2005,11 +2173,14 @@ public:            }            else            { -            std::cout << "13.3:" << "Float type expression checked for equality/inequality:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "13.3:" << "Float type expression checked for equality/inequality:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "13.3", "Float type expression checked for equality/inequality: "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "13.3", "Float type expression checked for equality/inequality: "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "13.3", "Float type expression checked for equality/inequality: "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "13.3", "Float type expression checked for equality/inequality: "); +            }            }          }        } @@ -2058,12 +2229,15 @@ public:            }            else            { -            std::cout << "13.4:" << "Float type used in the controlling expression of a forstmt:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            AlreadyHaveAHit = true; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "13.4:" << "Float type used in the controlling expression of a forstmt:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              AlreadyHaveAHit = true; -            XMLDocOut.XMLAddNode(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); +            }            }          }        } @@ -2082,12 +2256,15 @@ public:            }            else            { -            std::cout << "13.4:" << "Float type used in the controlling expression of a forstmt:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            AlreadyHaveAHit = true; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "13.4:" << "Float type used in the controlling expression of a forstmt:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              AlreadyHaveAHit = true; -            XMLDocOut.XMLAddNode(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "13.4", "Float type used in the controlling expression of a forstmt: "); +            }            }          }        } @@ -2169,11 +2346,14 @@ public:              }              else              { -              std::cout << "13.6:" << "ForStmt controlling variable modified in the body of the loop:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "13.6:" << "ForStmt controlling variable modified in the body of the loop:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "13.6", "ForStmt controlling variable modified in the body of the loop: "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "13.6", "ForStmt controlling variable modified in the body of the loop: "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "13.6", "ForStmt controlling variable modified in the body of the loop: "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "13.6", "ForStmt controlling variable modified in the body of the loop: "); +              }              }            }          } @@ -2207,6 +2387,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        std::cout << "14.4:" << "GotoStmt used:";        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; @@ -2238,6 +2423,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        std::cout << "14.5:" << "ContinueStmt used:";        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; @@ -2302,12 +2492,15 @@ public:        }        else        { -        std::cout << "14.6:" << "More than one BreakStmt used in the loop counter:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        AlreadyTagged = true; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "14.6:" << "More than one BreakStmt used in the loop counter:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          AlreadyTagged = true; -        XMLDocOut.XMLAddNode(MR.Context, SL, "14.6", "More than one BreakStmt used in the loop counter: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "14.6", "More than one BreakStmt used in the loop counter: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "14.6", "More than one BreakStmt used in the loop counter: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "14.6", "More than one BreakStmt used in the loop counter: "); +        }        }      } @@ -2359,12 +2552,15 @@ public:          }          else          { -          std::cout << "14.7:" << "More than one ReturnStmt used in the body of FunctionDecl:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          AlreadyTagged = true; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "14.7:" << "More than one ReturnStmt used in the body of FunctionDecl:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            AlreadyTagged = true; -          XMLDocOut.XMLAddNode(MR.Context, SL, "14.7", "More than one ReturnStmt used in the body of FunctionDecl: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "14.7", "More than one ReturnStmt used in the body of FunctionDecl: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "14.7", "More than one ReturnStmt used in the body of FunctionDecl: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "14.7", "More than one ReturnStmt used in the body of FunctionDecl: "); +          }          }        } @@ -2402,11 +2598,14 @@ public:        }        else        { -        std::cout << "14.8:" << "ForStmt does not have a child CompoundStmt:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "14.8:" << "ForStmt does not have a child CompoundStmt:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "ForStmt does not have a child CompoundStmt: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "ForStmt does not have a child CompoundStmt: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "ForStmt does not have a child CompoundStmt: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "ForStmt does not have a child CompoundStmt: "); +        }        }      } @@ -2423,11 +2622,14 @@ public:        }        else        { -        std::cout << "14.8:" << "WhileStmt does not have a child CompoundStmt:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "14.8:" << "WhileStmt does not have a child CompoundStmt:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "WhileStmt does not have a child CompoundStmt: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "WhileStmt does not have a child CompoundStmt: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "WhileStmt does not have a child CompoundStmt: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "WhileStmt does not have a child CompoundStmt: "); +        }        }      } @@ -2444,11 +2646,14 @@ public:        }        else        { -        std::cout << "14.8:" << "DoStmt does not have a child CompoundStmt:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "14.8:" << "DoStmt does not have a child CompoundStmt:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "DoStmt does not have a child CompoundStmt: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "DoStmt does not have a child CompoundStmt: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "DoStmt does not have a child CompoundStmt: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "DoStmt does not have a child CompoundStmt: "); +        }        }      } @@ -2465,11 +2670,14 @@ public:        }        else        { -        std::cout << "14.8:" << "SwitchStmt does not have a child CompoundStmt:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "14.8:" << "SwitchStmt does not have a child CompoundStmt:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "SwitchStmt does not have a child CompoundStmt: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "SwitchStmt does not have a child CompoundStmt: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "14.8", "SwitchStmt does not have a child CompoundStmt: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "14.8", "SwitchStmt does not have a child CompoundStmt: "); +        }        }      }    } @@ -2497,6 +2705,11 @@ public:        return void();      } +    if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +    { +      return void(); +    } +      if (EXP->isKnownToHaveBooleanValue())      {        std::cout << "15.4:" << "Switch expression is effectively boolean:"; @@ -2571,11 +2784,14 @@ public:            }            else            { -            std::cout << "11.1:" << "ImplicitCastExpr - FunctionPointerType converted to or from a type other than IntegralType:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "11.1:" << "ImplicitCastExpr - FunctionPointerType converted to or from a type other than IntegralType:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "11.1", "ImplicitCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "11.1", "ImplicitCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "11.1", "ImplicitCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "11.1", "ImplicitCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); +            }            }          }        } @@ -2588,11 +2804,14 @@ public:          }          else          { -          std::cout << "10.1/2:" << "ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "10.1/2:" << "ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "10.1/2", "ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "10.1/2", "ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "10.1/2", "ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "10.1/2", "ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: "); +          }          }        } @@ -2604,11 +2823,14 @@ public:          }          else          { -          std::cout << "11.3:" << "ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "11.3:" << "ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "11.3", "ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "11.3", "ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "11.3", "ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "11.3", "ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); +          }          }        } @@ -2620,11 +2842,14 @@ public:          }          else          { -          std::cout << "11.x:" << "ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "11.x:" << "ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "11.x", "ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "11.x", "ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "11.x", "ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "11.x", "ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); +          }          }        }      } @@ -2660,11 +2885,14 @@ public:            }            else            { -            std::cout << "13.7:" << "EffectivelyBooleanExpr's result is known at compile-time:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "13.7:" << "EffectivelyBooleanExpr's result is known at compile-time:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "13.7", "EffectivelyBooleanExpr's result is known at compile-time: "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "13.7", "EffectivelyBooleanExpr's result is known at compile-time: "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "13.7", "EffectivelyBooleanExpr's result is known at compile-time: "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "13.7", "EffectivelyBooleanExpr's result is known at compile-time: "); +            }            }          }        } @@ -2790,11 +3018,14 @@ public:          }          else          { -          std::cout << "8.11:" << "Function does not have any external calls but is not declared as static:"; -          std::cout << FuncScopeProto[x].DefinitionSL << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, FuncScopeProto[x].FuncScopeFSL.getManager().isInMainFile(FuncScopeProto[x].FuncScopeSL), FuncScopeProto[x].FuncScopeSL)) +          { +            std::cout << "8.11:" << "Function does not have any external calls but is not declared as static:"; +            std::cout << FuncScopeProto[x].DefinitionSL << ":" << std::endl; -          XMLDocOut.XMLAddNode(FuncScopeProto[x].FuncScopeFSL, FuncScopeProto[x].FuncScopeSL, "8.11", "Function does not have any external calls but is not declared as static : "); -          JSONDocOUT.JSONAddElement(FuncScopeProto[x].FuncScopeFSL, FuncScopeProto[x].FuncScopeSL, "8.11", "Function does not have any external calls but is not declared as static : "); +            XMLDocOut.XMLAddNode(FuncScopeProto[x].FuncScopeFSL, FuncScopeProto[x].FuncScopeSL, "8.11", "Function does not have any external calls but is not declared as static : "); +            JSONDocOUT.JSONAddElement(FuncScopeProto[x].FuncScopeFSL, FuncScopeProto[x].FuncScopeSL, "8.11", "Function does not have any external calls but is not declared as static : "); +          }          }        }      } @@ -2838,6 +3069,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        std::cout << "16.5:" << "Function does not return anything but is missing the void keyword for the return type:";        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; @@ -2871,6 +3107,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        SourceRange SR;        SR.setBegin(SL);        SR.setEnd(SLE); @@ -2920,6 +3161,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        QualType QT = DRE->getType();        const clang::Type* TP = QT.getTypePtr(); @@ -2961,6 +3207,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        QualType QTR = DRER->getType();        QualType QTL = DREL->getType(); @@ -3002,11 +3253,14 @@ public:        }        else        { -        std::cout << "17.4:" << "The only allowed form of pointer arithmetic is array indexing:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "17.4:" << "The only allowed form of pointer arithmetic is array indexing:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); +        }        }      } @@ -3023,11 +3277,14 @@ public:        }        else        { -        std::cout << "17.4:" << "The only allowed form of pointer arithmetic is array indexing:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "17.4:" << "The only allowed form of pointer arithmetic is array indexing:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "17.4", "The only allowed form of pointer arithmetic is array indexing : "); +        }        }      }    } @@ -3123,11 +3380,14 @@ public:          }          else          { -          std::cout << "17.5:" << "Pointer has more than 2 levels of indirection:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "17.5:" << "Pointer has more than 2 levels of indirection:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "17.5", "Pointer has more than 2 levels on indirection : "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "17.5", "Pointer has more than 2 levels on indirection : "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "17.5", "Pointer has more than 2 levels on indirection : "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "17.5", "Pointer has more than 2 levels on indirection : "); +          }          }          break; @@ -3192,7 +3452,7 @@ public:        /*@DEVI-the logic here is that we know we have matched a chartype. if its not either a singedinteger or        unsingedinteger, then it is a simple char. otherwise it is signed or unsigned char.*/ -#if 0 +#if 1        if (TP->isSignedIntegerType() || TP->isUnsignedIntegerType())        {          //std::cout << RHSString << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << SL.printToString(*MR.SourceManager) << std::endl; @@ -3205,11 +3465,14 @@ public:            }            else            { -            std::cout << "6.2:" << "Sgined or unsigned char type holds characterLiterals:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "6.2:" << "Sgined or unsigned char type holds characterLiterals:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "6.2", "Sgined or unsigned char type holds characterLiterals : "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "6.2", "Sgined or unsigned char type holds characterLiterals : "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "6.2", "Sgined or unsigned char type holds characterLiterals : "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "6.2", "Sgined or unsigned char type holds characterLiterals : "); +            }            }          }        } @@ -3230,11 +3493,14 @@ public:            }            else            { -            std::cout << "6.1:" << "Simple char type holds numeric values:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "6.1:" << "Simple char type holds numeric values:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "6.1", "Simple char type holds numeric values : "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "6.1", "Simple char type holds numeric values : "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "6.1", "Simple char type holds numeric values : "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "6.1", "Simple char type holds numeric values : "); +            }            }          }        } @@ -3265,6 +3531,11 @@ public:          return void();        } +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +      { +        return void(); +      } +        std::cout << "18.1:" << "ArrayType incomplete at the end of the translation unit:";        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; @@ -3334,11 +3605,14 @@ public:            }            else            { -            std::cout << "11.1:" << "CStyleCastExpr - FunctionPointerType converted to or from a type other than IntegralType:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "11.1:" << "CStyleCastExpr - FunctionPointerType converted to or from a type other than IntegralType:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "11.1", "CStyleCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "11.1", "CStyleCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "11.1", "CStyleCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "11.1", "CStyleCastExpr - FunctionPointerType converted to or from a type other than IntegralType: "); +            }            }          }        } @@ -3351,11 +3625,14 @@ public:          }          else          { -          std::cout << "11.3:" << "CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "11.3:" << "CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "11.3", "CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "11.3", "CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "11.3", "CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "11.3", "CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against: "); +          }          }        } @@ -3367,11 +3644,14 @@ public:          }          else          { -          std::cout << "11.x:" << "CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type:"; -          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +          { +            std::cout << "11.x:" << "CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type:"; +            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -          XMLDocOut.XMLAddNode(MR.Context, SL, "11.x", "CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); -          JSONDocOUT.JSONAddElement(MR.Context, SL, "11.x", "CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); +            XMLDocOut.XMLAddNode(MR.Context, SL, "11.x", "CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); +            JSONDocOUT.JSONAddElement(MR.Context, SL, "11.x", "CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: "); +          }          }        }      } @@ -3458,11 +3738,14 @@ public:              }              else              { -              std::cout << "10.1/2:" << "ImplicitCastExpr changes the signedness of the type:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "10.1/2:" << "ImplicitCastExpr changes the signedness of the type:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "10.1/2", "ImplicitCastExpr changes the signedness of the type: "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "10.1/2", "ImplicitCastExpr changes the signedness of the type: "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "10.1/2", "ImplicitCastExpr changes the signedness of the type: "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "10.1/2", "ImplicitCastExpr changes the signedness of the type: "); +              }              }            }          } @@ -3475,11 +3758,14 @@ public:            }            else            { -            std::cout << "10.1/2:" << "ImplicitCastExpr is narrowing:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "10.1/2:" << "ImplicitCastExpr is narrowing:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "10.1/2", "ImplicitCastExpr is narrowing: "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "10.1/2", "ImplicitCastExpr is narrowing: "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "10.1/2", "ImplicitCastExpr is narrowing: "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "10.1/2", "ImplicitCastExpr is narrowing: "); +            }            }          } @@ -3493,11 +3779,14 @@ public:              }              else              { -              std::cout << "10.3:" << "ImplicitCastExpr is widening for complex integer type:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "10.3:" << "ImplicitCastExpr is widening for complex integer type:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "10.3", "ImplicitCastExpr is widening for complex integer type: "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "10.3", "ImplicitCastExpr is widening for complex integer type: "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "10.3", "ImplicitCastExpr is widening for complex integer type: "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "10.3", "ImplicitCastExpr is widening for complex integer type: "); +              }              }            } @@ -3523,11 +3812,14 @@ public:              }              else              { -              std::cout << "10.3:" << "ImplicitCastExpr changes the signedness of the complex integer type:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "10.3:" << "ImplicitCastExpr changes the signedness of the complex integer type:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "10.3", "ImplicitCastExpr changes the signedness of the complex integer type: "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "10.3", "ImplicitCastExpr changes the signedness of the complex integer type type: "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "10.3", "ImplicitCastExpr changes the signedness of the complex integer type: "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "10.3", "ImplicitCastExpr changes the signedness of the complex integer type type: "); +              }              }            }          } @@ -3543,11 +3835,14 @@ public:              }              else              { -              std::cout << "10.4:" << "ImplicitCastExpr is widening for complex float type:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "10.4:" << "ImplicitCastExpr is widening for complex float type:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "10.4", "ImplicitCastExpr is widening for complex float type: "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "10.4", "ImplicitCastExpr is widening for complex float type: "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "10.4", "ImplicitCastExpr is widening for complex float type: "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "10.4", "ImplicitCastExpr is widening for complex float type: "); +              }              }            }          } @@ -3627,11 +3922,14 @@ public:        }        else        { -        std::cout << "5.2:" << "Object or function has hidden visibility:"; -        std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +        { +          std::cout << "5.2:" << "Object or function has hidden visibility:"; +          std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -        XMLDocOut.XMLAddNode(MR.Context, SL, "5.2", "Object or function has hidden visibility: "); -        JSONDocOUT.JSONAddElement(MR.Context, SL, "5.2", "Object or function has hidden visibility: "); +          XMLDocOut.XMLAddNode(MR.Context, SL, "5.2", "Object or function has hidden visibility: "); +          JSONDocOUT.JSONAddElement(MR.Context, SL, "5.2", "Object or function has hidden visibility: "); +        }        }      } @@ -3656,11 +3954,14 @@ public:              }              else              { -              std::cout << "5.1:" << "Identifier relies on the signifacance of more than 31 charcaters:"; -              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +              { +                std::cout << "5.1:" << "Identifier relies on the signifacance of more than 31 charcaters:"; +                std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, SL, "5.1", "Identifier relies on the significance of more than 31 charcaters: "); -              JSONDocOUT.JSONAddElement(MR.Context, SL, "5.1", "Identifier relies on the significance of more than 31 charcaters: "); +                XMLDocOut.XMLAddNode(MR.Context, SL, "5.1", "Identifier relies on the significance of more than 31 charcaters: "); +                JSONDocOUT.JSONAddElement(MR.Context, SL, "5.1", "Identifier relies on the significance of more than 31 charcaters: "); +              }              }            }          } @@ -3703,11 +4004,14 @@ public:            }            else            { -            std::cout << "5.4:" << "tag identifier is not unique:"; -            std::cout << iter.SLString << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, iter.FSL.getManager().isInMainFile(iter.SL), iter.SL)) +            { +              std::cout << "5.4:" << "tag identifier is not unique:"; +              std::cout << iter.SLString << ":" << std::endl; -            XMLDocOut.XMLAddNode(iter.FSL, iter.SL, "5.4", "tag identifier is not unique: "); -            JSONDocOUT.JSONAddElement(iter.FSL, iter.SL, "5.4", "tag identifier is not unique: "); +              XMLDocOut.XMLAddNode(iter.FSL, iter.SL, "5.4", "tag identifier is not unique: "); +              JSONDocOUT.JSONAddElement(iter.FSL, iter.SL, "5.4", "tag identifier is not unique: "); +            }            }          } @@ -3732,11 +4036,14 @@ public:            }            else            { -            std::cout << "5.3:" << "typedef identifier is not unique:"; -            std::cout << iter.SLString << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, iter.FSL.getManager().isInMainFile(iter.SL), iter.SL)) +            { +              std::cout << "5.3:" << "typedef identifier is not unique:"; +              std::cout << iter.SLString << ":" << std::endl; -            XMLDocOut.XMLAddNode(iter.FSL, iter.SL, "5.3", "typedef identifier is not unique: "); -            JSONDocOUT.JSONAddElement(iter.FSL, iter.SL, "5.3", "typedef identifier is not unique: "); +              XMLDocOut.XMLAddNode(iter.FSL, iter.SL, "5.3", "typedef identifier is not unique: "); +              JSONDocOUT.JSONAddElement(iter.FSL, iter.SL, "5.3", "typedef identifier is not unique: "); +            }            }          } @@ -3834,13 +4141,16 @@ public:          }          else          { -          std::cout << "8.7:" << "Object (" + iter.ObjNameStr + ") is only being used in one block (" + iter.FirstDaddyName + ") but is not defined inside that block:"; -          std::cout << iter.ObjSLStr << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, iter.ObjFSL.getManager().isInMainFile(iter.ObjSL), iter.ObjSL)) +          { +            std::cout << "8.7:" << "Object (" + iter.ObjNameStr + ") is only being used in one block (" + iter.FirstDaddyName + ") but is not defined inside that block:"; +            std::cout << iter.ObjSLStr << ":" << std::endl; -          XMLDocOut.XMLAddNode(iter.ObjFSL, iter.ObjSL, "8.7", \ -                               "Object (" + iter.ObjNameStr + ") is only being used in one block (" + iter.FirstDaddyName + ") but is not defined inside that block: "); -          JSONDocOUT.JSONAddElement(iter.ObjFSL, iter.ObjSL, "8.7", \ -                                    "Object (" + iter.ObjNameStr + ") is only being used in one block (" + iter.FirstDaddyName + ") but is not defined inside that block: "); +            XMLDocOut.XMLAddNode(iter.ObjFSL, iter.ObjSL, "8.7", \ +                                 "Object (" + iter.ObjNameStr + ") is only being used in one block (" + iter.FirstDaddyName + ") but is not defined inside that block: "); +            JSONDocOUT.JSONAddElement(iter.ObjFSL, iter.ObjSL, "8.7", \ +                                      "Object (" + iter.ObjNameStr + ") is only being used in one block (" + iter.FirstDaddyName + ") but is not defined inside that block: "); +          }          }        }      } @@ -3933,11 +4243,14 @@ public:          }          else          { -          std::cout << "8.8:" << "External function or object (" + iter.XObjNameStr + ") is defined in more than one file:"; -          std::cout << iter.XObjSLStr << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, iter.XObjFSL.getManager().isInMainFile(iter.XObjSL), iter.XObjSL)) +          { +            std::cout << "8.8:" << "External function or object (" + iter.XObjNameStr + ") is defined in more than one file:"; +            std::cout << iter.XObjSLStr << ":" << std::endl; -          XMLDocOut.XMLAddNode(iter.XObjFSL, iter.XObjSL, "8.8", "External function or object (" + iter.XObjNameStr + ") is defined in more than one file: "); -          JSONDocOUT.JSONAddElement(iter.XObjFSL, iter.XObjSL, "8.8", "External function or object (" + iter.XObjNameStr + ") is defined in more than one file: "); +            XMLDocOut.XMLAddNode(iter.XObjFSL, iter.XObjSL, "8.8", "External function or object (" + iter.XObjNameStr + ") is defined in more than one file: "); +            JSONDocOUT.JSONAddElement(iter.XObjFSL, iter.XObjSL, "8.8", "External function or object (" + iter.XObjNameStr + ") is defined in more than one file: "); +          }          }  #endif        } @@ -4034,11 +4347,14 @@ public:              }              else              { -              std::cout << "2.3:" << "character sequence \"/*\" used inside the comment:"; -              std::cout << RCSL.printToString(*MR.SourceManager) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, RCSL)) +              { +                std::cout << "2.3:" << "character sequence \"/*\" used inside the comment:"; +                std::cout << RCSL.printToString(*MR.SourceManager) << ":" << std::endl; -              XMLDocOut.XMLAddNode(MR.Context, RCSL, "2.3", "character sequence \"/*\" used inside the comment : "); -              JSONDocOUT.JSONAddElement(MR.Context, RCSL, "2.3", "character sequence \"/*\" used inside the comment : "); +                XMLDocOut.XMLAddNode(MR.Context, RCSL, "2.3", "character sequence \"/*\" used inside the comment : "); +                JSONDocOUT.JSONAddElement(MR.Context, RCSL, "2.3", "character sequence \"/*\" used inside the comment : "); +              }              }            }          } @@ -4091,11 +4407,14 @@ public:          {            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL))            { -            std::cout << "16.7:" << "pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const:"; -            std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL)) +            { +              std::cout << "16.7:" << "pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const:"; +              std::cout << SL.printToString(*MR.SourceManager) << ":" << std::endl; -            XMLDocOut.XMLAddNode(MR.Context, SL, "16.7", "pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : "); -            JSONDocOUT.JSONAddElement(MR.Context, SL, "16.7", "pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : "); +              XMLDocOut.XMLAddNode(MR.Context, SL, "16.7", "pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : "); +              JSONDocOUT.JSONAddElement(MR.Context, SL, "16.7", "pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : "); +            }            }          }        } @@ -4159,11 +4478,14 @@ public:            }            else            { -            std::cout << "19.2:" << "illegal characters in inclusion directive:"; -            std::cout << HashLoc.printToString(SM) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, HashLoc)) +            { +              std::cout << "19.2:" << "illegal characters in inclusion directive:"; +              std::cout << HashLoc.printToString(SM) << ":" << std::endl; -            XMLDocOut.XMLAddNode(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); -            JSONDocOUT.JSONAddElement(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); +              XMLDocOut.XMLAddNode(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); +              JSONDocOUT.JSONAddElement(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); +            }            }          } @@ -4175,11 +4497,14 @@ public:            }            else            { -            std::cout << "20.5:" << "errno shall not be used:"; -            std::cout << HashLoc.printToString(SM) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, HashLoc)) +            { +              std::cout << "20.5:" << "errno shall not be used:"; +              std::cout << HashLoc.printToString(SM) << ":" << std::endl; -            XMLDocOut.XMLAddNode(SM, HashLoc, "20.5", "errno shall not be used : "); -            JSONDocOUT.JSONAddElement(SM, HashLoc, "20.5", "errno shall not be used : "); +              XMLDocOut.XMLAddNode(SM, HashLoc, "20.5", "errno shall not be used : "); +              JSONDocOUT.JSONAddElement(SM, HashLoc, "20.5", "errno shall not be used : "); +            }            }          } @@ -4191,11 +4516,14 @@ public:            }            else            { -            std::cout << "20.12:" << "stdlib time.h is included in the project. use is forbidden:"; -            std::cout << HashLoc.printToString(SM) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, HashLoc)) +            { +              std::cout << "20.12:" << "stdlib time.h is included in the project. use is forbidden:"; +              std::cout << HashLoc.printToString(SM) << ":" << std::endl; -            XMLDocOut.XMLAddNode(SM, HashLoc, "20.12", "stdlib time.h is included in the project. use is forbidden : "); -            JSONDocOUT.JSONAddElement(SM, HashLoc, "20.12", "stdlib time.h is included in the project. use is forbidden : "); +              XMLDocOut.XMLAddNode(SM, HashLoc, "20.12", "stdlib time.h is included in the project. use is forbidden : "); +              JSONDocOUT.JSONAddElement(SM, HashLoc, "20.12", "stdlib time.h is included in the project. use is forbidden : "); +            }            }          } @@ -4207,11 +4535,14 @@ public:            }            else            { -            std::cout << "20.9:" << "stdlib stdio.h is included in the project. use is forbidden:"; -            std::cout << HashLoc.printToString(SM) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, HashLoc)) +            { +              std::cout << "20.9:" << "stdlib stdio.h is included in the project. use is forbidden:"; +              std::cout << HashLoc.printToString(SM) << ":" << std::endl; -            XMLDocOut.XMLAddNode(SM, HashLoc, "20.9", "stdlib stdio.h is included in the project. use is forbidden : "); -            JSONDocOUT.JSONAddElement(SM, HashLoc, "20.9", "stdlib stdio.h is included in the project. use is forbidden : "); +              XMLDocOut.XMLAddNode(SM, HashLoc, "20.9", "stdlib stdio.h is included in the project. use is forbidden : "); +              JSONDocOUT.JSONAddElement(SM, HashLoc, "20.9", "stdlib stdio.h is included in the project. use is forbidden : "); +            }            }          } @@ -4223,11 +4554,14 @@ public:            }            else            { -            std::cout << "20.8:" << "stdlib signal.h is included in the project. use is forbidden:"; -            std::cout << HashLoc.printToString(SM) << ":" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, HashLoc)) +            { +              std::cout << "20.8:" << "stdlib signal.h is included in the project. use is forbidden:"; +              std::cout << HashLoc.printToString(SM) << ":" << std::endl; -            XMLDocOut.XMLAddNode(SM, HashLoc, "20.8", "stdlib signal.h is included in the project. use is forbidden : "); -            JSONDocOUT.JSONAddElement(SM, HashLoc, "20.8", "stdlib signal.h is included in the project. use is forbidden : "); +              XMLDocOut.XMLAddNode(SM, HashLoc, "20.8", "stdlib signal.h is included in the project. use is forbidden : "); +              JSONDocOUT.JSONAddElement(SM, HashLoc, "20.8", "stdlib signal.h is included in the project. use is forbidden : "); +            }            }          }        } @@ -4245,11 +4579,14 @@ public:            }            else            { -            std::cout << "19.2:" << "illegal characters in inclusion directive:"; -            std::cout << HashLoc.printToString(SM) << "\n" << std::endl; +            if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, HashLoc)) +            { +              std::cout << "19.2:" << "illegal characters in inclusion directive:"; +              std::cout << HashLoc.printToString(SM) << "\n" << std::endl; -            XMLDocOut.XMLAddNode(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); -            JSONDocOUT.JSONAddElement(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); +              XMLDocOut.XMLAddNode(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); +              JSONDocOUT.JSONAddElement(SM, HashLoc, "19.2", "illegal characters in inclusion directive : "); +            }            }          } @@ -4290,11 +4627,14 @@ public:          }          else          { -          std::cout << "19.3:" << "Include directive contains file address, not just name:"; -          std::cout << HashLoc.printToString(SM) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, HashLoc)) +          { +            std::cout << "19.3:" << "Include directive contains file address, not just name:"; +            std::cout << HashLoc.printToString(SM) << ":" << std::endl; -          XMLDocOut.XMLAddNode(SM, HashLoc, "19.3", "Include directive contains file address, not just name : "); -          JSONDocOUT.JSONAddElement(SM, HashLoc, "19.3", "Include directive contains file address, not just name : "); +            XMLDocOut.XMLAddNode(SM, HashLoc, "19.3", "Include directive contains file address, not just name : "); +            JSONDocOUT.JSONAddElement(SM, HashLoc, "19.3", "Include directive contains file address, not just name : "); +          }          }        }      } @@ -4393,11 +4733,14 @@ public:          }          else          { -          std::cout << "20.1:" << "C keyword undefined:"; -          std::cout << SL.printToString(SM) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +          { +            std::cout << "20.1:" << "C keyword undefined:"; +            std::cout << SL.printToString(SM) << ":" << std::endl; -          XMLDocOut.XMLAddNode(SM, SL, "20.1", "C keyword undefined : "); -          JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C keyword undefined : "); +            XMLDocOut.XMLAddNode(SM, SL, "20.1", "C keyword undefined : "); +            JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C keyword undefined : "); +          }          }        } @@ -4417,11 +4760,14 @@ public:              }              else              { -              std::cout << "20.1:" << "C standard library macro undefined:"; -              std::cout << SL.printToString(SM) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +              { +                std::cout << "20.1:" << "C standard library macro undefined:"; +                std::cout << SL.printToString(SM) << ":" << std::endl; -              XMLDocOut.XMLAddNode(SM, SL, "20.1", "C standard library macro undefined : "); -              JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C standard library macro undefined : "); +                XMLDocOut.XMLAddNode(SM, SL, "20.1", "C standard library macro undefined : "); +                JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C standard library macro undefined : "); +              }              }            }          } @@ -4441,11 +4787,14 @@ public:        }        else        { -        std::cout << "19.6:" << "Use of #undef is illegal:"; -        std::cout << SL.printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +        { +          std::cout << "19.6:" << "Use of #undef is illegal:"; +          std::cout << SL.printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SL, "19.6", "Use of #undef is illegal : "); -        JSONDocOUT.JSONAddElement(SM, SL, "19.6", "Use of #undef is illegal : "); +          XMLDocOut.XMLAddNode(SM, SL, "19.6", "Use of #undef is illegal : "); +          JSONDocOUT.JSONAddElement(SM, SL, "19.6", "Use of #undef is illegal : "); +        }        }      }  #endif @@ -4487,11 +4836,14 @@ public:        }        else        { -        std::cout << "20.1:" << "C keyword defined:"; -        std::cout << SL.printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +        { +          std::cout << "20.1:" << "C keyword defined:"; +          std::cout << SL.printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SL, "20.1", "C keyword defined : "); -        JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C keyword defined : "); +          XMLDocOut.XMLAddNode(SM, SL, "20.1", "C keyword defined : "); +          JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C keyword defined : "); +        }        }      } @@ -4508,11 +4860,14 @@ public:          }          else          { -          std::cout << "20.1:" << "C standard library macro redefined:"; -          std::cout << SL.printToString(SM) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +          { +            std::cout << "20.1:" << "C standard library macro redefined:"; +            std::cout << SL.printToString(SM) << ":" << std::endl; -          XMLDocOut.XMLAddNode(SM, SL, "20.1", "C standard library macro redefined : "); -          JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C standard library macro redefined : "); +            XMLDocOut.XMLAddNode(SM, SL, "20.1", "C standard library macro redefined : "); +            JSONDocOUT.JSONAddElement(SM, SL, "20.1", "C standard library macro redefined : "); +          }          }        }      } @@ -4539,11 +4894,14 @@ public:          }          else          { -          std::cout << "19.13:" << "Macro has # token:"; -          std::cout << SL.printToString(SM) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +          { +            std::cout << "19.13:" << "Macro has # token:"; +            std::cout << SL.printToString(SM) << ":" << std::endl; -          XMLDocOut.XMLAddNode(SM, SL, "19.13", "Macro has # token : "); -          JSONDocOUT.JSONAddElement(SM, SL, "19.13", "Macro has # token : "); +            XMLDocOut.XMLAddNode(SM, SL, "19.13", "Macro has # token : "); +            JSONDocOUT.JSONAddElement(SM, SL, "19.13", "Macro has # token : "); +          }          }        } @@ -4557,11 +4915,14 @@ public:          }          else          { -          std::cout << "19.13:" << "Macro has ## token:"; -          std::cout << SL.printToString(SM) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +          { +            std::cout << "19.13:" << "Macro has ## token:"; +            std::cout << SL.printToString(SM) << ":" << std::endl; -          XMLDocOut.XMLAddNode(SM, SL, "19.13", "Macro has ## token : "); -          JSONDocOUT.JSONAddElement(SM, SL, "19.13", "Macro has ## token : "); +            XMLDocOut.XMLAddNode(SM, SL, "19.13", "Macro has ## token : "); +            JSONDocOUT.JSONAddElement(SM, SL, "19.13", "Macro has ## token : "); +          }          }        }  #endif @@ -4575,11 +4936,14 @@ public:        }        else        { -        std::cout << "19.12:" << "Macro has # and ## tokens:"; -        std::cout << SL.printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +        { +          std::cout << "19.12:" << "Macro has # and ## tokens:"; +          std::cout << SL.printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SL, "19.12", "Macro has # and ## tokens : "); -        JSONDocOUT.JSONAddElement(SM, SL, "19.12", "Macro has # and ## tokens : "); +          XMLDocOut.XMLAddNode(SM, SL, "19.12", "Macro has # and ## tokens : "); +          JSONDocOUT.JSONAddElement(SM, SL, "19.12", "Macro has # and ## tokens : "); +        }        }      } @@ -4657,11 +5021,14 @@ public:          }          else          { -          std::cout << "19.10:" << "Funciton-like macro's parameters are not enclosed in parantheses or dont have hash:"; -          std::cout << SL.printToString(SM) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +          { +            std::cout << "19.10:" << "Funciton-like macro's parameters are not enclosed in parantheses or dont have hash:"; +            std::cout << SL.printToString(SM) << ":" << std::endl; -          XMLDocOut.XMLAddNode(SM, SL, "19.10", "Funciton-like macro's parameters are not enclosed in parantheses or dont have hash : "); -          JSONDocOUT.JSONAddElement(SM, SL, "19.10", "Funciton-like macro's parameters are not enclosed in parantheses or dont have hash : "); +            XMLDocOut.XMLAddNode(SM, SL, "19.10", "Funciton-like macro's parameters are not enclosed in parantheses or dont have hash : "); +            JSONDocOUT.JSONAddElement(SM, SL, "19.10", "Funciton-like macro's parameters are not enclosed in parantheses or dont have hash : "); +          }          }        } @@ -4673,11 +5040,14 @@ public:        {          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL))          { -          std::cout << "19.7:" << "Function-like macro used:"; -          std::cout << SL.printToString(SM) << ":" << std::endl; +          if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +          { +            std::cout << "19.7:" << "Function-like macro used:"; +            std::cout << SL.printToString(SM) << ":" << std::endl; -          XMLDocOut.XMLAddNode(SM, SL, "19.7", "Function-like macro used : "); -          JSONDocOUT.JSONAddElement(SM, SL, "19.7", "Function-like macro used : "); +            XMLDocOut.XMLAddNode(SM, SL, "19.7", "Function-like macro used : "); +            JSONDocOUT.JSONAddElement(SM, SL, "19.7", "Function-like macro used : "); +          }          }        } @@ -4693,11 +5063,14 @@ public:              }              else              { -              std::cout << "19.9:" << "Function-like macro's argument contains macros:"; -              std::cout << SL.printToString(SM) << ":" << std::endl; +              if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +              { +                std::cout << "19.9:" << "Function-like macro's argument contains macros:"; +                std::cout << SL.printToString(SM) << ":" << std::endl; -              XMLDocOut.XMLAddNode(SM, SL, "19.9", "Function-like macro's argument contains macros : "); -              JSONDocOUT.JSONAddElement(SM, SL, "19.9", "Function-like macro's argument contains macros : "); +                XMLDocOut.XMLAddNode(SM, SL, "19.9", "Function-like macro's argument contains macros : "); +                JSONDocOUT.JSONAddElement(SM, SL, "19.9", "Function-like macro's argument contains macros : "); +              }              }              break; @@ -4731,11 +5104,14 @@ public:        }        else        { -        std::cout << "20.6:" << "use of offsetof is illegal:"; -        std::cout << Range.getBegin().printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +        { +          std::cout << "20.6:" << "use of offsetof is illegal:"; +          std::cout << Range.getBegin().printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SL, "20.6", "use of offsetof is illegal : "); -        JSONDocOUT.JSONAddElement(SM, SL, "20.6", "use of offsetof is illegal : "); +          XMLDocOut.XMLAddNode(SM, SL, "20.6", "use of offsetof is illegal : "); +          JSONDocOUT.JSONAddElement(SM, SL, "20.6", "use of offsetof is illegal : "); +        }        }      } @@ -4747,11 +5123,14 @@ public:        }        else        { -        std::cout << "20.7:" << "use of setjmp is illegal:"; -        std::cout << Range.getBegin().printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +        { +          std::cout << "20.7:" << "use of setjmp is illegal:"; +          std::cout << Range.getBegin().printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SL, "20.7", "use of setjmp is illegal : "); -        JSONDocOUT.JSONAddElement(SM, SL, "20.7", "use of setjmp is illegal : "); +          XMLDocOut.XMLAddNode(SM, SL, "20.7", "use of setjmp is illegal : "); +          JSONDocOUT.JSONAddElement(SM, SL, "20.7", "use of setjmp is illegal : "); +        }        }      } @@ -4763,11 +5142,14 @@ public:        }        else        { -        std::cout << "19.11:" << "Use of undefined macro:"; -        std::cout << Range.getBegin().printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, SL)) +        { +          std::cout << "19.11:" << "Use of undefined macro:"; +          std::cout << Range.getBegin().printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SL, "19.11", "Use of undefined macro : "); -        JSONDocOUT.JSONAddElement(SM, SL, "19.11", "Use of undefined macro : "); +          XMLDocOut.XMLAddNode(SM, SL, "19.11", "Use of undefined macro : "); +          JSONDocOUT.JSONAddElement(SM, SL, "19.11", "Use of undefined macro : "); +        }        }      }  #endif @@ -4787,11 +5169,14 @@ public:        }        else        { -        std::cout << "19.17:" << "elif directive is not in the same file as its if directive:"; -        std::cout << SLoc.printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, Loc)) +        { +          std::cout << "19.17:" << "elif directive is not in the same file as its if directive:"; +          std::cout << SLoc.printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SLoc, "19.17", "elif directive is not in the same file as its if directive : "); -        JSONDocOUT.JSONAddElement(SM, SLoc, "19.17", "elif directive is not in the same file as its if directive : "); +          XMLDocOut.XMLAddNode(SM, SLoc, "19.17", "elif directive is not in the same file as its if directive : "); +          JSONDocOUT.JSONAddElement(SM, SLoc, "19.17", "elif directive is not in the same file as its if directive : "); +        }        }      }  #endif @@ -4811,11 +5196,14 @@ public:        }        else        { -        std::cout << "19.17:" << "else directive is not in the same file as its if directive:"; -        std::cout << SLoc.printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, Loc)) +        { +          std::cout << "19.17:" << "else directive is not in the same file as its if directive:"; +          std::cout << SLoc.printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SLoc, "19.17", "else directive is not in the same file as its if directive : "); -        JSONDocOUT.JSONAddElement(SM, SLoc, "19.17", "else directive is not in the same file as its if directive : "); +          XMLDocOut.XMLAddNode(SM, SLoc, "19.17", "else directive is not in the same file as its if directive : "); +          JSONDocOUT.JSONAddElement(SM, SLoc, "19.17", "else directive is not in the same file as its if directive : "); +        }        }      }  #endif @@ -4835,11 +5223,14 @@ public:        }        else        { -        std::cout << "19.17:" << "endif directive is not in the same file as its if directive:"; -        std::cout << SLoc.printToString(SM) << ":" << std::endl; +        if (Devi::IsTheMatchInMainFile(MainFileOnly, SM, Loc)) +        { +          std::cout << "19.17:" << "endif directive is not in the same file as its if directive:"; +          std::cout << SLoc.printToString(SM) << ":" << std::endl; -        XMLDocOut.XMLAddNode(SM, SLoc, "19.17", "endif directive is not in the same file as its if directive : "); -        JSONDocOUT.JSONAddElement(SM, SLoc, "19.17", "endif directive is not in the same file as its if directive : "); +          XMLDocOut.XMLAddNode(SM, SLoc, "19.17", "endif directive is not in the same file as its if directive : "); +          JSONDocOUT.JSONAddElement(SM, SLoc, "19.17", "endif directive is not in the same file as its if directive : "); +        }        }      }  #endif @@ -5169,7 +5560,9 @@ int main(int argc, const char **argv)  {    /*@DEVI-we should parse the common options before parsing the custom options.*/    CommonOptionsParser op(argc, argv, MutatorLVL0Cat); +#if 0    cl::ParseCommandLineOptions(argc, argv); +#endif    ClangTool Tool(op.getCompilations(), op.getSourcePathList()); | 
