diff options
author | bloodstalker <thabogre@gmail.com> | 2017-02-20 07:08:13 +0000 |
---|---|---|
committer | bloodstalker <thabogre@gmail.com> | 2017-02-20 07:08:13 +0000 |
commit | 71b39dadc0d4ab61f942d169d0f7c92e4e1eb317 (patch) | |
tree | fd1419fc6e3600db6f0d49f32b78ce489c33a07b | |
parent | enabled core dumps, checking whether it works. (diff) | |
download | mutator-71b39dadc0d4ab61f942d169d0f7c92e4e1eb317.tar.gz mutator-71b39dadc0d4ab61f942d169d0f7c92e4e1eb317.zip |
added some more stuff for rule check disabling,enabling, added equivalency map for MisraC1998
-rw-r--r-- | mutator-lvl0.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/mutator-lvl0.cpp b/mutator-lvl0.cpp index 6d1d49d..dfb5aa0 100644 --- a/mutator-lvl0.cpp +++ b/mutator-lvl0.cpp @@ -22,12 +22,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* /**********************************************************************************************************************/ /*included modules*/ /*project headers*/ +#include "mutator-lvl0.h" #include "mutator_aux.h" /*standard headers*/ #include <cassert> #include <exception> #include <fstream> #include <iostream> +#include <map> #include <regex> #include <string> #include <vector> @@ -207,6 +209,40 @@ cl::opt<std::string> MCD("MCD", cl::desc("MisraC switches to disable specific ru cl::opt<bool> MCEA("MCEA", cl::desc("MisraC switch to enable all rule checks"), cl::init(true), cl::cat(MutatorLVL0Cat), cl::Optional); cl::opt<bool> MCDA("MCDA", cl::desc("MisraC switches to disable all rule checks"), cl::init(false), cl::cat(MutatorLVL0Cat), cl::Optional); /**********************************************************************************************************************/ +class StringOptionsParser +{ +public: + StringOptionsParser() {} + + bool MC2Parser(void) + { + if (MCEA && MCDA) + { + std::cout << "You cannot set both MCEA and MCDA. That doesn't mean anything. Run with -h or visit the documentationi for help." << std::endl; + return false; + } + else if (MCEA) + { + MCOptsProto.AllisSet = true; + } + else if (MCDA) + { + MCOptsProto.AllisSet = false; + } + + return true; + } + +private: + struct MCOptsStructs + { + bool AllisSet; + std::vector<std::string> Options; + }; + + MCOptsStructs MCOptsProto; +}; +/**********************************************************************************************************************/ class [[deprecated("replaced by a more efficient class"), maybe_unused]] MCForCmpless : public MatchFinder::MatchCallback { public: MCForCmpless (Rewriter &Rewrite) : Rewrite (Rewrite) {} @@ -7564,6 +7600,19 @@ int main(int argc, const char **argv) ClangTool Tool(op.getCompilations(), op.getSourcePathList()); + StringOptionsParser SOPProto; + +#if 1 + if (SOPProto.MC2Parser()) + { + typedef std::multimap<std::string, std::string>::iterator Iter; + for (Iter iter = MC1EquivalencyMap.begin(); iter != MC1EquivalencyMap.end(); ++iter) + { + std::cout << "Key: " << iter->first << " " << "Value: " << iter->second << std::endl; + } + } +#endif + XMLDocOut.XMLCreateReport(); JSONDocOUT.JSONCreateReport(); |