PyCharm 中的描述性 flake8 错误

Descriptive flake8 errors in PyCharm

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

有时候,尤其是对于 Python 新手来说,并非每个 flake8 警告都是可以理解的,需要额外说明。

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

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

绝对有可能。

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

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

问题在于控制台或 PyCharm 输出 window 无法正确呈现 link。

幸运的是,我们可以使用插件来做到这一点 - "Awesome Console" for the terminal and "Console Link" 用于输出 window.


分步说明

  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$ 占位符,用于要处理的 directory/path:

演示

现在,假设我们创建的这个 test.py 文件有一些违规行为:

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

如果我们右键单击 test.py 文件 select External Tools -> flake8,这就是我们将要获得的输出(请注意可单击的 links每次警告):

现在,每当有疑问时,我们都可以按照 link 了解有关警告的更多详细信息。

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

致所有需要的人:

  • 运行 使用 远程 python 解释器和 SSH
  • 针对文件
  • 谁想要 flake8 在 上更改了关于 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"
  3. 填充参数部分

供参考:

注意: 要从 virtualenv 获取 flake8,您可能需要指定完整路径,例如: /z/your_virtual_envs/bin/flake8

今天我也遇到了这个问题,尽管@alecxe 的回答对一个项目设置很好

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

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

配置路径

计划- flake8可执行文件的路径$PyInterpreterDirectory$是当前项目的Python解释器所在的目录

参数 - 指定应检查的文件和文件夹 $FilePath$

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

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

结果是原生 flake8 支持。

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