保证软件质量的lint

ebb-lint的Python项目详细描述


落棉

这是一个 flake8 插件! 这是皮棉的风格问题! 要激活它:

$ pip install ebb-lint

配置

配置只会导致错误或松懈, 因此,建议保持默认值不变。 然而, 有两个配置选项可用于处理长行。 两者都可以指定 在命令行上,通过向flake8传递标志, 或者使用典型的配置方法

< DL>
最大硬线长度
行不能超过此值。 默认为119列。
允许体积百分比
行可以超过 最大行长度 (被认为是"软限制") 仅当行包含大于或等于此百分比的字符串文本 注释时, 但两者的比例并没有加在一起。 默认值为67%。 有关更多详细信息,请参见有关长线的章节

在编写一次性脚本时, 要根据落潮的愿望使用打印, 在文件顶部添加注释以禁用该警告:

# I sincerely swear that this is one-off code.

此注释必须位于代码中任何语句的上方 (包括docstrings) 单独在一条线上。

核质量保证

ebb lint 以极端偏见禁用 \noqa 注释。 功能被过度使用和过度通用; 不能只将某些错误标记为可接受, 因此, 标记为 noqa 的行有可能完全掩盖一个不同的错误。

错误

所有可能的错误, 按类别组织:

多行文档字符串必须类似于此:

def func():
    """
    Spam eggs.

    Also, sausage.
    """
l103
测试文档字符串 (即函数或方法的docstring,其名称以 test开头) 不能以任何形式的词开头 "测试" "验证", 或"确保"
l104
docstrings必须使用拿破仑 不 重新构造文本字段

l2:可疑语法

python的一些特性弊大于利。 这些错误在程序员可能打算做一件事的情况下捕获潜在的问题, 但却不小心做了别的事。

< DL>
L201
容器文本必须在最后一个元素后面有一个尾随逗号。 如果结束符 ] } 与最后一个元素位于同一行, 未发出此错误。
l202
除调试外,不允许打印。 对于生产代码, 日志记录更加灵活和可预测。 这可以在一次性脚本中禁用。
L203
PDB和兼容模块 (即显示 set_trace 函数的模块) 除了调试之外不允许。 如果一个 set_trace 调用被允许进入生产环境, 这可能会阻碍这一过程。
l204

隐式字符串文本连接 (即"垃圾邮件""鸡蛋" 同构于"垃圾邮件" ) 仅当要连接的每个字符串都用括号括起来时才允许使用, 括号中只包含字符串文本。

没关系:

some_string = ('spam {} '
               'eggs').format('spam')

这不是:

some_list = [
    'spam'
    'eggs',
    'sausage',
]
L205
初始化py不允许包含函数或类定义。
l206
不允许隐式相对导入。
L207

pass 仅在不包含其他语句的非可选套件中是必需的。 如果一个套件包含另一个语句, 添加 pass 是多余的。 docstrings算作语句。

非自选套房是, 例如, 定义 , 如果 ,则为 否则 最后 套房是可选的, 因此,这是不必要的:

if predicate():
    do_something()
else:
    pass

try:
    do_something()
finally:
    pass
l208
pokémon异常处理 总是一个错误。 如果要捕获和忽略异常, 显式命名要静默的异常类型。
l209

返回, 删除 升高 断言 打印 (在python 2中,没有打印功能) 产量 , 以及从 是陈述, 不是功能, 因此, 不需要括号。

没关系:

return (
  a
  + b)

这不是:

return(a + b)
l210
而不是故意依赖 地图
过滤器 , 或是一种理解, 写一个明确的for循环。

没关系:

$ pip install ebb-lint
0

这不是:

$ pip install ebb-lint
1
l211
使用带lambda的 map filter 作为第一个参数,通常最好写成列表理解或生成器表达式。 表达式的可读性和可扩展性更强, 更不重要的是, 不不会产生太多的函数调用开销。
l212
使用静态方法总是错误的。 最常见的两种情况是:

  • 想在课堂上做点什么,但没有实例, 在这种情况下, @classmethod 是正确的解决方案。
  • 想要在类上"命名"函数, 但这不是Java, 因此,改为模块范围的函数。

单独使用静态方法不是问题; 这完全可以用于测试:

$ pip install ebb-lint
2

l3:格式化 < DL>
l301
文件必须以尾随的换行符结尾。
l302

线路太长。

大于硬最大行长度的行 (被认为是"硬限制", 默认为119列) 永远不允许。 大于最大线路长度的线路 (被认为是"软限制", 默认为79列) 当且仅当行包含超过一定百分比的字符串文本 注释时才允许。 两者的百分比没有合并。 允许的"特定百分比"是允许的体积百分比, 默认为67%。

对于以下所有示例, 软限制是15列, 硬限制是25列。

不允许,因为, 20个字符, 线路超过软限制, 整行字符数只有15%的字符串文本:

$ pip install ebb-lint
3

允许,因为整行字符数是80%的字符串文本:

$ pip install ebb-lint
4

允许,因为整行按字符计数是75%的注释:

$ pip install ebb-lint
5

不允许,因为整行按字符计数是20%的注释和50%的字符串文本, 而这两个比例都没有达到或超过67%:

$ pip install ebb-lint
6

不允许,因为整行有26个字符, 超过硬限制:

$ pip install ebb-lint
7

可以配置最大硬线长度和允许体积百分比; 请参阅配置部分。

l303
noqa 被忽略, 因此, 应删除NOQA的注释,以减少无意义的噪音。

贡献

请在问题跟踪程序上提交问题,并遵循我们的行为准则。

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

推荐PyPI第三方库


热门话题
java系统。出来打印导致延迟?   java如何使用dasein API连接Azure云(blob存储)   java如何将Jframe cardlayout中的“card”从属于card的Jpanel更改为另一个类?   java如何在单个消息框中显示循环的所有迭代?   java如何设置netbeans保存项目的操作?   java网站的某些选项在web视图中不起作用   java如何在安卓中打开从右到左的菜单滑动条   java更容易反转由静态方法(函数接口)内联创建的比较器?   映射Java HashMap。获取(键)和树形图。获取equals和compareTo方法的(键)用法   java Health endpoints只显示“status:up”,不显示敏感信息   java当我一直按back按钮登录时,字段显示以前插入的用户数据   JTable单元中的java图像显示   go Java vs.Golang for HOTP(rfc4226)   java使用函数链减少分支和清理代码,这有意义吗   java我应该为每个查询创建一个新的DB连接吗?   java推荐的函数调用方法(是否使用CompiledScript?)   java截断分区和地板分区有什么区别?   没有spring引导的java Profile特定属性文件?   异常如何在java中从控制台读取密码?