忽略 'undefined name' 某些带有 sublimelinter + flake8 的全局关键字

Ignore 'undefined name' for certain global keywords w/ sublimelinter + flake8

使用一些不寻常的语言,processing-py,它是一种 python 围绕 java 处理语言的包装器。

processing-py 引入了许多不需要导入的全局关键字。其中包括像 loadPixels() 这样的函数名称和像 'width'(屏幕宽度)这样的全局变量(常量?)。

Sublimelinter + flake8 为这些正确地引发 F821 未定义名称。 #noqa 不方便,我还不如在那个时候关掉 linter。我还想看看我什么时候 实际上 引入了一个虚假关键字,例如将 loadPixels()(好)打错为 laodPixels()(坏)。

那么有没有办法为 F821 添加一个例外列表,或者以其他方式扩展已知关键字的字典?

我还使用带有关键字列表的自定义 thTheme,作为 processing-py-sublime 包的一部分。

谢谢!

不知道您是否解决了您的问题,但是如果您将 SublimePythonIDE 与 SublimeText3 一起使用,您可以在插件的用户设置或项目设置中添加一个例外列表:

在用户设置中,添加:

"pyflakes_ignore": ["background", "ellipse", "fill", "size" ... ]

在项目设置中,添加到 'settings' 对象:

{
    "settings": {
        // Ignoring for Processing.py projects
        "pyflakes_ignore": ["background",
                            "ellipse",
                            "fill",
                            "size"]
    }
}

我已经接受了其他用户的回答,但想出了另一种方法来做到这一点,该方法更 in-line 我当前的工作流程。

我使用的是 Sublime Linter + Python Flake8 Lint 包。

Python Flake8 Lint 有一个名为 "builtins" 的设置,我猜这是针对 built-in python 语言关键字。您可以在项目级别设置它(我的所有 pyprocessing 主要是在一个大型 sublime 项目中完成)。

你的pyprocessingproject.sublime-project:

"settings": {
    "flake8lint": {
      "builtins": [
            "draw",
            "exit",
            "loop",
            "noLoop"
            etc...
            ]
    }
}

成功了。使用接受的答案中的要点来获取完整的关键字列表。