mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
9a082a086c
Rather than using .lint.py files that contain a LINTER object, linter definitions are now in standalone .yml files. In the case of external linters that need to run python code, the payload is now of the form: <module path>:<object path> The <module path> is the import path to the module, and <object path> is the callable object to use within that module. It is up to the consumer of mozlint to ensure the <module path> lives on sys.path. For example, if an external lint's function lives in package 'foo', file 'bar.py' and function 'lint', the payload would read: foo.bar:lint This mechanism was borrowed from taskcluster. MozReview-Commit-ID: AIsfbVmozy4 --HG-- rename : python/mozlint/test/linters/badreturncode.lint.py => python/mozlint/test/linters/badreturncode.yml rename : python/mozlint/test/linters/explicit_path.lint.py => python/mozlint/test/linters/explicit_path.yml rename : python/mozlint/test/linters/external.lint.py => python/mozlint/test/linters/external.yml rename : python/mozlint/test/linters/invalid_exclude.lint.py => python/mozlint/test/linters/invalid_exclude.yml rename : python/mozlint/test/linters/invalid_extension.lnt => python/mozlint/test/linters/invalid_extension.ym rename : python/mozlint/test/linters/invalid_include.lint.py => python/mozlint/test/linters/invalid_include.yml rename : python/mozlint/test/linters/invalid_type.lint.py => python/mozlint/test/linters/invalid_type.yml rename : python/mozlint/test/linters/missing_attrs.lint.py => python/mozlint/test/linters/missing_attrs.yml rename : python/mozlint/test/linters/missing_definition.lint.py => python/mozlint/test/linters/missing_definition.yml rename : python/mozlint/test/linters/raises.lint.py => python/mozlint/test/linters/raises.yml rename : python/mozlint/test/linters/regex.lint.py => python/mozlint/test/linters/regex.yml rename : python/mozlint/test/linters/string.lint.py => python/mozlint/test/linters/string.yml rename : python/mozlint/test/linters/structured.lint.py => python/mozlint/test/linters/structured.yml extra : rebase_source : bda3926712234123355c5af71c6453ce869b19fc
38 lines
1.5 KiB
ReStructuredText
38 lines
1.5 KiB
ReStructuredText
Linting
|
|
=======
|
|
|
|
Linters are used in mozilla-central to help enforce coding style and avoid bad practices. Due to the
|
|
wide variety of languages in use and the varying style preferences per team, this is not an easy
|
|
task. In addition, linters should be runnable from editors, from the command line, from review tools
|
|
and from continuous integration. It's easy to see how the complexity of running all of these
|
|
different kinds of linters in all of these different places could quickly balloon out of control.
|
|
|
|
``Mozlint`` is a library that accomplishes two goals:
|
|
|
|
1. It provides a standard method for adding new linters to the tree, which can be as easy as
|
|
defining a config object in a ``.yml`` file. This helps keep lint related code localized, and
|
|
prevents different teams from coming up with their own unique lint implementations.
|
|
2. It provides a streamlined interface for running all linters at once. Instead of running N
|
|
different lint commands to test your patch, a single ``mach lint`` command will automatically run
|
|
all applicable linters. This means there is a single API surface that other tools can use to
|
|
invoke linters.
|
|
|
|
``Mozlint`` isn't designed to be used directly by end users. Instead, it can be consumed by things
|
|
like mach, mozreview and taskcluster.
|
|
|
|
.. toctree::
|
|
:caption: Linting User Guide
|
|
:maxdepth: 2
|
|
|
|
usage
|
|
create
|
|
linters/eslint
|
|
linters/flake8
|
|
|
|
Indices and tables
|
|
==================
|
|
|
|
* :ref:`genindex`
|
|
* :ref:`modindex`
|
|
* :ref:`search`
|