字符串格式检查器,flake8插件

flake8-string-format的Python项目详细描述


Build StatusCoverage StatusPypi Entry

用于Flake8检查 使用str.format的字符串和参数。它检查所有字符串 对不支持的隐式索引使用带编号的参数 Python2.6。

'…'.format(…)的所有实例中,它还将检查是否存在 给出了足够的参数。如果format调用使用变量参数,它将 检查是否存在正确类型的参数。

独立脚本

检查器可以直接使用:

$ python -m flake8_string_format some_file.py
some_file.py:1:1: P101 format string does contain unindexed parameters

即使flake8仍在独立模式下使用optparse此脚本 正在使用argparse

flake8的插件

当flake8和flake8-string-format都被安装时,插件 在flake8

中提供
$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

这个插件支持flake8 2.6和flake8 3.0。旧版本或新版本 可能也有支持,但没有经过测试。

通过--ignore,可以忽略未编制索引的参数:

$ flake8 some_file.py
...
some_file.py:1:1: P101 format string does contain unindexed parameters

$ flake8 --ignore P101 some_file.py
...

参数

此模块不添加任何其他参数。独立版本也 模拟flake8的忽略参数。

错误代码

此插件使用以下错误代码:

Presence of implicit parameters
P101format string does contain unindexed parameters
P102docstring does contain unindexed parameters
P103other string does contain unindexed parameters
Missing values in the parameters
P201format call uses to large index (INDEX)
P202format call uses missing keyword (KEYWORD)
P203format call uses keyword arguments but no named entries
P204format call uses variable arguments but no numbered entries
P205format call uses implicit and explicit indexes together
Unused values in the parameters
P301format call provides unused index (INDEX)
P302format call provides unused keyword (KEYWORD)

操作

插件将遍历所有的bytesstrunicode实例。如果 它在python 3上遇到了bytes实例,它将使用ascii和 如果失败,它将跳过该条目。

字符串基本上分为三种类型,分别对应于p1xx 范围。只有格式字符串可以导致所有错误,而任何其他字符串都可以 只会导致相应的p1xx错误。

对于这个插件,所有字符串都是模块的第一个表达式,或者 在函数或类定义被视为docstring之后。

如果对字符串使用format方法,或者对字符串使用str.format。 作为第一个参数,它将把它看作一个格式字符串并分析 调用的参数。如果该调用使用变量参数,则不能 发出p201和p202,因为丢失的条目可能隐藏在这些变量中 论据。仍然可以检查p301和p302中定义的任何参数 静态的。

python 2.6支持

Python2.6仅部分受支持,因为它使用Python的功能 格式化字符串。因此,如果字符串包含隐式参数,则 在Python2.6上作为参数检测,因此不会导致任何p1xx错误。 但当不使用变量参数时,它仍然可能导致错误p301。

因此,如果希望python 2.6兼容,那么隐式参数不是 允许,此插件不会导致误报。

更改

0.2.3-2016年7月27日

  • 使用flake8正确注册,因此默认情况下将在flake8 3.x上选择它 可在flake8 2.x上选择。

0.2.2-2016年5月29日

  • 不要检查除docstring之外的简单表达式,因为它们不能 无论如何都可以访问。
  • 在Python3.5中正确地断言带星号的参数。只有最后一个元素必须是 如果varargs存在而不是完整列表,则为vararg。
  • 在Python3.4.2上输出正确的列偏移量,因为它使用了错误的偏移量 内部通话。

0.2.1-2015年9月20日

  • 支持str.format("…", …)调用,并像"…".format(…)
  • 那样处理它们

0.2.0-2015年9月12日

  • 它不使用正则表达式,而是尝试使用python的解析器来解析它
  • 现在也可以使用此结果来验证是否提供了足够的参数
  • 有限的Python2.6支持

0.1.0-2015年9月10日

  • 在所有字符串中检测未编制索引的参数
  • docstrings的单独错误代码

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
json到bson转换中的java性能问题   java设置一个内部接口。用于GUI的txt文件,并从中检索文本。txt文件   java Android系统GUI事件监听器   java此方法必须返回int类型的结果?   xmpp中无法识别java登录方法   java这个伞状异常的原因是什么   JAVA木卫一。IOException:无法删除原始文件   java找出循环依赖项的路径   排序java ArrayList合并排序   java使用StAX读取所有文本元素   java规则可能会被忽略   java如何在Arraylist中查找具有多个属性的对象?   java RecyclerView行在插入项目时闪烁/闪烁   java在表中选择行时更改文本框中的文本