我按照这些说明如何让 pylint 使用init-hook.
但是,当我运行终端命令时,pylint server.py --rcfile=../.pylintrc我得到了TypeError: expected str, bytes or os.PathLike object, not NoneType. (我认为这是因为找到 rcfile 的部分init-hook在某种程度上失败了,但我不确定。)
这是我的.pylintrc文件直至相关部分(其余部分只是默认模板):
[MASTER]
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=
# Specify a score threshold to be exceeded before program exits with error.
fail-under=10.0
# Add files …Run Code Online (Sandbox Code Playgroud) 我正在使用 BitBucket 管道通过 pylint 执行 linting 检查。几个小时前还运行良好。尽管最终分数远远超过了最低标准(8.0),但我一直面临以下错误:
您的代码的评分为 9.43/10
Traceback (most recent call last):
File "/usr/local/bin/pylint-fail-under", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.6/dist-packages/pylint_fail_under/__main__.py", line 42, in main
score = results.linter.stats["global_note"]
TypeError: 'LinterStats' object is not subscriptable
Run Code Online (Sandbox Code Playgroud) 我非常喜欢 pylint 的内置文档字符串检查器。我很高兴在我的所有类、所有函数和所有模块上都需要文档字符串。
然而,我不喜欢的是 pylint 还需要我的所有测试模块和所有pytest测试函数的文档字符串。这会导致低价值的文档字符串,如下所示:
"""Tests for foo.py"""
from foo import bar
def test_bar():
"""Tests for bar"""
assert bar(1) == 2
Run Code Online (Sandbox Code Playgroud)
我已经能够no-docstring-rgx在我的.pylintrc文件中使用禁用函数级文档字符串要求:
[MASTER]
no-docstring-rgx=^(_|test_)
Run Code Online (Sandbox Code Playgroud)
这可以解决missing-function-docstring/C0116错误。
但我还没有找到一种方法来禁用仅针对missing-module-docstring以. pylint 可以做到这一点吗?C0114_test.py
我将使用这个简单的 Python 文件来说明我的问题:
import os
for i in range( -500, 0 ):
print i
Run Code Online (Sandbox Code Playgroud)
我对此文件运行 Pylint 并收到一条消息:
$ pylint foobar.py
************* Module foobar
W: 1, 0: Unused import os (unused-import)
Run Code Online (Sandbox Code Playgroud)
现在我想禁用 类型的警告消息unused-import。但我想将其添加到 Pylint 的默认配置之上。
我认为这给了我 Pylint 的默认配置,因为帮助说它--generate-rcfile生成当前配置:
$ pylint --generate-rcfile > pylintrc
Run Code Online (Sandbox Code Playgroud)
当我在同一个文件上再次运行 Pylint 时,我现在收到更多消息:
************* Module foobar
C: 3, 0: No space allowed after bracket
for i in range( -500, 0 ):
^ (bad-whitespace)
C: 3, 0: No space allowed before bracket
for i in …Run Code Online (Sandbox Code Playgroud) 当我在 Windows 10 中运行安装了 pip(版本 2.1.1 和 Python V.3.7)的 pylint 时,出现此错误:
UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0 中的字节 0xff:起始字节无效。
我们如何修复它?
我试过了pylint --indent-string=" ",但我一直收到帮助信息。我应该怎么做来配置 pylint.
我已经将我自己编写的 Python 脚本组织在一个由多个子目录组成的树中,从已经包含在"python.autoComplete.extraPaths"settings-json 中的父目录“Scripts”开始:
"python.autoComplete.extraPaths": ["/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts",
"/home/andylu/anaconda3/lib/python3.7/site-packages"]
Run Code Online (Sandbox Code Playgroud)
除此之外,我还包含了一个 Python 环境文件:
"python.envFile": "/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Visual_studio_code/vscode_own_scripts.env"
Run Code Online (Sandbox Code Playgroud)
其中包含该行
export PYTHONPATH=/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts:/home/andylu/anaconda3/lib/python3.7/site-packages
Run Code Online (Sandbox Code Playgroud)
所有这些以前都很好,我所有的脚本都分布在 1 个以上的单个目录级别,如下所示:
+---Scripts
| +---General
| | +---script_one.py
| | +---script_two.py
Run Code Online (Sandbox Code Playgroud)
当我在任何 python 脚本中导入时,例如script_one.py,我用
import sys
sys.path.append(
"/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/"
)
import General.script_one as one
Run Code Online (Sandbox Code Playgroud)
并且 pylint 正确识别了这个导入的脚本,而不会抛出上述VS Code pylint(import-error).
现在,情况不同了。脚本变得如此之多,我将子文件夹拆分General为包含一个额外的子目录级别,以便更清晰地组织脚本:
+---Scripts
| +---General
| | +---Plotting
| | | +---script_one.py
| | | +---script_two.py
| | +---Misc
| …Run Code Online (Sandbox Code Playgroud) 有没有办法更改/指定 pylintrc 文件中规则的严重性级别(错误、警告)?
我收到来自 pylint 的多个警告,例如:'''变量名“df”不符合蛇形命名风格''' 据我所知,这是因为变量名长度小于 3 个符号。但是我想使用 df、i、x 等变量。
因此,我需要为 linting 异常添加几个变量名。我尝试将该名称添加到我的项目目录中的 pylintrc 文件的 good-names 部分,其中 manage.py 位于: pylintrc: '''# 应始终接受的良好变量名称,以逗号分隔。good-names=i, j, k, ex, Run, df, l, l1, l2, l3''' 它没有帮助,我仍然收到有关变量名称样式的警告。如果有人可以帮助提出想法,我将不胜感激。
在我的文件上运行 Pylint 时,我收到以下消息。
重构(R0915、太多语句、函数)太多语句 (95/50)
我想将函数可以拥有的语句数设置为 100 而不是 50,以避免来自 Pylint 的上述消息。
我一直C0103在Visual Studio中从pylint 收到警告,因为我试图使用2个字符的变量名称,例如hp和gp。该警告在此处描述:link。
约定描述[a-z_][a-z0-9_]{2,30}$为variable-rgx。我实际上不知道如何阅读此正则表达式或它的含义,但看起来该{2,30}部分描述了可能的长度范围,所以(如果我错了,请纠正我)为什么不允许字符长度为2?还是会有其他原因导致诸如这样的变量名gp出错?
当问到这个问题时,人们经常链接到PEP-8,但我不记得阅读过,变量名必须至少具有3个字符的长度。无论如何,我认为这可能是错误的形式,但我不想遵循此约定。在我的程序上下文中,非常清楚地知道2个字符的变量名称,例如gp和hp意味着什么,这似乎对编码样式有很大的限制。
因此,无论如何,我想做的就是专门覆盖此警告。我不想只是禁用C0103。相反,我宁愿在文本编辑器(Visual Studio Code)中更改此设置,例如在可以使用更改pylintargs 的设置中"python.linting.pylintArgs": [...]。那么,如果我想重写约定以允许使用2个字符的变量名,那么正确的更改是什么?还是我必须编写一个新的lintrc文件(不知道该怎么做,我更喜欢一个更简单的解决方案,仅在VSCode中进行更改)。
Pylint missing-docstring 似乎忽略了类中的一些函数和私有方法。
如何让 pylint 强制所有函数和方法都必须在某个存储库中具有文档字符串?
我发现的一种选择是禁用忽略私有函数:
no-docstring-rgx='a^'
我有一个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
是否有可能打破这一行以保持列表项在下一行?我试图将项目移动到下一行,但是,这似乎使文件无效.
pylint ×13
pylintrc ×13
python ×10
python-3.x ×4
bitbucket ×1
flask ×1
importerror ×1
pep8 ×1
pep8-checker ×1
pytest ×1