PyCharm中的描述性flake8错误

时间:2018-01-02 18:58:06

标签: python pycharm flake8

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

有时,特别是对于Python新手,并非每个flake8警告都是可以理解的,需要进一步说明。

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

有没有办法将PyCharm,flake8Flake8Rules完全结合起来,以显示静态代码分析警告以及Flake8Rules目录的其他说明或链接?

4 个答案:

答案 0 :(得分:10)

绝对有可能。

一种方法是使用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): enter image description here
  3. 将“flake8”配置为External Tool
    • 转到PyCharm Preferences -> Tools -> External Tools -> "+"
    • 配置flake8以及$FileDir$/$FileName$占位符的路径,以便处理所需的目录/路径: enter image description here
  4. 演示

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

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

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

    enter image description here

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

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

答案 1 :(得分:1)

今天,尽管@alecxe答案对于一个项目设置非常有用,但我也面临这个问题

如果要全局设置flake8,则可以执行以下过程

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

配置路径 enter image description here

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

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

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

答案 2 :(得分:1)

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

结果是对flake8的原生支持。

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

答案 3 :(得分:0)

对所有需要的人

  • 使用带有SSH的远程python解释器对文件运行
  • 谁想要 flake8更改关于git状态的文件
  • 想要不加麻烦地传递其他flake8参数

要在Pycharm中设置这种工具:

File | Settings | Tools | Remote SSH External Tools

有关配置示例,请参见以下屏幕: enter image description here

在我看来,关键是:

  1. 直接使用/bin/bash代替flake8
  2. 通过-c "whatever args subcommands etc I need here"填充参数部分

供参考: