【问题标题】:Ignore 'undefined name' for certain global keywords w/ sublimelinter + flake8使用 sublimelinter + flake8 忽略某些全局关键字的“未定义名称”
【发布时间】:2018-07-21 07:11:59
【问题描述】:

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

processing-py 引入了很多不需要导入的全局关键字。其中包括诸如 loadPixels() 之类的函数名称和诸如“width”(屏幕宽度)之类的全局变量(常量?)。

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

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

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

谢谢!

【问题讨论】:

    标签: sublimetext sublimelinter flake8


    【解决方案1】:

    我接受了其他用户的回答,但想出了另一种更符合我当前工作流程的方法。

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

    Python Flake8 Lint 有一个名为“builtins”的设置,我猜它是用于内置 python 语言关键字的。您可以在项目级别进行设置(我所有的 pyprocessing 主要在一个大型 sublime 项目中进行)。

    你的pyprocessingproject.sublime-project:

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

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

    【讨论】:

      【解决方案2】:

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

      在用户设置中,添加:

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

      在项目设置中,添加到“设置”对象:

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

      【讨论】:

      • 嗯,感谢您对此进行破解。我安装了 SublimePythonIDE(使用 ST3)并尝试在 SublimePythonIDE 用户设置文件和设置对象内的项目设置文件中添加这些设置,但似乎都没有做任何事情:(你能在某处找到这个设置的任何文档吗?我试过了并且失败了。找到一个引用该设置的要点,仅此而已。如果有帮助,这是我的 linter 版本: int 工具版本:-Python Flake8 Lint:2.4.3 - pep8:1.7.0 - flake8:2.5.2 - pyflakes: 1.0.0 感觉可能是我这边有些配置错误
      • 嗯。可能是 SublimeLinter 正在接管 linting(SublimePythonIDE 提供了自己的 linting,上面的设置与此相对应)。尝试在您的项目或用户设置中禁用 Python 的 SublimeLinter 配置(例如 flake8)。我正在做你打算做的事情,即使用 ST3 处理.py,所以它应该以某种组合为你工作:) 仅供参考,如果你让它工作,我有一个完整的要点(我认为) 您可以在此处使用的关键字列表:gist.github.com/riverfr0zen/9fe49ce07efb7646e7f8a7acff7fbe9f
      • 啊是的,就是这样。 SublimeLinter 负责,一旦我删除它,我就可以添加那些忽略。不幸的是,我在其他项目中将 SublimeLinter 用于 javascript,所以我必须看看是否可以仅为这个项目禁用它。但是您的回答很有效,因此可以接受,谢谢!很高兴知道其他人也在做 st3/processing.py 的事情。谢谢你的要点。
      • 是的,您不必删除 SublimeLinter。您可以通过在 linter 设置中添加“disable: true”来禁用项目设置中的特定 linter。我很高兴你在下面找到了另一种方式——我最初是在 SublimeLinter 中寻找类似的解决方案,所以很高兴知道。
      猜你喜欢
      • 2019-10-15
      • 2021-05-23
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      相关资源
      最近更新 更多