PyCharm中的描述性flake8错误

ale*_*cxe 9 python pycharm flake8

PyCharm没有一个对内置支持flake8的时刻.但是,flake8可以配置为作为外部工具运行.

有时,特别是对于Python新手,并非所有flake8警告都是可以理解的,需要进一步澄清.

我们最近偶然发现了一个试图通过支持性示例详细描述每个警告的Flake8Rules项目.

有没有办法结合PyCharm,flake8并且Flake8Rules完全有静态代码分析警告显示附加描述或链接到Flake8Rules目录?

Som*_*mil 16

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

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

  1. 确保在您的项目中安装了 flake8
  2. 确保在 pycharm 中设置了 virtualenv 路径
  3. 将 flake8 配置为外部工具 goto file> settings> External Tools> '+'

配置路径 在此处输入图片说明

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

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

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

  • 要添加键盘快捷键,请转到:设置 -> 键盘映射 -> 外部工具 -> Flake8 右键单击​​ Flake8 并选择“添加键盘快捷键”,然后选择“Alt+F” (3认同)

ale*_*cxe 15

这绝对是可能的.

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

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

然后问题是控制台或PyCharm输出窗口正确呈现链接.

幸运的是,我们可以使用插件 - 终端的"Awesome Console"和输出窗口的"Console Link"来实现.


分步说明

  1. 确保已flake8安装在当前的Python环境中
  2. 安装"Awesome Console"插件:
    • PyCharm Preferences -> Plugins -> Browser Repositories...
    • 找到"Awesome Console"并安装(需要重新启动PyCharm): 在此输入图像描述
  3. 将"flake8"配置为外部工具:
    • PyCharm Preferences -> Tools -> External Tools -> "+"
    • 配置要处理的目标/路径的路径flake8以及$FileDir$/$FileName$占位符: 在此输入图像描述

演示

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

def f(a = 10):
  return a*10
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

现在,只要有疑问,我们可以按照链接获取有关警告的其他详细信息.

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


and*_*abs 7

致所有需要的人们:

  • 使用带有 SSH 的远程 python 解释器对文件运行
  • 谁只想要flake8改变有关 git 状态的文件
  • 想要毫无痛苦地传递任何其他 flake8 参数的人

要在 Pycharm 中设置此类工具:

File | Settings | Tools | Remote SSH External Tools
Run Code Online (Sandbox Code Playgroud)

请参阅下面的屏幕了解示例配置: 在此输入图像描述

论据:-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


Ram*_*ast 5

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

结果是原生 flake8 支持。

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