clang-tidy-misra is a collection of MISRA compliance checkers for clang-tidy.
This project is in an early stage and has not yet been tested extensively!
If and how each rule can be checked:
Explanation for the "Supported by" column:
- TBD: "To Be Determined" - Rule has not yet been looked at at all
- unchecked: Rule can not (yet) be checked at all
- unchecked (document): Unchecked and likely uncheckable by a compiler
- -...: Enforceable by enabling this option when invoking the compiler
- misra-...: Checker developed by us is able to check this rule
- ...: Checkable by the vanilla clang-tidy checker
Work to do, not necessarily in the listed order:
- Implement/Cover as many rules as possible
- Integrate all checkers into a unified web front end that supports the user with the creation of all the necessary documentation (compliance matrix, deviations, sign-offs, etc.) to achieve MISRA compliance
No documentation so far.
buildagent/build.sh may be useful.
When reporting a bug, please include a code snippet which triggers the flaw.
Contribute a checker
- Check the
test-wishlistfolder for already existing test code
- Move/Add a file, e.g.
10-3-2.cppwith test cases to the
- Make sure existing can not yet check this rule
clang-tidy -checks=* 10-3-2.cpp
clang++ -fsyntax-only -Weverything 10-3-2.cpp
- Add support for this rule
- Implement checker logic if needed - Dumping the AST of your test code may help you
- If vanilla Clang/clang-tidy does the trick, adapt the test
make check-tidy-misrain the build directory to run the tests
- Highly recommended: Let the new checker run on your embedded project(s) to make sure it works as intended
- Commit and create a pull request
In case you figure that you can not come up with some usable checker logic,
instead of hiding away or deleting your test code, please move it from
test-wishlist where it can be picked up by someone else.
This project follows (tries to...) the LLVM Coding Standard. At the very least the code has to be formatted using clang-format and the LLVM coding style.
For testing code feel free to lift the restrictions as necessary. For example,
by using the
.clang-format file in the test directory.
Enable the rules
misra-* when using clang-tidy.