python - python: pycodestyle (ex pep8) vs pylint 严格性
问题描述
我有一个python
项目要检查PEP8
一致性。
我setyp.cfg
的如下:
[pycodestyle]
count = True
ignore = E266, W504
max-line-length = 80
statistics = True
exclude = .venv,./build%
经过一些清理后,我的pycodestyle
检查现在没有错误或警告(当然忽略的那些)
~/Workspace/my-app master ✔ 2h36m
➢ pycodestyle .
(.venv)
~/Workspace/my-app master ✔
但是,pylint
针对我的项目运行会产生大量错误:
(其中一些仅用于演示目的)
************* Module somemodule.commands
src/somemodule/commands.py:98:0: C0330: Wrong continued indentation (add 16 spaces).
format(gcp_project)))
^ | (bad-continuation)
src/somemodule/commands.py:1:0: C0111: Missing module docstring (missing-docstring)
src/somemodule/commands.py:21:-1: W0105: String statement has no effect (pointless-string-statement)
src/somemodule/commands.py:29:4: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
src/somemodule/commands.py:45:4: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
src/somemodule/commands.py:41:16: W0613: Unused argument 'g_project' (unused-argument)
src/somemodule/commands.py:58:0: C0111: Missing function docstring (missing-docstring)
src/somemodule/commands.py:59:4: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
src/somemodule/commands.py:100:4: R1705: Unnecessary "else" after "return" (no-else-return)
src/somemodule/commands.py:102:8: C0103: Variable name "p2" doesn't conform to snake_case naming style (invalid-name)
src/somemodule/commands.py:123:4: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
src/somemodule/commands.py:139:0: C0111: Missing function docstring (missing-docstring)
src/somemodule/commands.py:2:0: C0411: standard import "import os" should be placed before "import click" (wrong-import-order)
src/somemodule/commands.py:3:0: C0411: standard import "import sys" should be placed before "import click" (wrong-import-order)
src/somemodule/commands.py:5:0: C0411: standard import "from subprocess import Popen, PIPE" should be placed before "import click" (wrong-import-order)
这两种工具怎么会产生如此不同的结果?
解决方案
我只是偶然发现了这个问题,比较pycodestyle
和pylint
我自己。
简而言之,答案pycodestyle
是pylint
. 让我从基本的 python 工具中引用一些东西:
- Pycodestyle(以前的 PEP8)是官方的 linter 工具,用于根据 PEP8 python 的样式约定检查 python 代码。
- Pylint 是一个 python linter,它检查源代码并充当错误和质量检查器。它具有更多的验证检查和选项,而不仅仅是 PEP8(Python 样式指南)。
- 这是python中最常用的linting工具。
- 它包括以下功能:
- 检查每行的长度
- 根据项目的编码标准检查变量名称是否格式正确
- 检查声明的接口是否真正实现。
- ...
推荐阅读
- c - 从用户空间读取路由表
- html - CSS:使父div与子div完全(以像素为单位)高度相同
- deployment - 以 RTF(Runtime Fabric) 按需方式部署 mule 应用程序
- java - android.net.VPNServicec 不是封闭类
- python - STOP/Emit 信号 TO QRunnable
- c - 函数 swapNode 在双向链表中不起作用
- c# - c# unity 3d坐标地图同步
- java - Java jstack 示例指向右括号而不是代码行
- c# - 列表
用于在内容控件上打印表格 - java - Resilience4j:将 Bulkhead 与 TimeLimiter 相结合,以实现来自 Tomcat 的同步外部系统调用