python pylint
Pylint是高级Python样式强制程序。 而flake8和black将采用“本地”样式:换行发生的位置,注释的格式或发现注释掉的代码或日志格式化中的不良做法等问题。
默认情况下,Pylint具有极强的侵略性。 从检查是否确实实现了声明的接口到重构重复代码的机会,它将为所有问题提供强有力的意见,这对于新用户而言可能很多。 轻轻地将其引入项目或团队的一种方法是先关闭所有检查器,然后逐个启用检查器。 如果您已经使用过flake8,black和mypy,则此功能特别有用: Pylint具有很多功能重叠的检查器。
这些数字可能因项目而异,并且可能取决于开发团队的偏好。 但是,一旦团队就参数达成协议,使用自动化工具强制执行这些参数将非常有用。 这就是Pylint闪耀的地方。
配置Pylint
为了以空配置开始,请使用以下.pylintrc
启动.pylintrc
[MESSAGES CONTROL]
disable=all
这将禁用所有Pylint消息。 由于其中许多是多余的,因此这是有道理的。 在Pylint中, message
是一种特定的警告。
您可以通过运行pylint
来检查是否已关闭所有消息:
$ pylint < my package >
通常,在pylint
命令行中添加参数不是一个好主意:配置pylint
的最佳位置是.pylintrc
。 为了把它做一些有用的东西 ,我们需要启用一些消息。
为了启用消息,请在[MESSAGES CONTROL]
下添加到.pylintrc
。
enable
=
<message>,
...
对于看起来有用的“消息”(Pylint称为不同类型的警告)。 我最喜欢的一些内容包括too-many-lines
too-many-arguments
too-many-branches
。 所有这些都限制了模块或功能的复杂性,并且无需进行人工操作即可客观地进行代码复杂度测量。
检查者是消息的来源:每条消息恰好属于一个检查者。 许多最有用的消息都在设计检查器中 。 默认数字通常很好,但是调整最大值很简单:我们可以在.pylintrc
添加一个称为DESIGN
的.pylintrc
。
[ DESIGN
]
max-args=7
max-locals=15
有用消息的另一个很好的来源是refactoring
检查器。 我最喜欢的一些启用消息包括consider-using-dict-comprehension
, stop-iteration-return
(当return
是停止迭代的正确方法时,它会寻找使用raise StopIteration
生成器)。 和chained-comparison
,这将建议使用类似1 <= x < 5
语法,而不是不太明显的1 <= x && x > 5
最后,就性能而言,但非常有用的昂贵检查器是similarities
。 它旨在通过在代码的不同部分之间明确查找复制粘贴来实施“不要重复自己”(DRY原理)。 它只有一条消息要启用: duplicate-code
。 默认的“最小相似度行”设置为4
。 可以使用.pylintrc
将其设置为其他值。
[ SIMILARITIES
]
min-similarity-lines=3
Pylint使代码审查变得容易
如果你生病的代码审查,你指出,一类是过于复杂,或者说两种不同的功能基本上是相同的,pylint的添加到您的持续集成的配置,只有有关于复杂性准则的参数为您的项目一次 。
翻译自: https://opensource.com/article/19/10/python-pylint-introduction
python pylint