跳转到主要内容

智能行长度验证的Flake8插件。

项目描述

flake8-length

Flake8插件用于智能行长度验证。

pycodestyle检查器(默认情况下由Flake8在内部使用)已经具有E501W505规则来验证行长度。flake8-length提供了一个更智能、更宽容的替代检查。

允许的内容

  • 长字符串字面量。
  • 字符串和注释中的长URL。
  • 当文本中的最后一个单词不适合一行时。

动机

来自Linux代码风格

超过80列的语句将被分成有意义的块,除非超出80列显著提高了可读性且没有隐藏信息。<...>然而,永远不要分割用户可见的字符串,如printk消息,因为这会破坏它们被grep搜索的能力。

我看到很多Python代码仅仅因为要将长文本消息放入项目的行限制而进行一些糟糕的分割。然而,这造成了很多困难

  1. 难以grep。
  2. 容易在字符串分割时遗漏空格。
  3. 这根本不会使代码更易于阅读,甚至还会降低可读性。在大多数情况下,我并不介意错误信息的结尾是否超出了我的屏幕。

一些现代语言甚至没有这个限制

Go 没有行长度限制。无需担心穿孔卡片会溢出。

然而,为了引导开发人员并保持对齐合理,保持一些限制是有意义的。

Uncle Bob 分析了某些流行 Java 项目的行长度。结论是平均约为 45,超过 97 就太多了,属于例外。

Raymond Hettinger 建议保持在 90 左右。限制应该是 90,但在断行会负面影响可读性的情况下,应有合理的例外。

Kevlin Henney 说即使是 80 也太慷慨了。人们是按照一行一行的上下流动阅读代码的,而长行会打断这种流动,使得代码更难以阅读。

如果你曾经不得不打破文本消息以适应限制,你就知道这个插件为什么存在了。

如果你想要尽可能严格的限制,flake8-length 就站在你这边。设置 90 个字符的限制,并有一些合理的例外,比所有内容的 120 或更多字符的限制要好。

安装

安装

python3 -m pip install --user flake8-length

并检查插件是否被 flake8 识别

flake8 --version

如果不行,flake8-length 是安装在了 flake8 之外的另一个 Python 解释器中。你可以找到正确的那个。

head -1 $(which flake8)

使用方法

  • 如果你在同一个环境中安装了 flake8-length 和 flake8,当运行 flake8 时,它会运行该插件。只管试试。
  • pycodestyle 对行长度有一些硬限制(E501W505),因此应该禁用这些检查,以避免与 flake8-length 冲突。
  • 默认的软限制是通过使用 max-line-length 选项设置的。默认为 79。

配置示例(《setup.cfg》)

[flake8]
extend-ignore =
    E501,
    W505
max-line-length = 90

你应该使用什么限制?我会说,尽可能小。试着从默认的(79)开始,如果你觉得不够,再扩展到 90。更大就太慷慨了。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

flake8-length-0.3.1.tar.gz (9.4 kB 查看哈希)

上传时间

构建分布

flake8_length-0.3.1-py3-none-any.whl (7.0 kB 查看哈希)

上传时间 Python 3

由以下机构支持