在本地运行 Lint 工具¶
使用命令行¶
您可以使用 mach lint
命令运行代码树中的所有 Lint 工具。只需传入您希望进行 Lint 检查的目录或文件即可(默认为当前工作目录)。
./mach lint path/to/files
允许多个路径。
./mach lint path/to/foo.js path/to/bar.py path/to/dir
强制在原本会被排除的目录上执行 Lint 检查。
./mach lint -n path/in/the/exclude/list
Mozlint
会自动确定存在哪些类型的文件,以及需要针对它们运行哪些 Lint 工具。例如,如果目录中同时包含 JavaScript 和 Python 文件,则 mozlint 将分别自动对这些文件运行 ESLint 和 Flake8。
要手动限制调用哪些 Lint 工具,请传入 -l/--linter
参数。
./mach lint -l eslint path/to/files
您可以通过运行以下命令查看可用的 Lint 工具列表:
./mach lint --list
最后,mozlint
可以使用 -o/--outgoing
和 -w/--workdir
参数分别对由出站修订或工作目录触及的文件进行 Lint 检查。这些参数适用于 Mercurial 和 Git。在 --outgoing
的情况下,将使用更改将推送到其中的默认远程存储库作为比较对象。如果需要,可以手动指定远程存储库。在 Git 中,您可能只想对来自工作目录的暂存提交进行 Lint 检查,这可以通过 --workdir=staged
来实现。示例
./mach lint --workdir
./mach lint --workdir=staged
./mach lint --outgoing
./mach lint --outgoing origin/master
./mach lint -wo
使用 VCS 钩子¶
在 hg 或 git 中都有 pre-commit 和 pre-push 版本控制钩子。要启用 pre-push hg 钩子,请在 hgrc 中添加以下内容:
[hooks]
pre-push.lint = python:./tools/lint/hooks.py:hg
要启用 pre-commit hg 钩子,请在 hgrc 中添加以下内容:
[hooks]
pretxncommit.lint = python:./tools/lint/hooks.py:hg
要启用 pre-push git 钩子,请运行以下命令:
$ ln -s ../../tools/lint/hooks.py .git/hooks/pre-push
要启用 pre-commit git 钩子,请运行以下命令:
$ ln -s ../../tools/lint/hooks.py .git/hooks/pre-commit
请注意,符号链接将被解释为 .git/hooks/../../tools/lint/hooks.py
。
自动修复 Lint 错误¶
Mozlint
具有尽力而为修复 Lint 错误的功能。
$ ./mach lint --fix
并非所有 Lint 工具都支持修复,即使支持修复的工具通常也无法修复所有类型的错误。任何无法自动修复的错误,都将像往常一样打印到标准输出。在这种情况下,您也可以手动修复错误。
$ ./mach lint --edit
这需要定义 $EDITOR 环境变量。对于大多数编辑器,这将简单地依次打开每个包含错误的文件。对于 vim(或 neovim),这将在 快速修复列表 中填充错误。
--fix
和 --edit
参数可以组合使用,在这种情况下,任何可以自动修复的错误都将被修复,其余错误将使用您的 $EDITOR 打开。
编辑器集成¶
注意
请参阅有关 如何在此处设置编辑器 的详细信息。
强烈建议使用编辑器集成进行 Lint 检查,因为它们可以让你实时查看错误,并帮助你及时解决问题,避免在编译或运行测试时出现错误。
尽管 mozilla-central 目前没有提供 ./mach lint 的集成,但我们使用的一些主要 Lint 工具提供了各种集成。