字符串格式检查器,flake8插件
flake8-string-format的Python项目详细描述
用于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 | |
P101 | format string does contain unindexed parameters |
P102 | docstring does contain unindexed parameters |
P103 | other string does contain unindexed parameters |
Missing values in the parameters | |
P201 | format call uses to large index (INDEX) |
P202 | format call uses missing keyword (KEYWORD) |
P203 | format call uses keyword arguments but no named entries |
P204 | format call uses variable arguments but no numbered entries |
P205 | format call uses implicit and explicit indexes together |
Unused values in the parameters | |
P301 | format call provides unused index (INDEX) |
P302 | format call provides unused keyword (KEYWORD) |
操作
插件将遍历所有的bytes、str和unicode实例。如果 它在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的单独错误代码