22

PyCharm目前没有对 的内置支持flake8。但是,flake8可以配置为作为外部工具运行。

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

我们最近偶然发现了这个Flake8Rules项目,它试图用支持性的例子来详细描述每一个警告。

有没有一种方法可以结合 PyCharm,flake8Flake8Rules完全显示静态代码分析警告以及附加描述或Flake8Rules目录链接?

4

4 回答 4

36

这绝对是可能的。

一种方法是使用命令行选项flake8调整输出--format指定指向目录的 http(s) 链接Flake8Rules

--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. 确保已经flake8安装在当前的 Python 环境中
  2. 安装“真棒控制台”插件:
  • PyCharm Preferences -> Plugins -> Browser Repositories...
  • 找到“Awesome Console”并安装(需要重启 PyCharm): 在此处输入图像描述
  1. 将“flake8”配置为外部工具
  • PyCharm Preferences -> Tools -> External Tools -> "+"
  • 配置要处理的所需目录/路径 的路径flake8和占位符:$FilePath$在此处输入图像描述

##演示

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

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

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

在此处输入图像描述

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

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

于 2018-01-02T18:58:06.003 回答
19

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

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

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

配置路径 在此处输入图像描述

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

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

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

于 2019-11-25T15:12:28.850 回答
4

致所有需要的人:

  • 使用带有 SSH 的远程 python 解释器对文件运行
  • 想要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"

以供参考:

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

于 2019-09-17T12:20:14.060 回答
2

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

结果是原生 flake8 支持。

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

于 2020-05-19T13:56:26.770 回答