在本地运行 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 工具提供了各种集成。