Skip to content
This repository has been archived by the owner on Dec 31, 2020. It is now read-only.

Latest commit

 

History

History
74 lines (60 loc) · 2.85 KB

README.md

File metadata and controls

74 lines (60 loc) · 2.85 KB

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.