【问题标题】:Descriptive flake8 errors in PyCharmPyCharm 中的描述性 flake8 错误
【发布时间】:2018-06-12 11:24:10
【问题描述】:

PyCharm 没有built-in support for flake8 at the moment。但是,flake8 可以配置为作为外部工具运行。

有时,尤其是对于 Python 新手而言,并非每个 flake8 警告都是可以理解的,因此需要进行额外说明。

我们最近偶然发现了Flake8Rules project,它试图通过支持性示例详细描述每个警告。

有没有办法将 PyCharm、flake8Flake8Rules 组合在一起,以显示静态代码分析警告以及附加说明或指向 Flake8Rules 目录的链接?

【问题讨论】:

    标签: python pycharm static-code-analysis flake8


    【解决方案1】:

    绝对有可能。

    一种方法是使用the --format command-line option 调整flake8 输出以指定指向Flake8Rules 目录的http(s) 链接:

    --format='%(path)s:%(row)d,%(col)d:%(code)s:%(text)s:https://lintlyci.github.io/Flake8Rules/rules/%(code)s.html'
    

    问题在于控制台或 PyCharm 输出窗口正确呈现链接。

    幸运的是,我们可以使用插件来做到这一点 - "Awesome Console" 用于终端,"Console Link" 用于输出窗口。


    ##分步说明

    1. 确保在当前 Python 环境中安装了flake8
    2. 安装“Awesome Console”插件:
    • 转到PyCharm Preferences -> Plugins -> Browser Repositories...
    • 找到“Awesome Console”并安装(需要重启 PyCharm):
    1. 将“flake8”配置为External Tool
    • 转到PyCharm Preferences -> Tools -> External Tools -> "+"
    • 配置flake8 的路径以及$FilePath$ 占位符,以便处理所需的目录/路径:

    ##演示

    现在,假设我们创建了这个 test.py 文件,其中存在一些违规行为:

    def f(a = 10):
      return a*10
    

    如果我们右键单击test.py 文件,选择External Tools -> flake8,这就是我们要得到的输出(注意每个警告的可点击链接):

    现在,如有疑问,我们可以点击链接了解有关警告的更多详细信息。

    这只是一种方法,很高兴听到是否有更简单或更好的方法来组合这些工具和项目。

    【讨论】:

    • Awesome console 真是太棒了
    • 我认为是$FilePath$ 而不是$FileDir$/$FileName$
    【解决方案2】:

    今天我也面临这个问题,尽管@alecxe 的回答对一个项目设置有好处

    如果你想全局设置 flake8 ,你可以按照以下流程进行

    1. 确保在您的项目中安装了 flake8
    2. 确保在 pycharm 中设置 virtualenv 路径
    3. 将 flake8 配置为外部工具 转到文件>设置>(工具)>外部工具>'+'

    配置路径

    程序 - flake8可执行文件的路径$PyInterpreterDirectory$是放置当前项目的Python解释器的目录

    Argument- 指定应检查哪些文件和文件夹 $FilePath$

    工作目录 - 项目根目录 $ContentRoot$

    【讨论】:

    • 要添加键盘快捷键,请转到:设置 -> 键盘映射 -> 外部工具 -> Flake8 右键单击​​ Flake8 并选择 Add Keyboard Shortcut 并选择例如Alt+F
    【解决方案3】:

    致所有需要的人:

    • 使用带有 SSH 的远程 python 解释器运行文件
    • 谁想要 only flake8 on 关于 git 状态的更改文件
    • 想要轻松传递任何其他 flake8 参数的人

    在 Pycharm 中设置这种工具:

    File | Settings | Tools | Remote SSH External Tools
    

    请参阅下面的屏幕以获取示例配置:

    参数:-c "flake8 $(git status -s | grep -E '\.py$' | cut -c 4-) --max-line-lengt=120"

    就我而言,关键是:

    1. 直接使用/bin/bash 而不是flake8
    2. -c "whatever args subcommands etc I need here" 填写参数部分

    供参考:

    注意: 要让您的 flake8 来自 virtualenv,您可能需要指定完整路径,例如: /z/your_virtual_envs/bin/flake8

    【讨论】:

      【解决方案4】:

      我编写了一个库,它提供了一种与 pycharm 的原生 flake8 集成。该库通过伪装成 pylint 可执行文件来工作。它接受 pylint 参数并将其转换为 flake8 对应项。同样,它将 flake8 输出转换为等效的 pylint 输出。

      结果是原生 flake8 支持。

      https://gitlab.com/ramast/flake8-for-pycharm/

      【讨论】:

      • 几乎不可能。我不是 Java 开发人员,所以我无法更改现有插件或创建新插件。我写的这个库是用 python 编写的,它依赖于 pylint 插件才能工作。这样的脚本不可能被市场接受
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2020-01-17
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      相关资源
      最近更新 更多