From 7c5b973027c4b7b6ce7f0b2b668c990bb4331f63 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Tue, 20 Dec 2016 21:14:15 +0330 Subject: updated --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index e1c23f9..782cddf 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/553/badge)](https://bestpractices.coreinfrastructure.org/projects/553) -A C code mutator,Misra-C checker and when possible, a Misra-C implementer using the Clang frontend written mostly in C++ and some bash.
+A C code mutator,Misra-C checker and code transformation tool written using the Clang frontend(LibTooling) as a stand-alone in C++.

Here's a quick look into the project files and directories:
* **mutator-lvl0.cpp** contains the Misra-C rules to check. The Executable named after it, will run the Misra-C rule checks.
@@ -26,6 +26,16 @@ Here's a quick look into the project files and directories:
#### **The Misra-C rule checking portion has not been extensively tested since it is still WIP but is very much buildable and usable.**
+### Dev Status +All the as-of-yet implemented features of the project are very much buildable and usable at all times, even during the dev phase.
+* **`mutator-lvl0`** is the executable responsible for the Misra-C rule checks. Currently it can check for 102 out of the 143 Misra-C:2004 rules. For a more accurate list please check out `misrac.ods` under `docs` in project's root.
+* **`mutator`** and **`mutator-lvl2`** are collectively the code muatation and code transformation executables. Currently the automatic code transformation implemented is only limited to adding braces to blocks that are missing it and adding `else` if an if-else if is missing one. The mutation is only limited to statement and condition tagging for the time-being.
+ +### Dev Plans +* Finish the Misra-C:2004 implementation. +* Start the unit tests for `mutator-lvl0`. +* start implementing `mutator` and `mutator-lvl2`. + ##Building and Running ###Building @@ -38,7 +48,7 @@ Here Are the build options:
* `COV_USE` and `COV_GEN` are for use with the `profdata` format. This option can only be used to build with `clang++`.
* `COV_GNU` will generate `gcov` compliant coverage data. This option can only be used to build with `clang++`.
* `COV_NO_CLANG` will build the executable with no source coverage instrumentation. This option can only be used to build with `clang++`.
- * `GNU_MODE` will build the executable with no source code coverage instrumentation for g++. Can only be used to build with `g++`.
+ * `GNU_MODE` will build the executable with no source code coverage instrumentation for `g++`. Can only be used to build with `g++`.
* The `LLVM_CONF` option is used to tell the compiler which `llvm-config` to use. The default value is `llvm-config`.
So for example if you want to build the code with `clang++` without any coverage, and you only want to build the Misra-C rule checker, you should run:
@@ -51,6 +61,7 @@ Note: if you are building the llvm and clang libraries from source, then the llv
Also do note that building the llvm libraries from source in Debug mode will require big space on your harddrive and will need more than 4GB of RAM. Release mode is less resource-greedy, of course.
Finally if you are having problems with the build, you could take a look at `.travis.yml` or under `CITPreBuildDep.sh` under `extra-tools` for some hints or help apart from asking for help, of course.
+As a general rule, if you have Clang and LLVM libraries 3.9 or up on your platform, you can build `mutator`. If there are any problems with builds on platforms other than the ones in `.travis.yml` let me know.
###Running To run any of the tree executables, just give a filename or a whitespace-separated list of files. The executables will print out the results to stdout.
-- cgit v1.2.3