标签: pylint

Linting Python:什么是好的?

是否有任何好的模块可以针对您的代码运行以捕获编码错误?我希望pylint能够在使用默认参数时捕获错误,如下所示:

>>> def spam(eggs=[]):
...     eggs.append("spam")
...     return eggs
Run Code Online (Sandbox Code Playgroud)

但却发现他们没有报告,感到很失望.我正在寻找PEP8格式以外的东西.

python pylint

1
推荐指数
1
解决办法
1595
查看次数

Pylint中的永久配置文件

我为Pylint设置了一个自定义配置文件(名称,方便,配置).必须有一种方法,我不必包括--rcfile=config在每次运行.如何永久设置配置文件?

macos pylint configuration-files

1
推荐指数
1
解决办法
2073
查看次数

python中更快的属性访问

考虑以下课程:

class MyObject(object):

    __slots__ = ('_att1', '_att2')

    def __init__(self):
        self._att1 = None
        self._att2 = None

    @property
    def att1(self):
        """READ-ONLY property. """
        return self._att1

    @property
    def att2(self):
        """att2 property description. """
        return self._att2

    @att2.setter
    def att2(self, val):
        self._att2 = val
Run Code Online (Sandbox Code Playgroud)

使用属性装饰器的一个优点是我们可以添加一些文档

a = MyObject()
help(a)
Help on MyObject in module __main__ object:

class MyObject(__builtin__.object)
 |  Methods defined here:
 |  
 |  __init__(self)
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  att1
 |      READ-ONLY property.
 |  
 |  att2
 |      att2 property …
Run Code Online (Sandbox Code Playgroud)

python pylint

1
推荐指数
1
解决办法
596
查看次数

为什么__all__只包含字符串对象?

今天我遇到了以下的pylint错误:

invalid-all-object(E0604):

__all__中的无效对象%r必须仅包含在__all__中出现无效(非字符串)对象时使用的字符串.

而且我很好奇为什么直接暴露对象被认为是错误的?

python pylint

1
推荐指数
2
解决办法
519
查看次数

如何在.pylintrc文件中打破长行?

我有一个PyLint配置文件.pylintrc,并定义了一些规则.

但是,对于一条规则,我有很多项目会产生很长的路线.

[TYPECHECK]
generated-members = XXX, YYY, ZZZ......
Run Code Online (Sandbox Code Playgroud)

在github上可以看到一条长行的例子:https: //github.com/behave/behave.example/blob/master/pylintrc#L263

是否有可能打破这一行以保持列表项在下一行?我试图将项目移动到下一行,但是,这似乎使文件无效.

python pylint pylintrc

1
推荐指数
1
解决办法
481
查看次数

为什么pylint告诉我我的dict属性是一个未定义的变量?

我正在使用为python 3+配置的pylint处理此代码:

import utils

valid_commands = ['category', 'help', 'exit']

def createCategory():
    utils.clear()
    category = {
        name: 'test' <- allegedly undefined
    }
    utils.insertCategory(category)

def listActions():
    utils.clear()
    for command in valid_commands:
        print(command)

def exit():
    utils.clear()

actions = {
    'category': createCategory,
    'help':     listActions,
    'exit':     exit
}

command = ''
while command != 'exit':
    command = input('task_tracker> ')
    if command in valid_commands:
        actions[command]()
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

在此输入图像描述

我的代码运行正常,但这个错误不会消失的事实让我疯狂.为什么它告诉我这是未定义的?

python pylint python-3.x

1
推荐指数
1
解决办法
420
查看次数

pylint 无法导入自定义模块和函数(no-name-in-module)

我有这样的结构:

 |- file run_app.py

 |- folder 'tasks'

 |-- file app.py
Run Code Online (Sandbox Code Playgroud)

中有一个字符串run_app.py

import tasks.app
Run Code Online (Sandbox Code Playgroud)

并且 pylint 警告说

run_app.py:8:0: E0611: No name 'app' in module 'tasks' (no-name-in-module)
Run Code Online (Sandbox Code Playgroud)

当我重命名tasks为 时taskss,错误消失。这是什么?如果我想将文件夹完全命名为“任务”,如何解决这种奇怪的行为?

python pylint

1
推荐指数
1
解决办法
8692
查看次数

我是否应该始终相信 Django 中的 W0613 pylint 警告,尤其是对于以 **kwargs 作为参数的函数?

在 Django 代码上使用 Pylint,我经常收到 W0613 警告。90% 的情况是相关的,当变量被声明而不使用时。但有时我认为并非如此。

W0613: Unused argument 'kwargs' (unused-argument)

触发警告的示例,处理 500 错误的视图:

def error_500(request, *args, **kwargs):
    '''
    A 500 error handling view
    '''
    data = {}
    return render(request, '500.html', data)
Run Code Online (Sandbox Code Playgroud)

在上述情况下,如果我们删除 **kwargs,从 Django 2 开始(我记得),任何 500 错误情况都会导致未处理的异常变成崩溃。

所以我很困惑 Pylint 是否真的了解所有可能出现的情况。

我应该总是将警告视为真正的警告,因为我的代码缺少某些东西,还是应该知道这些特殊情况并消除警告?

我注意到通过为 Django 使用特殊的 Pylint,这种类型的警告通常不会经常出现(pylint-django)。

但它有时仍然会发生。

django pylint python-3.6

1
推荐指数
1
解决办法
571
查看次数

避免在 gitlab CI 脚本管道中提前退出命令,同时仍捕获退出状态

我正在尝试从 Gitlab CI 脚本中的 PyLint 输出生成徽章。最终,如果 PyLint 具有非零退出代码,作业应该会失败。但在此之前,我希望创建徽章。所以我尝试了以下方法:

before_script:
    - [...]
    - mkdir -p public
script:
    - pylint lib --disable R,missing-docstring,wrong-import-order --reports=y | tee public/pylint-report.txt
    - export SUCCESS=${PIPESTATUS[0]}
    - SCORE=$(tail -n 2 public/pylint-report.txt | grep -o -P "\d\d?\.\d+\/\d*" | head -1)
    - echo "PyLint score ${SCORE}"
    - python3.6 -m pybadges --left-text=PyLint --right-text=${SCORE} > public/pylint.svg
    - exit ${SUCCESS}
artifacts:
    when: always
    [...]
Run Code Online (Sandbox Code Playgroud)

如果 PyLint 退出代码为 0,这可以正常工作:

$ mkdir -p public
$ pylint lib --disable R,missing-docstring,wrong-import-order --reports=y | tee public/pylint-report.txt; export SUCCESS=${PIPESTATUS[0]} …
Run Code Online (Sandbox Code Playgroud)

python bash pylint gitlab-ci

1
推荐指数
1
解决办法
3264
查看次数

VSCode/pylint 在安装模块时将模块 win32event 报告为未解析的导入

这是一个小烦恼,但是 pywin32 模块被 VSCode 中的 python linter 报告为未解析的导入。

我已经安装了 pywin32,并且可以在终端会话中以及脚本运行时导入模块。

我的 python.pythonPath 在我的 settings.json 中设置正确。

linter 似乎无法找到模块。

但是,如果我使用以下语法,linter 可以工作,但在运行时导入显然会失败。

import win32.lib.win32event
Run Code Online (Sandbox Code Playgroud)

关于如何“制作”VSCode 或 linter 匹配正确导入的任何想法?

python lint pylint visual-studio-code vscode-settings

1
推荐指数
1
解决办法
500
查看次数