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)¶
- 异常 mozlint.errors.LinterParseError(path, message)¶
- 异常 mozlint.errors.LintersNotConfigured¶
- 异常 mozlint.errors.NoValidLinter¶
mozlint.parser 模块¶
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.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)¶
- 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>}¶
类型字符串与其关联实例的映射。