如何运行检查¶
在 Flake8 2.x, Flake8 委托检查运行到pep8。在3.0中 Flake8 承担责任。这使得处理 --jobs
参数(使用 multiprocessing
)并简化了并发出错时的回退。在最底层我们有一个 FileChecker
. 实例 FileChecker
是为 each 要分析的文件 Flake8 . 每个实例都有一个在setuptools中注册的所有插件的副本 flake8.extension
入口点组。
这个 FileChecker
实例由的实例管理 Manager
. 这个 Manager
使用实例句柄创建子进程 multiprocessing
如果出现操作系统级错误,则返回到串行运行检查。创建时 FileChecker
实例 Manager
负责确定特定文件是否已被排除。
正在处理文件¶
不幸的是,自从 Flake8 接管了pep8/pycodestyle运行的check,它还必须接管checker要使用的解析和处理文件。因为它不能重用pycodestyle的功能(因为它没有将处理与检查运行完全分离),所以该功能被隔离到 FileProcessor
班级。我们将几个helper函数移到 flake8.processor
模块(另请参见 Processor Utility Functions )
API引用¶
-
class
flake8.checker.
FileChecker
(filename, checks, options)[源代码]¶ 管理文件的运行检查并聚合结果。
-
process_tokens
()[源代码]¶ 处理令牌和触发器检查。
这会引起
flake8.exceptions.InvalidSyntax
例外情况。与其直接使用,不如使用flake8.checker.FileChecker.run_checks()
.
-
-
class
flake8.checker.
Manager
(style_guide, arguments, checker_plugins)[源代码]¶ 管理每个插件和文件的并行性和检查实例。
该课程将负责以下内容:
测定Flake8的平行度,例如:
我们用什么
multiprocessing
或者是没有?我们是自动决定要使用的作业数量还是用户提供的?
如果遇到与
multiprocessing
组织每个检查器的结果,以便我们可以将输出分组在一起,并使输出具有确定性。
-
run
()[源代码]¶ 运行所有的跳棋。
这将智能地决定是并行运行检查还是串行运行检查。
如果并行运行检查导致问题(例如。,https://gitlab.com/pycqa/flake8/issues/74)这也实现了回退到串行处理。
-
start
(paths=None)[源代码]¶ 开始检查文件。
- 参数
paths (list) -- 要检查的路径名。这是直接传递给
make_checkers()
.
-
class
flake8.processor.
FileProcessor
(filename, options, lines=None)[源代码]¶ 处理文件并保持状态。
它通过生成令牌、逻辑和物理行以及AST树来处理文件。这还提供了一种将文件的状态传递给需要该状态的检查的方法。插件可以请求此对象上的任何公共属性。已知的公共属性包括:
-
blank_before
¶ 前面的空行数
-
blank_lines
¶ 空行数
-
checker_state
¶ 当前检查器状态
-
property
file_tokens
¶ 返回文件的完整令牌集。
访问此属性 may 引发InvalidSyntax异常。
- 加薪
flake8.exceptions.InvalidSyntax
-
generate_tokens
()[源代码]¶ 将文件标记化并生成标记。
- 引发
flake8.exceptions.InvalidSyntax -- 如果A
tokenize.TokenError
生成标记时引发。
-
hang_closing
¶ 为挂起用户提供关闭选项
-
indent_char
¶ 用于缩进的字符
-
indent_level
¶ 当前缩进水平
-
line_number
¶ 文件中的行号
-
logical_line
¶ 当前逻辑线
-
max_doc_length
¶ 用户配置的最大docstring/注释行长度
-
max_line_length
¶ 用户配置的最大线路长度
-
multiline
¶ 当前物理行是否为多行
-
noqa
= False¶ 总是
False
,包括为了兼容性
-
previous_indent_level
¶ 上一级缩进
-
previous_logical
¶ 上一逻辑行
-
previous_unindented_logical_line
¶ 上一个未插入的(即顶层)逻辑行
-
should_ignore_file
()[源代码]¶ 检查是否
flake8: noqa
在要忽略的文件中。- 返回
如果行匹配,则为True
defaults.NOQA_FILE
,否则为False- 返回类型
-
statistics
¶ 统计字典
-
tokens
¶ 当前令牌集
-
total_lines
¶ 文件中的总行数
-
verbose
¶ 8级冗长
效用函数¶
-
flake8.processor.
expand_indent
(line)[源代码]¶ 返回缩进量。
选项卡扩展到8的下一个倍数。
>>> expand_indent(' ') 4 >>> expand_indent('\t') 8 >>> expand_indent(' \t') 8 >>> expand_indent(' \t') 16