Skip to main content

Code formatting and code metrics for programs written in the MATLAB/Simulink and Octave languages.

Project description

MATLAB Independent, Small & Safe, High Integrity Tools

MATLAB is a popular programming language in many engineering disciplines, intended for the fast development of prototypes. But as we all know, prototypes make it into production all the time, so now you're stuck. Unfortunately, there are no style checkers or "good" static analysis tools for MATLAB. This project attempts to fill this gap.

If you have MATLAB or MATLAB embedded in Simulink models in your production code and want to improve code quality then this tool-suite is for you.

Tools & Documentation

All tools and language features are documented here: https://florianschanda.github.io/miss_hit/

We intend to provide more tools later, please refer to the roadmap for more information.

Please refer to the release notes for a summary of recent changes and known issues.

Installing and using MISS_HIT

Just check out the repository and put it on your path. That's it. MISS_HIT does not require any python packages or libraries.

To use MISS_HIT you just give it a set of files to process, for example:

$ mh_style my_file.m
$ mh_style --process-slx my_model.slx

Configuration is described in the user manual(s).

The version of Python I am using is 3.6.9 but any earlier or later version should also work. I am not using any overly fancy language features.

Installation via pip

$ pip3 install --user miss_hit

This installation also adds two executable scripts mh_style and mh_metric into .local/bin, so please make sure that this is on your PATH.

You can also use the python -m syntax to directly invoke the program. This might be useful if you're on a heavily locked-down corporate Windows environment:

$ python3 -m miss_hit.mh_style

Additional requirements for developing MISS_HIT

If you want to help develop, you will also need Pylint, PyCodeStyle and Graphviz. Install as follows:

$ apt-get install graphviz
$ pip3 install --user pylint pycodestyle

Challenges

There are serious issues present in the MATLAB and Octave languages on all levels (lexical structure, parsing, and semantics) that make it very difficult to create any tool processing them. In fact github is littered with incomplete attempts and buggy parsers. The usual question is "but what about Octave?"; it is a similar language, but it is not compatible with MATLAB. If your problem is parsing MATLAB then the Octave parser will not help you. Even very simple statements such as x = [1++2] mean different things (3 in MATLAB, syntax error in Octave).

We've documented the key issues we've faced and how we've resolved them.

Copyright

MISS_HIT is licensed under the GNU GPL version 3 as described in LICENSE.

The vast majority of this work is (C) Florian Schanda. Contributions from the following people and entities are under their copyright, with the same license:

  • Zenuity AB
  • Alina Boboc
  • Benedikt Schmid

Copyright of octave tests

This project includes modified/adapted parts of the GNU Octave testsuite under tests/parser/octave_*. These are (c) their original authors. Each file there describes from which file they derive.

Note on parser tests

Some of the parser tests include code samples and documentation snippets from the publically available MathWorks website. An attribution (in comment form) is always included in these cases.

Note on the documentation assets

The documentation uses feather icons which are licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miss_hit-0.9.7.tar.gz (94.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

miss_hit-0.9.7-py3-none-any.whl (115.1 kB view details)

Uploaded Python 3

File details

Details for the file miss_hit-0.9.7.tar.gz.

File metadata

  • Download URL: miss_hit-0.9.7.tar.gz
  • Upload date:
  • Size: 94.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.3

File hashes

Hashes for miss_hit-0.9.7.tar.gz
Algorithm Hash digest
SHA256 52e0c2a38dee2dc5599cb7335c702208390fc93e0d1f584430f9427bbf617e52
MD5 8cb504b4e8faecc90c5d2228b25a39b7
BLAKE2b-256 c27ccca759481b0453b6bd05ec897d727324838ed98429ed04fa429a30638ce9

See more details on using hashes here.

File details

Details for the file miss_hit-0.9.7-py3-none-any.whl.

File metadata

  • Download URL: miss_hit-0.9.7-py3-none-any.whl
  • Upload date:
  • Size: 115.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.3

File hashes

Hashes for miss_hit-0.9.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ed9a3d8ba09cf55bfbb100e9e4fbdcbf7d689427a521f01eb158f4877e0896f1
MD5 bd579824dff592398b56daab803398fe
BLAKE2b-256 2300715d4556718f5f0197ba20e437c2278cb698cc34378ad5c957bb717ec1d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page