Pants项目和其用户使用的各种Flake8代码检查。
项目描述
flake8-pantsbuild
此Flake8插件提供了一些Pants项目和其用户使用的自定义代码检查。
目录
安装
如果与Pants一起使用,请将以下内容添加到您的pants.toml
[GLOBAL]
backend_packages2.add = ["pants.backend.python.lint.flake8"]
[flake8]
extra_requirements.add = ["flake8-pantsbuild"]
如果在不使用Pants的情况下使用Flake8,请使用以下命令安装
$ pip install flake8-pantsbuild
支持的Python版本
此插件与Python 3.6+兼容。
如果您需要支持 Python 2.7 或 Python 3.5,请安装 flake8-pantsbuild==1.*
并参考 https://github.com/pantsbuild/flake8-pantsbuild/blob/1.x/README.md 中的 README。
用法
如果与 Pants 一起使用,请像往常一样运行 ./pants lint file.py
。
如果不使用 Pants,请像往常一样运行 flake8 file.py
。
错误代码
错误代码 | 描述 | 备注 |
---|---|---|
PB10 | 使用破坏继承的类属性 | |
PB11 | 在逻辑运算符的左侧使用常量 | |
PB12 | 在 and 运算符的右侧使用常量 | |
PB13 | 使用 open 而不使用 with 语句(上下文管理器) |
|
PB20 | 检查 2 个空格缩进 | 默认禁用¹ |
PB30 | 使用斜杠而不是括号进行行续行 | 默认禁用² |
¹ 要启用 PB20
缩进 lint,请设置 --enable-extensions=PB20
。您需要通过 --extend-ignore=E111
禁用 E111
(检查 4 个空格缩进)。您可能还想禁用 E121
、E124
、E125
、E127
和 E128
。
² 要启用 PB30
后续斜杠 lint,请设置 --enable-extensions=PB30
。
从lint.pythonstyle
迁移到flake8
lint.pythonstyle
是来自 pants.contrib.python.checks
插件的自定义 Pants 任务,其行为类似于 Flake8,但通常不如更受欢迎的 Flake8。
工具之间的区别
Pants 的 lint.pythonstyle
任务运行 pycodestyle
和 pyflakes
,并提供几个自定义 lint。
相比之下,Flake8 运行 pycodestyle
和 pyflakes
,但它还使用 mccabe
检查代码中的复杂部分,并且它 添加了自己的 lint。Flake8 默认不包含任何自定义 lint.pythonstyle
lint,但下表显示了如何保留您想要的任何 lint。
Flake8 有数百个插件,您可以轻松将其添加到 Pants 中。请参阅 Awesome Flake8 Extensions 以获取插件的精选列表。
迁移步骤
首先,按照 安装说明 将 Flake8 连接到 Pants。然后,通过从您的 pants.toml
中删除 pants.contrib.python.checks
来禁用 lint.pythonstyle
。
然后,通过运行 ./pants lint file.py
运行 Flake8(请参阅 用法)。
您第一次运行 ./pants lint
时,可能会因为与 lint.pythonstyle
的差异而有几个错误。我们建议首先在 禁用 这些错误的一个 .flake8
配置文件。将此添加到您的 pants.toml
以确保 Pants 使用该配置
[flake8]
config = "path/to/.flake8"
如果您想保留来自 lint.pythonstyle
的任何自定义 lint,请参阅下表。您需要通过将以下内容添加到您的 pants.toml
来安装额外的插件
[flake8]
extra_requirements.add = [
"flake8-pantsbuild",
"pep8-naming",
"flake8-import-order",
# and so on...
]
自定义代码检查的替代方案
旧代码 | 旧选项范围 | 描述 | 替代方案 |
---|---|---|---|
T000 | pycheck-variable-names | 类名必须是 UpperCamelCase |
pep8-naming Flake8 插件 |
T001 | pycheck-variable-names | 类全局变量必须是 UPPER_SNAKE_CASED |
pep8-naming Flake8 插件 |
T002 | pycheck-variable-names | 函数名必须是 lower_snake_cased |
pep8-naming Flake8 插件 |
T100 | pycheck-indentation | 强制执行 2 个空格缩进 | PB20 ¹ |
T200 | pycheck-trailing-whitespace | 尾随空格 | Flake8 的 W291 |
T201 | pycheck-trailing-whitespace | 使用斜杠而不是括号进行行续行 | PB30 ¹ |
T301 | pycheck-newlines | 类方法之间应有 1 个空行 | Flake8 的 E301 和 E303 |
T302 | pycheck-newlines | 顶层定义之间应有 2 个空行 | Flake8 的 E302 和 E303 |
T400 | pycheck-import-order | 不允许使用通配符导入 | isort 或 flake8-import-order 插件² |
T401 | pycheck-import-order | from 导入未正确排序 |
isort 或 flake8-import-order 插件² |
T402 | pycheck-import-order | import 应该一次只导入一个模块 |
isort 或 flake8-import-order 插件² |
T403 | pycheck-import-order | 在一个语句中导入多种模块类型 | isort 或 flake8-import-order 插件² |
T404 | pycheck-import-order | 无法分类的导入 | isort 或 flake8-import-order 插件² |
T405 | pycheck-import-order | 导入块包含多种模块类型 | isort 或 flake8-import-order 插件² |
T406 | pycheck-import-orde | 导入语句顺序错误 | isort 或 flake8-import-order 插件² |
T601 | pycheck-except-statement | 使用旧式的 except 语句而不是 as 关键字 |
PB61 ³ |
T602 | pycheck-future-compat | 使用 iteritems 、iterkeys 或 itervalues |
PB62 ³ |
T603 | pycheck-future-compat | 使用 xrange |
PB63 ³ |
T604 | pycheck-future-compat | 使用 basestring 或 unicode |
PB64 ³ |
T605 | pycheck-future-compat | 使用与 Python 3 不兼容的元类 | PB65 ³ |
T606 | pycheck-new-style-classes | 发现 Python 2 的旧式类(没有继承 object ) |
PB66 ³ |
T607 | pycheck-print-statements | 使用 print 语句,而不是 print 函数 |
PB60 ³ |
T800 | pycheck-class-factoring | 使用破坏继承的类属性 | PB10 |
T801 | pycheck-variable-names | 覆盖内置名称 | flake8-builtins 插件 |
T802 | pycheck-context-manager | 使用 open 而不使用 with 语句(上下文管理器) |
PB13 |
T803 | pycheck-except-statement | 使用通配符 except: |
Flake8 的 E722 |
T804 | pycheck-constant-logic | 在逻辑运算符的左侧使用常量 | PB11 |
T805 | pycheck-constant-logic | 在 and 运算符的右侧使用常量 | PB12 |
¹ 此 lint 默认禁用。有关启用此 lint 的说明,请参阅上面的部分 错误代码
。
² 要将 isort
与 Pants 一起使用,请在您的 pants.toml
中设置 backend_packages2.add = ["pants.backend.python.lint.isort"]
。
³ 由于 2.x
版本不再支持 Python 2,因此此插件的 PB6*
lints 仅适用于 1.x
版本系列。请参阅https://github.com/pantsbuild/flake8-pantsbuild/blob/1.x/README.md#error-codes 中的说明,了解如何使用此插件。
开发
我们使用 tox 进行测试自动化。要运行测试套件,请调用 tox。
$ tox
您可以使用 tox -e
运行某些环境(运行 tox -a
以查看所有选项)。
$ tox -e format-run
$ tox -e typecheck
$ tox -e py36
您还可以通过以下方式手动测试使用此插件的 PEX:[链接]
$ pex flake8 . --entry-point flake8 --output-file flake8.pex
$ vim example.py # add whatever content you want
$ ./flake.pex example.py
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
flake8-pantsbuild-2.0.0.tar.gz 的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b72558db6d718c33f4410eff80f7afc2bc0300190a733d92b3cf05b231c2450 |
|
MD5 | 52cb2b92d7ca24ff9b584ac39f756b79 |
|
BLAKE2b-256 | 41a7c8f796a5856e019e030035c0fc12d561ae27638b38c49a7128a8956f418a |
flake8_pantsbuild-2.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d45cf26a55fe7d66de944a6c93b64456852cfd3a7bea81640553081469129e7 |
|
MD5 | 9960a906756c22f7b8e26b45aff60afa |
|
BLAKE2b-256 | acbd96927daa8c58b14da8c6c4809c028d5a21eb9cb4e0cf887447c45898a4df |