Skip to content
MISRA C:2012 and MISRA C++:2008 compliance checkers for clang-tidy
C++ C Python CMake Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Replace Travis CI with Circle CI May 21, 2018
buildagent Exit if branch is unspecified May 21, 2018
doc Add remarks for 5.* rules Jul 16, 2017
src
test-wishlist Put tests under public domain Jun 22, 2017
test Put tests under public domain Jun 22, 2017
.gitignore Ignore .swp files Aug 24, 2015
CMakeLists.txt Add checker for MISRA C++:2008 rule 6-4-4 Feb 16, 2017
LICENSE.TXT Initial commit. Aug 23, 2015
README.md Replace Travis CI with Circle CI May 21, 2018
clang-tidy.patch Update to r332023/81bb1846c060bce4adb43b0450344c9be383616f of May 11, 2018

README.md

About Build Status

clang-tidy-misra is a collection of MISRA compliance checkers for clang-tidy.

Progress

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 plan

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

Installation

No documentation so far. .circleci/config.yml and buildagent/build.sh may be useful.

Bugs

When reporting a bug, please include a code snippet which triggers the flaw.

Contribute a checker

  • Check the test-wishlist folder for already existing test code
  • Move/Add a file, e.g. 10-3-2.cpp with test cases to the test folder
  • 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
  • Call make check-tidy-misra in 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 to test-wishlist where it can be picked up by someone else.

Coding Style

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.

Running Tests

make check-tidy-misra

Usage

Enable the rules misra-* when using clang-tidy.

You can’t perform that action at this time.