标签: pylint

PyLint,PyChecker还是PyFlakes?

我想获得一些关于这些工具的反馈:

  • 特征;
  • 适应性;
  • 易用性和学习曲线.

python pep8 pylint pychecker pyflakes

381
推荐指数
2
解决办法
12万
查看次数

如何禁用Pylint警告?

我试图禁用警告C0321("在单行上多个语句" - 我经常if在同一行上放置短单行结果的语句),在Pylint 0.21.1中(如果重要的话:到0.20. 1,常见的0.50.3,Python 2.6.6(r266:84292,2010年9月15日,16:22:56)).

我已经尝试添加disable=C0321Pylint配置文件,但Pylint仍坚持报告它.该行的变化(如disable=0321disable=C321)被标记为错误,因此Pylint 确实正确识别该选项,它只是忽略它.

这是一个Pylint错误,还是我做错了什么?有没有办法解决?我真的想摆脱一些噪音.

python pylint

232
推荐指数
9
解决办法
22万
查看次数

为什么在Pylint中条件值中使用len(SEQUENCE)是不正确的?

考虑此代码段:

from os import walk

files = []
for (dirpath, _, filenames) in walk(mydir):
    # more code that modifies files
if len(files) == 0: # <-- C1801
    return None
Run Code Online (Sandbox Code Playgroud)

Pylint对这条关于if语句行的消息感到震惊:

[pylint] C1801:不要len(SEQUENCE)用作条件值

乍一看,规则C1801对我来说听起来不太合理,参考指南中的定义并不能解释为什么这是一个问题.事实上,它完全称之为不正确的用法.

len-as-condition(C1801): 不要len(SEQUENCE)用作条件值当Pylint在条件内检测到len(序列)的错误使用时使用.

我的搜索尝试也未能为我提供更深入的解释.我确实理解序列的长度属性可能会被懒惰地评估,并且__len__可以被编程为具有副作用,但是对于Pylint是否足以使这样的使用不正确而言,这是否有问题是值得怀疑的.因此,在我简单地配置我的项目以忽略规则之前,我想知道我的推理是否缺少某些内容.

什么时候使用len(SEQ)条件值有问题?Pylint试图用C1801避免哪些主要情况?

python conditional pylint

192
推荐指数
4
解决办法
7万
查看次数

如何让PyLint识别numpy成员?

我正在Python项目上运行PyLint.PyLint对无法找到numpy成员提出了许多抱怨.如何在避免跳过成员资格检查的同时避免这种情况.

从代码:

import numpy as np

print np.zeros([1, 4])
Run Code Online (Sandbox Code Playgroud)

哪,跑了,我得到了预期的:

[[0. 0. 0. 0.]]

但是,pylint给了我这个错误:

E:3,6:模块'numpy'没有'零'成员(无成员)

对于版本,我使用pylint 1.0.0(astroid 1.0.1,常见的0.60.0)并尝试使用numpy 1.8.0.

python numpy pylint

156
推荐指数
11
解决办法
7万
查看次数

使用Pylint和Django

我非常希望将pylint集成到我的python项目的构建过程中,但是我遇到了一个show-stopper:我觉得非常有用的一种错误类型 - : - E1101: *%s %r has no %r member*在使用常见的django字段时会报告错误, 例如:

E1101:125:get_user_tags: Class 'Tag' has no 'objects' member
Run Code Online (Sandbox Code Playgroud)

这是由这段代码引起的:

def get_user_tags(username):
   """
   Gets all the tags that username has used.

   Returns a query set.
   """
   return Tag.objects.filter(  ## This line triggers the error.
       tagownership__users__username__exact=username).distinct()

# Here is the Tag class, models.Model is provided by Django:
class Tag(models.Model):
   """
   Model for user-defined strings that help categorize Events on
   on a per-user basis.
   """
   name = models.CharField(max_length=500, null=False, …
Run Code Online (Sandbox Code Playgroud)

python django static-analysis pylint

137
推荐指数
9
解决办法
4万
查看次数

在__init__外定义的实例属性attribute_name

我通过让它调用多个函数来拆分我的类构造函数,如下所示:

class Wizard:
    def __init__(self, argv):
        self.parse_arguments(argv)
        self.wave_wand() # declaration omitted

    def parse_arguments(self, argv):
        if self.has_correct_argument_count(argv):
            self.name = argv[0]
            self.magic_ability = argv[1]
        else:
            raise InvalidArgumentsException() # declaration omitted

# ... irrelevant functions omitted
Run Code Online (Sandbox Code Playgroud)

当我的口译员愉快地运行我的代码时,Pylint抱怨:

Instance attribute attribute_name defined outside __init__

粗略的Google搜索目前毫无结果.保持所有构造函数逻辑__init__似乎没有组织,并且关闭Pylint警告似乎也是黑客攻击.

什么是/ Pythonic解决这个问题的方法?

python constructor pylint

136
推荐指数
2
解决办法
6万
查看次数

PyLint"无法导入"错误 - 如何设置PYTHONPATH?

我正在Windows上的Wing IDE中运行PyLint.我的项目中有一个子目录(包),在包中我从顶层导入一个模块,即.

__init__.py
myapp.py
one.py
subdir\
    __init__.py
    two.py
Run Code Online (Sandbox Code Playgroud)

two.py我内部import one,这在运行时工作正常,因为顶级目录(从中myapp.py运行)位于Python路径中.但是,当我在two.py上运行PyLint时,它给出了一个错误:

F0401: Unable to import 'one'
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

python pylint virtualenv pythonpath

133
推荐指数
9
解决办法
15万
查看次数

PyLint消息:logging-format-interpolation

对于以下代码:

logger.debug('message: {}'.format('test'))
Run Code Online (Sandbox Code Playgroud)

pylint 产生以下警告:

记录格式插值(W1202):

在日志记录函数中使用%格式并将%参数作为参数传递当日志语句的调用形式为"logging.(format_string.format(format_args ...))"时使用.此类调用应使用%格式,但通过将参数作为参数传递,将插值留给日志记录功能.

我知道我可以关掉这个警告,但我喜欢理解它.我假设使用format()是打印输出语句的首选方法pylint.为什么记录器语句不适用?

python pylint python-3.x

128
推荐指数
4
解决办法
3万
查看次数

是否可以忽略带有pylint的单个特定线?

我的标题中有以下行:

import config.logging_settings
Run Code Online (Sandbox Code Playgroud)

这实际上改变了我的python日志设置,但是pylint认为它是一个未使用的导入.我不想删除unused-import一般警告,所以可以忽略这一条特定的行吗?

我不介意有一个.pylintrc这个项目,所以将接受更改配置文件的答案.

否则,这样的事情也将受到赞赏:

import config.logging_settings # pylint: disable-this-line-in-some-way
Run Code Online (Sandbox Code Playgroud)

python pylint

118
推荐指数
4
解决办法
7万
查看次数

如何创建pylintrc文件

我正在运行linux.我可以执行类似的操作pylint --generate-rcfile > .pylintrc,然后对生成的.pylintrc文件进行更改以覆盖默认设置吗?如果是这样,它应该在我的~/目录中,还是应该放在.pylint.d中?

pylint

111
推荐指数
3
解决办法
6万
查看次数