保证软件质量的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第三方库


热门话题
OSX中的macos Java编译问题   java有人能解释这个链表空指针异常吗?   javahive:如何计算时差   斐波那契练习中的java堆错误   java中带密钥的Caesar密码   java在一个jsp文件中创建多个表单。必须始终设置模型属性吗?   自定义注释中的Java int数组   java如何输出对象   java有没有办法在安卓应用程序代码中加载txt文件而不将其写入安卓设备?   JAVAutil。NoTouchElementException错误,扫描。下一个问题   java SpringBoot:REST endpint中@RequestParam参数的自定义验证   无getter/setter/toString/constructor的清晰代码的java Lombok替代方案   java xjc如何确定用于生成类的包?   eclipse如何获取当前选定安装的JRE的位置?   java为什么函数“display()”会自动放置在构造函数中   我在安卓应用程序上发送的图像的java黑色背景   java在异常处理结束并正确执行后,开关代码将在一个永无止境的循环中执行。   java图像处理程序中的多线程