GNU General Public License v3.0

项目介绍

florianschanda/miss_hit 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,采用 GNU General Public License v3.0 许可证,目前获得 210 个 Star、22 次 Fork。

仓库全名
florianschanda/miss_hit
开源许可证
GNU General Public License v3.0
Star 数
210
Fork 数
22
未关闭 Issue
72

README 摘要

MATLAB Independent, Small & Safe, High Integrity Tools http://misshit.org 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…

完整内容见 GitHub 原始 README 或本页 。

常见问题

miss_hit 用什么语言开发?

主要使用 Python 编写,采用 GNU General Public License v3.0 许可证,目前有 210 个 Star。

miss_hit 可以免费商用吗?

仓库标注的许可证为 GNU General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 miss_hit 的源码?

可以直接克隆仓库:git clone https://github.com/florianschanda/miss_hit.git,默认分支为 master;安装与运行步骤见仓库 README。

miss_hit 最近还在维护吗?

仓库最近一次更新为 2024年9月3日,当前有 72 个未关闭 Issue;Star 数为 210,可作为社区活跃度的参考。

关于

MATLAB Independent, Small & Safe, High Integrity Tools - code formatter and more

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
264
价值分
130
活跃状态
活跃

README

DOI

MATLAB Independent, Small & Safe, High Integrity Tools

http://misshit.org

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

MISS_HIT comes with the following tools, all of which come with user manuals and setup instructions: https://florianschanda.github.io/miss_hit/

  • Style Checker mh_style

    A simple coding style checker and code formatter for MATLAB or Octave code, including MATLAB embedded inside Simulink models.

  • Code Metrics mh_metric

    A simple code metric tool for MATLAB or Octave code, including MATLAB embedded inside Simulink models.

  • Bug finding mh_lint

    A simple linter for MATLAB or Octave code, including MATLAB embedded inside Simulink models.

  • Code/Test traceability mh_trace

    A simple tool to extrace tags from test and code to demonstrate requirements traceability.

  • Diff helper mh_diff

    A tool for diffing MATLAB code inside Simulink models. Note that other changes (e.g. different connections) are not detected; this is only working for embedded MATLAB.

  • Copyright notice helper mh_copyright

    A tool that can update or adjust copyright notices in bulk. Helpful if your company changes name, or you have year ranges that need updating.

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

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

Installing and using MISS_HIT

Installation via pip

$ pip3 install --user miss_hit

This installation also adds five executable scripts mh_style, mh_metric, mh_lint, mh_copyright, and mh_diff 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

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

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

Configuration and setup is described in the user manuals

Installation via pipx

Very similar to the above:

$ pipx install miss_hit --include-deps

Installation by checkout

It is recommended to use pip or pipx, as that gets you the latest stable release. However, it is possible to directly use MISS_HIT from a checkout. MISS_HIT currently does not require any non-standard python packages or libraries as dependencies. Just check out the repository and put it on your path. That’s it.

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

Additional requirements for developing MISS_HIT

If you want to help develop you will need Linux as the test-suite doesn’t really work on Windows. You will also need Pylint, PyCodeStyle, Coverage, and Graphviz. Install as follows:

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

For publishing releases (to GitHub and PyPI) you will also need:

$ pip3 install --user --upgrade setuptools wheel requests

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).

I have documented the key issues we’ve faced and how we’ve resolved them.

The basic framework, style checker and code metrics tool of MISS_HIT (everything under miss_hit_core) are licensed under the GNU GPL version 3 (or later) as described in LICENSE.

The advanced analysis tools of MISS_HIT (everything under miss_hit) are licensed under the GNU Affero GPL version 3 (or later) as described in LICENSE.AGPL.

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

  • Alina Boboc (Documentation style)
  • Benedikt Schmid (MATLAB integration)
  • Remi Gau (CI/CD templates)
  • Veoneer System Software GmbH (JSON Metrics)
  • Zenuity AB (Key parts of the lexer)

This project includes verbatim and modified/adapted parts of the GNU Octave testsuite under tests/parser/octave_* and tests/style/octave_annotations. These are © 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 publicly 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.

评论

暂无评论