mozlint 包

子包

子模块

mozlint.cli 模块

class mozlint.cli.MozlintParser(**kwargs)

基类: ArgumentParser

arguments = [[['paths'], {'default': None, 'help': "要检查的文件或目录的路径,例如'browser/components/loop'或'mobile/android'。如果未提供,则默认为根据--outgoing和--workdir更改的文件。", 'nargs': '*'}], [['-l', '--linter'], {'action': 'append', 'default': [], 'dest': 'linters', 'help': "要运行的代码检查器,例如'eslint'。默认情况下,所有适合的文件都会运行所有检查器。"}], [['--list'], {'action': 'store_true', 'default': False, 'dest': 'list_linters', 'help': '列出所有可用的代码检查器并退出。'}], [['-W', '--warnings'], {'choices': ['soft'], 'const': True, 'dest': 'show_warnings', 'help': '除了错误之外,还要显示并报告警告。--warnings=soft可以用来报告警告,但只在出现错误时才失败。', 'nargs': '?'}], [['-v', '--verbose'], {'action': 'store_true', 'default': False, 'dest': 'show_verbose', 'help': '启用详细日志。'}], [['-f', '--format'], {'action': 'append', 'dest': 'formats', 'help': "要使用的格式化程序。默认为标准输出的'stylish'。您可以指定一个可选的路径作为--format formatter:path,它将被用来代替标准输出。您也可以同时使用多个格式化程序。可用的格式化程序:compact、json、stylish、summary、treeherder、unix。"}], [['-n', '--no-filter'], {'action': 'store_false', 'default': True, 'dest': 'use_filters', 'help': '忽略所有过滤。这对于快速测试一个否则不会运行的目录很有用,而无需修改配置文件。'}], [['--include-third-party'], {'action': 'store_true', 'default': False, 'dest': 'include_third-party', 'help': '也对第三方代码运行代码检查器。'}], [['-o', '--outgoing'], {'const': True, 'help': '检查未在远程存储库上的提交所触及的文件。如果没有任何参数,则会找到默认的远程存储库,将会被推送到该存储库。远程分支也可以手动指定。适用于 Mercurial 或 Git。', 'nargs': '?'}], [['-w', '--workdir'], {'choices': ['staged', 'all'], 'const': 'all', 'help': '检查工作目录中更改所触及的文件(即尚未提交)。在 Git 上,--workdir=staged 可以用来只考虑暂存的文件。适用于 Mercurial 或 Git。', 'nargs': '?'}], [['-r', '--rev'], {'default': None, 'help': '检查版本 REV 中更改所触及的文件。对于 Mercurial,它可以是任何版本集。对于 Git,它是一个单一的树状结构。', 'type': <class 'str'>}], [['--fix'], {'action': 'store_true', 'default': False, 'help': '如果可能,修复代码检查错误。任何无法修复的错误都将像往常一样打印。'}], [['--edit'], {'action': 'store_true', 'default': False, 'help': '包含代码检查错误的每个文件都将在 $EDITOR 中依次打开。'}], [['--setup'], {'action': 'store_true', 'default': False, 'help': '引导代码检查器依赖项,而不运行任何代码检查器。'}], [['-j', '--jobs'], {'default': None, 'dest': 'num_procs', 'help': '运行代码检查器时要生成的 worker 进程数。默认为 CPU 中的核心数。', 'type': <class 'int'>}], [['--config-path'], {'action': 'append', 'default': [], 'dest': 'config_paths', 'help': '==SUPPRESS=='}], [['--check-exclude-list'], {'action': 'store_true', 'default': False, 'dest': 'check_exclude_list', 'help': '对排除列表中的所有路径运行代码检查器。'}], [['extra_args'], {'help': '将转发到底层代码检查器的额外参数。', 'nargs': '...'}]]
parse_known_args(*args, **kwargs)
validate(args)
mozlint.cli.find_linters(config_paths, linters=None)
mozlint.cli.get_exclude_list_output(result, paths)
mozlint.cli.main() int
mozlint.cli.run(paths, linters, formats, outgoing, workdir, rev, edit, check_exclude_list, setup=False, list_linters=False, num_procs=None, virtualenv_manager=None, setupargs=None, **lintargs)

mozlint.editor 模块

mozlint.editor.edit_issues(result)
mozlint.editor.get_editor()

mozlint.errors 模块

异常 mozlint.errors.LintException

基类:Exception

异常 mozlint.errors.LinterNotFound(path)

基类:LintException

异常 mozlint.errors.LinterParseError(path, message)

基类:LintException

异常 mozlint.errors.LintersNotConfigured

基类:LintException

异常 mozlint.errors.NoValidLinter

基类:LintException

mozlint.parser 模块

mozlint.parser.Parser(root)

基类:object

读取并验证 lint 配置文件。

parse(path)

读取 linter 并返回其 LINTER 定义。

参数:

path – linter 的路径。

返回值:

linter 定义列表 ([dict])

引发:

LinterNotFound, LinterParseError

required_attributes = ('name', 'description', 'type', 'payload')

mozlint.pathutils 模块

mozlint.pathutils.FilterPath(path)

基类:object

辅助类,用于更轻松地比较和匹配文件路径。

contains(other)

如果 other 是 self 的子目录或等于 self,则返回 True。

属性 exists
属性 ext
属性 finder
属性 isdir
属性 isfile
join(*args)
match(patterns)
mozlint.pathutils.ancestors(path)
mozlint.pathutils.collapse(paths, base=None, dotfiles=False)

给定一个路径的迭代器,将它们折叠成包含原始集的最小子集路径(不包含任何额外路径)。

例如,如果目录“a”包含两个文件 b.txt 和 c.txt,则调用

collapse([‘a/b.txt’, ‘a/c.txt’])

返回 [‘a’]。但是,如果还存在第三个文件 d.txt,则它将返回 [‘a/b.txt’, ‘a/c.txt’],因为 [‘a’] 也将包含该额外文件。

参数:

paths – 要折叠的路径(文件和目录)的迭代器。

返回值:

包含原始路径集且仅包含原始路径集的最小子集路径(文件和目录)。

mozlint.pathutils.expand_exclusions(paths, config, root)

返回与模式匹配且未排除的所有文件。

这由一些接收“批处理”文件(例如目录)但无法应用自身排除项的外部 linter 使用。有一个论点认为,此步骤应该适用于所有 linter,无论如何。

参数:
  • paths (list) – 要 lint 的候选路径列表。

  • config (dict) – Linter 的配置对象。

  • root (str) – 存储库的根目录。

返回值:

生成器,生成未排除的路径列表。

mozlint.pathutils.filterpaths(root, paths, include, exclude=None, extensions=None, exclude_extensions=None)

过滤路径列表。

给定一个路径列表和一些过滤规则,返回应该 lint 的路径集。请注意,最多应提供 extensions 或 exclude_extensions 中的一个(即不应同时提供两者)。

参数:
  • paths – 可能要 lint 的路径的起始列表。

  • include – 应该包含的路径列表(必需)。

  • exclude – 应该排除的路径列表(可选)。

  • extensions – 应该考虑的文件扩展名列表(可选)。

  • exclude_extensions – 不应该考虑的文件扩展名列表(可选)。

返回值:

包含要 lint 的文件路径列表和要排除的路径列表的元组。

mozlint.pathutils.findobject(path)

给定表单为 <modulepath>:<objectpath> 的路径,查找 Python 对象。在概念上等同于

def find_object(modulepath, objectpath)

import <modulepath> as mod return mod.<objectpath>

mozlint.pathutils.get_ancestors_by_name(name, path, root)

返回在path的祖先中名为name的文件列表,按从近到远排序。这对于查找相关的配置文件很有用。

mozlint.result 模块

mozlint.result.Issue(*, linter, path, lineno=None, column=None, message, hint=None, source=None, level=None, rule=None, lineoffset=None, diff=None)

基类:object

表示单个 lint 问题及其相关元数据。

参数:
  • linter – 标记此错误的 linter 的名称

  • path – 包含错误的文件的路径

  • message – 描述错误的文本

  • lineno – 包含错误的行号

  • column – 包含错误的列

  • level – 错误的严重程度,可以是“warning”或“error”(默认为“error”)

  • 提示 – 用于修复错误的建议(可选)

  • 源代码 – 错误的源代码上下文(可选)

  • 规则 – 被违反的规则名称(可选)

  • 行偏移 – 表示错误跨越多行,格式为(<行号偏移>,<行数>)(可选)

  • 差异 – 描述需要对代码进行的更改的差异

column
diff
hint
level
lineno
lineoffset
linter
message
path
relpath
rule
source
class mozlint.result.IssueEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)

基类:JSONEncoder

用于将Issue编码为json的类。

用法

json.dumps(results, cls=IssueEncoder)
default(o)

在子类中实现此方法,使其为o返回一个可序列化的对象,或调用基实现(引发TypeError)。

例如,要支持任意迭代器,可以像这样实现default

def default(self, o):
    try:
        iterable = iter(o)
    except TypeError:
        pass
    else:
        return list(iterable)
    # Let the base class default method raise the TypeError
    return JSONEncoder.default(self, o)
class mozlint.result.ResultSummary(root, fail_on_warnings=True)

基类:object

表示整个lint运行的整体结果状态。

property failed
has_issues_failure()

如果在lint运行期间检测到问题,则返回true。如果self.fail_on_warnings设置为False,则不考虑警告问题。

reset()
property returncode
root = None
property total_fixed
property total_issues
property total_suppressed_warnings
update(other)

将另一个ResultSummary的结果合并到此结果中。

mozlint.result.from_config(config, **kwargs)

从linter配置创建Issue

从linter配置提取默认值并转发它们的便捷方法。

参数:
  • 配置 – 在.yml文件中定义的linter配置

  • kwargs – 与Issue相同

返回值:

Issue对象

mozlint.roller 模块

class mozlint.roller.InterruptableQueue(*args, **kwargs)

基类:Queue

一个multiprocessing.Queue,当工作线程阻塞在它上面时捕获KeyboardInterrupt并返回None。

这对于在工作线程阻塞在ProcessPoolExecutor的调用队列上时优雅地处理KeyboardInterrupts是必要的。

get(*args, **kwargs)
class mozlint.roller.LintRoller(root, exclude=None, setupargs=None, **lintargs)

基类:object

注册和运行linter。

参数:
  • 根目录 – 相对路径将连接到的路径。如果未指定,根目录将从版本控制或cwd确定。

  • lintargs – 传递给底层linter的参数。

MAX_PATHS_PER_JOB = 50
read(paths)

解析一个或多个linter并将它们添加到注册表中。

参数:

路径 – linter定义的路径或路径的迭代。

roll(paths=None, outgoing=None, workdir=None, rev=None, num_procs=None)

对指定的文件路径运行所有已注册的linter。

参数:
  • 路径 – 要lint的文件和/或目录的迭代。

  • 外出 – 提交修改过的但不在远程存储库上的lint文件。

  • 工作目录 – lint工作目录中所有修改过的文件。

  • num_procs – 要使用的进程数。默认值:CPU 数量

返回值:

一个ResultSummary实例。

setup(virtualenv_manager=None)

运行适用于linter的设置

should_lint_entire_tree(vcs_paths: Set[str], linter: Dict) bool

如果linter应该在整个树上运行,则返回True

mozlint.roller.wrap_futures_atexit()

有时futures’ atexit处理程序会输出跟踪回溯。此包装器会抑制它们。

mozlint.types 模块

class mozlint.types.BaseType

基类:object

所有类型linter的抽象基类。

batch = False
class mozlint.types.ExternalFileType

基类:ExternalType

batch = False
class mozlint.types.ExternalType

基类:BaseType

运行外部函数的 Lint 类型。

该函数负责将结果正确格式化为 Issue 对象列表。

batch = True
class mozlint.types.GlobalType

基类:ExternalType

仅运行一次外部全局 lint 函数的 Lint 类型。

该函数负责将结果正确格式化为 Issue 对象列表。

batch = True
class mozlint.types.LineType

基类:BaseType

用于逐行检查 Lint 类型的抽象基类。

此 Lint 类型的子类将读取每个文件,并逐行检查提供的有效负载。

abstract condition(line, config)
class mozlint.types.LintHandler(config)

基类:LogHandler

lint(data)
class mozlint.types.RegexType

基类:LineType

检查是否找到正则表达式匹配的 Lint 类型。

condition(payload, line, config)
class mozlint.types.StringType

基类:LineType

检查是否找到子字符串的 Lint 类型。

condition(payload, line, config)
class mozlint.types.StructuredLogType

基类:BaseType

batch = True
mozlint.types.supported_types = {'external': <mozlint.types.ExternalType object>, 'external-file': <mozlint.types.ExternalFileType object>, 'global': <mozlint.types.GlobalType object>, 'regex': <mozlint.types.RegexType object>, 'string': <mozlint.types.StringType object>, 'structured_log': <mozlint.types.StructuredLogType object>}

类型字符串与其关联实例的映射。

模块内容