【发布时间】:2019-09-30 10:09:48
【问题描述】:
我有这个测试文件:
"""module docstring"""
class Aclass:
"""class docstring"""
def __init__(self, attr=None, attr2=None):
self.attr = attr
self.attr2 = attr2
def __repr__(self):
return 'instance_of the Aclass {self.attr}.'
def __str__(self):
return 'The A with: {self.attr}.'
def init_a():
"""function docstring"""
a_inst = Aclass()
attr = 1
attr2 = 2
a_inst.attr2 = attr2
# should be: a_inst.attr = attr, but have a typo
attr = attr
我使用 pylint 检查它,输出显示一切正常。
$ pylint test.py
--------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)
基于linting,我希望在软件语言中出现可疑使用的标志,因为我不知道此代码a=1; a=a 何时有用。
我想看到一些警告,例如:未使用的变量或自赋值等。有没有使用 pylint 的方法? (我知道 Pycharm 和 sonarqube)。 sonar rules 的示例。
public void foo() {
int x = 3;
x = x;
}
Such assignments are useless, and may indicate a logic error or typo.
关于pylint的详细信息
pylint 2.3.1
astroid 2.2.5
Python 3.6.5 (default, May 5 2019, 22:05:54)
[GCC 6.3.0 20170516]
UPDATE已添加到版本pylint 2.4
【问题讨论】:
-
在我看来,您的问题的关键是“是否存在
a=a可能无效的情况?”。我相当确定您可以通过将模块加载器和描述符弄得一团糟来管理这样的事情。我可能需要很长时间才能真正写出有效的东西。一些导致a=a产生副作用的代码会回答您的问题吗? -
不,我的问题是如何运行 pylint 以使用与声纳示例中相同的规则来捕获警告。