Coding style enforcement for VHDL.
.. image:: https://img.shields.io/github/tag/jeremiah-c-leary/vhdl-style-guide.svg?style=flat-square :target: https://github.com/jeremiah-c-leary/vhdl-style-guide :alt: Github Release .. image:: https://img.shields.io/pypi/v/vsg.svg?style=flat-square :target: https://pypi.python.org/pypi/vsg :alt: PyPI Version .. image:: https://img.shields.io/codecov/c/github/jeremiah-c-leary/vhdl-style-guide/master.svg?style=flat-square :target: https://codecov.io/github/jeremiah-c-leary/vhdl-style-guide :alt: Test Coverage .. image:: https://img.shields.io/readthedocs/vsg.svg?style=flat-square :target: http://vhdl-style-guide.readthedocs.io/en/latest/index.html :alt: Read The Docs .. image:: https://api.codacy.com/project/badge/Grade/42744dca97544824b93cfc99e8030063 :target: https://www.codacy.com/app/jeremiah-c-leary/vhdl-style-guide?utm_source=github.com&utm_medium=referral&utm_content=jeremiah-c-leary/vhdl-style-guide&utm_campaign=Badge_Grade :alt: Codacy
Update 02/10/2024
For Release 3.22.0.
In an attempt to be more consistent in the configuration files, the following options are changing from camelCase to snake_case:
+---------------+--------------+ | option | Changed To | +===============+==============+ | indentSize | indent_size | +---------------+--------------+ | indentStyle | indent_style | +---------------+--------------+
An Error message will be generated if the old style is encountered. A reminder to change the option to snake_case will be given.
Regards,
--Jeremy
.. image:: https://github.com/jeremiah-c-leary/vhdl-style-guide/blob/master/docs/img/vim_macro.gif
Overview
_Key Benefits
_Key Features
_Known Limitations
_Installation
_Usage
_Documentation
_Contributing
_VSG was created after participating in a code review where a real issue in the code was masked by a coding style issue. A finding was created for the style issue, while the real issue was missed. When the code was re-reviewed, the real issue was discovered.
Depending on your process, style issues can take a lot of time to resolve.
Spending less time on style issues leaves more time to analyze the substance of the code. This ultimately reduces the amount of time performing code reviews. It also allows reviewers to focus on the substance of the code. This will result in a higher quality code base.
VSG allows the style of the code to be defined and enforced over part or the entire code base. Configurations allow for multiple coding standards.
Command line tool
Reports and fixes issues found
whitespace
horizontal
vertical
upper and lower case
keyword alignments
etc...
Fully configurable rules via JSON or YAML configuration file
Localize rule sets
Built in styles
VSG is a continual work in progress. As such, this version has the following known limitations:
You can get the latest released version of VSG via pip.
.. code-block:: bash
pip install vsg
The latest development version can be cloned...
.. code-block:: bash
git clone https://github.com/jeremiah-c-leary/vhdl-style-guide.git
Install prerequisites.
.. code-block:: bash
pip install tox
Build locally, artifacts will appear in dist
directory.
.. code-block:: bash
tox
VSG is a both a command line tool and a python package. The command line tool can be invoked with:
.. code-block:: bash
$ vsg usage: VHDL Style Guide (VSG) [-h] [-f FILENAME [FILENAME ...]] [-lr LOCAL_RULES] [-c CONFIGURATION [CONFIGURATION ...]] [--fix] [-fp FIX_PHASE] [-j JUNIT] [-js JSON] [-of {vsg,syntastic,summary}] [-b] [-oc OUTPUT_CONFIGURATION] [-rc RULE_CONFIGURATION] [--style {indent_only,jcl}] [-v] [-ap] [--fix_only FIX_ONLY] [--stdin] [--quality_report QUALITY_REPORT] [-p JOBS] [--debug] [FILENAME ...]
Analyzes VHDL files for style guide violations. Reference documentation is located at: http://vhdl-style-guide.readthedocs.io/en/latest/index.html
positional arguments: FILENAME File to analyze
options: -h, --help show this help message and exit -f FILENAME [FILENAME ...], --filename FILENAME [FILENAME ...] File to analyze -lr LOCAL_RULES, --local_rules LOCAL_RULES Path to local rules -c CONFIGURATION [CONFIGURATION ...], --configuration CONFIGURATION [CONFIGURATION ...] JSON or YAML configuration file(s) --fix Fix issues found -fp FIX_PHASE, --fix_phase FIX_PHASE Fix issues up to and including this phase -j JUNIT, --junit JUNIT Extract Junit file -js JSON, --json JSON Extract JSON file -of {vsg,syntastic,summary}, --output_format {vsg,syntastic,summary} Sets the output format. -b, --backup Creates a copy of input file for comparison with fixed version. -oc OUTPUT_CONFIGURATION, --output_configuration OUTPUT_CONFIGURATION Write configuration to file name. -rc RULE_CONFIGURATION, --rule_configuration RULE_CONFIGURATION Display configuration of a rule --style {indent_only,jcl} Use predefined style -v, --version Displays version information -ap, --all_phases Do not stop when a violation is detected. --fix_only FIX_ONLY Restrict fixing via JSON file. --stdin Read VHDL input from stdin, disables all other file selections, disables multiprocessing --quality_report QUALITY_REPORT Create code quality report for GitLab -p JOBS, --jobs JOBS number of parallel jobs to use, default is the number of cpu cores --debug Displays verbose debug information
Here is an example output running against a test file:
.. image:: https://github.com/jeremiah-c-leary/vhdl-style-guide/blob/master/docs/img/fixing_single_file.gif
Here is an example of .pre-commit-config.yaml
file:
.. code-block:: yaml
repos:
All documentation for VSG is hosted at read-the-docs <http://vhdl-style-guide.readthedocs.io/en/latest/index.html>
_.
I welcome any contributions to this project. No matter how small or large.
There are several ways to contribute:
Please refer to the documentation hosted at read-the-docs <http://vhdl-style-guide.readthedocs.io/en/latest/index.html>
_ for more details on contributing.