Descriptive flake8 errors in PyCharm
It is definitely possible.
One approach would be to adjust the flake8
output using the --format
command-line option to specify http(s) links to the Flake8Rules
catalog:
--format='%(path)s:%(row)d,%(col)d:%(code)s:%(text)s:https://lintlyci.github.io/Flake8Rules/rules/%(code)s.html'
The problem then is for the console or PyCharm output window to render the links properly.
Fortunately, we can do that using the plugins - "Awesome Console" for the terminal and "Console Link" for the output window.
Step-by-step Instructions
- make sure to have
flake8
installed in the current Python environment - install "Awesome Console" plugin:
- go to
PyCharm Preferences -> Plugins -> Browser Repositories...
- find "Awesome Console" and install (PyCharm restart required):
- configure "flake8" as an External Tool:
- go to
PyCharm Preferences -> Tools -> External Tools -> "+"
- configure the path to
flake8
as well as$FilePath$
placeholder for the desired directory/path to be processed:
Demo
Now, let's say we have created this test.py
file with a few violations:
def f(a = 10):
return a*10
If we right-click on a test.py
file, select External Tools -> flake8
, this is the output we are going to get (note the clickable links for every warning):
Now, whenever in doubt, we can follow the link for additional details about a warning.
This is just one way to do it, would be happy to hear if there is an easier or better way to combine these tools and projects.
I've wrote a library that offer - kind of native flake8 integration with pycharm. The library work by pretending to be a pylint executable. It accept pylint arguments and translate it to flake8 counterpart. Similarly it translate flake8 output to equivalent pylint output.
Result is native flake8 support.
https://gitlab.com/ramast/flake8-for-pycharm/
To all the folks, who need:
- run against files using a remote python interpreter with SSH
- who want only flake8 on changed files regarding git status
- who want to pass any other flake8 arguments without pain
To setup that kind of tool in Pycharm:
File | Settings | Tools | Remote SSH External Tools
see below screen for example configuration:
Arguments: -c "flake8 $(git status -s | grep -E '\.py$' | cut -c 4-) --max-line-lengt=120"
In my case the crucial thing was:
- use
/bin/bash
instead offlake8
directly - Filling the arguments section by
-c "whatever args subcommands etc I need here"
For reference:
$(git status -s | grep -E '\.py$' | cut -c 4-)
is responsible for passing locations of files with changes according to git version control- https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000610520-Remote-SSH-external-tool-run-multiple-commands-once
NOTE: to have your flake8 from virtualenv you might want to specify full path like:
/z/your_virtual_envs/bin/flake8
Today i Also face this problem although @alecxe answer is good for one project settings
If you want to set flake8 globally , you can follow below process
- make sure flake8 installed in your project
- make sure virtualenv path set in pycharm
- configure flake8 as external tool goto file> settings> (Tools) > External Tools > '+'
configure the path
Program - The path to the flake8 executable $PyInterpreterDirectory$ is a directory where the Python interpreter of the current project is placed
Argument- Specifies what files and folders should be checked $FilePath$
Working directory - Project root directory $ContentRoot$