diff options
Diffstat (limited to 'mutator_report.h')
-rw-r--r-- | mutator_report.h | 116 |
1 files changed, 66 insertions, 50 deletions
diff --git a/mutator_report.h b/mutator_report.h index 69f177d..e6b1936 100644 --- a/mutator_report.h +++ b/mutator_report.h @@ -37,64 +37,80 @@ using namespace tinyxml2; /*********************************************************************************************************************/ namespace Devi { /*********************************************************************************************************************/ -/*@DEVI- for both report classes, if the program gets terminated, since the destructor does not close -the report files, what happens to them is implementation-defined in case of let's say an exit, but since -we erase the files everytime a new instance of mutator-lvl0 is called, we are fine. or so i think.*/ -/*@DEVI- in case of a crash, the XML report will only hold the base node, while the JSON report will -contain all the reports up until the crash. tinyxml2 writes the nodes to file on SaveFile which is -called in SaveReport so that's why.*/ -class XMLReport -{ -public: - XMLReport(); - ~XMLReport(); - - void XMLCreateReport(void); - void XMLAddNode(ASTContext* ASTC, SourceLocation SL, std::string MisraRule, std::string Description); - /*overloaded for rule checks that announce the result on onendoftranslation instead of run - since they dont have access to matchresult or astcontext.*/ - void XMLAddNode(FullSourceLoc FSL, SourceLocation SL, std::string MisraRule, std::string Description); - /*another overload to support the xml output for PPCallbacks.*/ - void XMLAddNode(const SourceManager &SM, SourceLocation SL, std::string MisraRule, std::string Description); - - void XMLAddNode(std::string FilePath, std::string MisraRule, std::string Description); - - void XMLAddNode(unsigned Line, unsigned Column, std::string FileName, std::string MisraRule, std::string Description); - - bool isReportEmpty(void); - - void SaveReport(void); - -private: - XMLDocument XMLReportDoc; - XMLElement* RootPointer; -}; + class XMLReportBase + { + public: + XMLReportBase(); + ~XMLReportBase(); + + void CreateReport(void); + + virtual void AddNode(void) = 0; + + void SaveReport(void); + + private: + XMLDocument Doc; + XMLElement* RootPointer; + }; +/*********************************************************************************************************************/ + /*@DEVI- for both report classes, if the program gets terminated, since the destructor does not close + the report files, what happens to them is implementation-defined in case of let's say an exit, but since + we erase the files everytime a new instance of mutator-lvl0 is called, we are fine. or so i think.*/ + /*@DEVI- in case of a crash, the XML report will only hold the base node, while the JSON report will + contain all the reports up until the crash. tinyxml2 writes the nodes to file on SaveFile which is + called in SaveReport so that's why.*/ + class XMLReport + { + public: + XMLReport(); + ~XMLReport(); + + void XMLCreateReport(void); + void XMLAddNode(ASTContext* ASTC, SourceLocation SL, std::string MisraRule, std::string Description); + /*overloaded for rule checks that announce the result on onendoftranslation instead of run + since they dont have access to matchresult or astcontext.*/ + void XMLAddNode(FullSourceLoc FSL, SourceLocation SL, std::string MisraRule, std::string Description); + /*another overload to support the xml output for PPCallbacks.*/ + void XMLAddNode(const SourceManager &SM, SourceLocation SL, std::string MisraRule, std::string Description); + + void XMLAddNode(std::string FilePath, std::string MisraRule, std::string Description); + + void XMLAddNode(unsigned Line, unsigned Column, std::string FileName, std::string MisraRule, std::string Description); + + bool isReportEmpty(void); + + void SaveReport(void); + + private: + XMLDocument XMLReportDoc; + XMLElement* RootPointer; + }; /*********************************************************************************************************************/ -class JSONReport -{ -public: - JSONReport(); + class JSONReport + { + public: + JSONReport(); - void JSONCreateReport(void); - void JSONAddElement(ASTContext* ASTC, SourceLocation SL, std::string MisraRule, std::string Description); - /*overload for checks that announce the result in onendoftranslation unit.*/ - void JSONAddElement(FullSourceLoc FSL, SourceLocation SL, std::string MisraRule, std::string Description); - /*overload for PPCallbacks.*/ - void JSONAddElement(const SourceManager &SM, SourceLocation SL, std::string MisraRule, std::string Description); + void JSONCreateReport(void); + void JSONAddElement(ASTContext* ASTC, SourceLocation SL, std::string MisraRule, std::string Description); + /*overload for checks that announce the result in onendoftranslation unit.*/ + void JSONAddElement(FullSourceLoc FSL, SourceLocation SL, std::string MisraRule, std::string Description); + /*overload for PPCallbacks.*/ + void JSONAddElement(const SourceManager &SM, SourceLocation SL, std::string MisraRule, std::string Description); - void JSONAddElement(std::string FilePath, std::string MisraRule, std::string Description); + void JSONAddElement(std::string FilePath, std::string MisraRule, std::string Description); - void JSONAddElement(unsigned Line, unsigned Column, std::string FileName, std::string MisraRule, std::string Description); + void JSONAddElement(unsigned Line, unsigned Column, std::string FileName, std::string MisraRule, std::string Description); - void CloseReport(void); + void CloseReport(void); -private: - std::ofstream JSONRepFile; -}; + private: + std::ofstream JSONRepFile; + }; /*********************************************************************************************************************/ /*********************************************************************************************************************/ -/*end of namespace Devi*/ -} +} //end of namespace devi #endif /*********************************************************************************************************************/ /*last line intentionally left blank.*/ |