以下来自pylint docs:
--ignore=<file>
Add <file or directory> to the black list. It should be a base name, not a path. You may set this option multiple times. [current: %default]
然而,我没有幸运得到目录部分。
我有一个名为migrations的目录,它有django-south迁移文件。当我输入--ignore = migrations时,它仍然不断向我提供迁移目录中文件中的错误/警告。
可能是--ignore
不适用于目录吗?
如果我甚至可以使用regexp来匹配被忽略的文件,那么django-south文件都被命名为0001_something,0002_something ...
由于我无法通过目录忽略工作,因此我只需将# pylint: disable-msg-cat=WCREFI
放在每个迁移文件的顶部,这会忽略所有的pylint错误,警告和信息。
答案 0 :(得分:23)
添加:
[MASTER]
ignore=migrations
我的.pylintrc适用于pylint 0.25。我的问题是PyDev,它似乎不尊重我的设置。我认为这是因为它正在运行pylint per-file,我认为它绕过'ignore'检查 - 无论是模块/目录还是文件。从PyDev调用pylint看起来像:
/path/to/site-packages/pylint/lint.py --include-ids=y /path/to/project/migrations/0018_migration.py
答案 1 :(得分:9)
您不能提供路径,只能提供目录的“basename”。例如。使用--ignore=lib
代替--ignore-=appengine-toolkit/gaetk/lib
。
问题是您会忽略名为lib
的所有目录。
答案 2 :(得分:4)
尽管这是一个古老的问题,但是当我们搜索堆栈溢出时它会显示在顶部列表中,因此我在此处发布我们的解决方案,希望它可能对其他人有用。
要忽略名为3rdparty
的目录树下的子目录,我们在ignore-patterns
的{{1}}条目中添加了以下[MASTER]
条目。
.pylintrc
这解决了pylint-1.7.1的问题。
最初,我们对注释中的“基本名称”子句感到困惑。显然,它确实接受带有通配符的路径。至少它对我们有用。您的里程可能会有所不同。
答案 3 :(得分:4)
截至目前,--ignore
在目录上不起作用。 (https://github.com/PyCQA/pylint/issues/2686上有一个未解决的问题)
事实证明,只有文件名,而不是整个路径才针对黑名单进行测试。 (如同一拉取请求中所述:https://github.com/PyCQA/pylint/issues/2686#issuecomment-453450455)
选项--ignore-patterns
有相同的问题,但是在我检查时曾尝试对其进行修复。 (https://github.com/PyCQA/pylint/pull/3266)
对于您而言,目前最好的解决方案是使用正则表达式匹配文件中所需的模式,这也是我的情况。由于我不太了解正则表达式,因此我建议使用https://regex101.com。
答案 4 :(得分:1)
从 Pylint 2.9 开始,将有一个新的配置目录 ignore-paths
,它与正则表达式匹配整个路径而不是基本名称。
另见:
答案 5 :(得分:0)
实际上,对于pylint 2.3.1,存在一个未解决的问题。
如果将目录设置为“忽略”选项,它将不会忽略它。
答案 6 :(得分:0)
似乎您需要做一些猴子补丁reference,该补丁对pylint 2.5.3版适用于我。只是不知道为什么pylint无法解决忽略路径的问题。
init-hook=
sys.path.append(os.getcwd());
from pylint_ignore import PylintIgnorePaths;
PylintIgnorePaths('my/thirdparty/subdir', 'my/other/badcode')
然后创建pylint_ignore.py:
from pylint.utils import utils
class PylintIgnorePaths:
def __init__(self, *paths):
self.paths = paths
self.original_expand_modules = utils.expand_modules
utils.expand_modules = self.patched_expand
def patched_expand(self, *args, **kwargs):
result, errors = self.original_expand_modules(*args, **kwargs)
def keep_item(item):
if any(1 for path in self.paths if item['path'].startswith(path)):
return False
return True
result = list(filter(keep_item, result))
return result, errors
答案 7 :(得分:-1)
然后,您可以使用Bash扩展:
--ignore=migrations/{0000..1000}_something