我发现它pylint很有用,但我也发现它非常没有文档记录,输出结构很痛苦,缺乏直观的界面.
我想使用pylint,但它不断抽出一些荒谬的"常规"消息,例如C: 2: Line too long (137/80)等等.
如果我可以禁用这些,那么pylint对我来说会更有用.如何禁用这些"约定"消息?
我试图把disable-msg=C301在~/.pylintrc(它被加载,因为当我把有错误pylint抱怨),我的理解是基于pylint的包目录下运行此命令(文档中的"行太长"的消息,可以发现会对人好点):
$ grep"行太长"**/*.py checkers/format.py:'C0301':('行太长(%s /%s)',
但这disable-msg没有任何作用.我将convention使用该disable-msg-cat=命令禁用整个类别,但是没有任何迹象表明我可以找到convention该命令的类别标识符- 直观disable-message-cat=convention无效.
在这个问题上,我非常有必要指出一些方向.
谢谢.
布赖恩
我有一个Python类,它为几个方法引发了"NotImplementedError",并且该类由其他一些在自己的文件中定义的类继承.
当我在具有抽象类的文件上运行Pylint时,它总是抱怨"Abstract class not referenced".我想知道只是Pylint是偏执狂还是实际上我需要修理它?
我正在用Pylint检查一个模块.该项目具有以下结构:
/builder
__init__.py
entity.py
product.py
Run Code Online (Sandbox Code Playgroud)
在产品中我导入如下的实体:
from entity import Entity
Run Code Online (Sandbox Code Playgroud)
但是Pylint感叹道:
************* Module builder.product
W: 5,0: Relative import 'entity', should be 'builder.entity'
Run Code Online (Sandbox Code Playgroud)
但是from builder.entity import Entity无法识别包,from ..builder.entity import Entity也无法正常工作.Pylint在抱怨什么?谢谢
Pylint W0603说:
使用全局声明.在使用"global"语句更新全局变量时使用.PyLint只是试图阻止这种用法.这并不意味着你不能使用它!
我想知道为什么会这样?是否有更多Pythonic方法在函数内修改不可变的模块范围变量?是否建议将它们打包在像字典这样的可变变量中?或者可能将整个模块变成课堂?
在我看来,当变量被建议为"私有"(以_或__为前缀)时,此警告应该消失.
我正在为Vim 使用python-mode,我更喜欢那里有120个字符行而不是PEP8标准中定义的stark 80.
在python模式下,这很容易.我只是将以下内容添加到〜/ .vimrc中:
" Pylint configuration file
let g:pymode_lint_config = '$HOME/.pylint.rc'
let g:pymode_options_max_line_length=120
Run Code Online (Sandbox Code Playgroud)
这很好用,但是,我还想使用精湛的Syntastic插件来检查各种其他类型的语法(例如,foodcritic的Chef配方).
不幸的是,Syntastic也做了Python linting,因此它现在开始抱怨我的120个字符行.有什么类似的东西,我可以做到这一点,以使它停止抱怨我稍长的线?
是否可以更改max-line-length项目中一个文件的设置(同时执行rc文件中定义的所有其他检查)?
理想情况下,它应该像内联pylint: disable=x注释一样.
我已尝试将此行放在模块级别:
# pylint: max-line-length=240
Run Code Online (Sandbox Code Playgroud)
PyLint无法识别它:
my_file.py:15: [E0011(unrecognized-inline-option), ] Unrecognized file option 'max-line-length
Run Code Online (Sandbox Code Playgroud)
编辑:我知道我可以line-too-long完全禁用检查,但说实话我想避免这样做,以防有人试图扩展这个模块并添加比现在更长的行.
该say模块为Python带来字符串插值,如下所示:
import say
def f(a):
return say.fmt("The value of 'a' is {a}")
Run Code Online (Sandbox Code Playgroud)
但是,PyLint抱怨变量'a'从未使用过.这是一个问题,因为我的代码say.fmt广泛使用.我该如何沉默这个警告?
我们有一个像这样的Python项目:
project/
??? .pylintrc
??? module1.py
??? module2.py
??? tests/
??? test_module1.py
??? test_module2.py
Run Code Online (Sandbox Code Playgroud)
我们的单元和功能测试位于名为的文件夹中tests/.当谈到测试pylint的警告missing-docstring,invalid-name并且protected-access是不相关的.另一方面,这些警告对项目中的实际代码非常有用.
我的问题是,它是否可以添加会忽略missing-docstring,invalid-name并且protected-access在.pylintrc应用到模块的-file tests/-folder 只?
如果可能,我们不希望将#这些警告的-disables 添加到文件夹内的每个测试模块.
以下是我的代码:
import pygame
pygame.init()
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为如果我尝试运行该文件,那么似乎没有问题,但是pylint说如下:
E1101:模块'pygame'没有'init'成员
我已经彻底搜索了这个"错误"的解决方案.在我发现的每个相关案例中,解决方案是确保我没有创建名为"pygame"的另一个文件或文件夹,因为在这种情况下,我只是导入我自己的文件或文件夹.但是,我还没有创建一个名称甚至接近"pygame"的文件夹或文件,所以我不知道问题是什么.
如前所述,似乎我能够毫无问题地运行该文件,但我是新手,并且这样的错误使我在学习过程中感到困惑.
我在Visual Studio Code中编写代码,我使用python 3.6,我正在使用pygame 1.9.3并更新了我的pylint.任何帮助,将不胜感激.
我有一个 python 函数,如下所示,当启用 pylint 进行代码扫描时,它会抛出一个惰性格式错误。
def modify_response(data):
try:
response = {}
response["User_ID"] = data[0]["User_ID"]["S"]
response["Triggered_Timestamp"] = data[0]["Triggered_Timestamp"]["S"]
return response
except Exception as e:
logging.exception("ModifyResponseError: {}".format(e))
raise ModifyResponseError(json.dumps({"httpStatus": 501,"message": internal_error_message}))
Run Code Online (Sandbox Code Playgroud) pylint ×10
python ×10
formatting ×1
global ×1
logging ×1
pygame ×1
python-mode ×1
syntastic ×1
vim ×1
warnings ×1