How to lint Python code with Flake8

The Linting tool is a valuable resource that can help you catch errors and inconsistencies in your code. Flake8 is one of the most popular linting tools for Python.

The Linting tool is a valuable resource that can help you catch errors and inconsistencies in your code. Flake8 is one of the most popular linting tools for Python.

How to lint Python code with Flake8 Picture 1How to lint Python code with Flake8 Picture 1

Flake8 identifies syntax and formatting errors in the code, along with other errors like unused imports. It is very flexible even though it has default rules but you can still change them or add them to suit your requirements.

You can also configure Flake8 to run when saving code updates using VS Code. All these features have made it a valuable tool when writing programs in Python.

Install Flake8

Follow the steps below to install Flake8 on your programming environment. You may need to install Pip on your machine first.

1. Run the command below in terminal to install Flake8:

pip install flake8

2. Verify that Flake8 has been successfully installed by running the following command:

flake8 --version

3. If Flake8 is installed correctly, you should see output similar to this:

4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13 on Linux

 

After successfully installing Flake8, you can start using it.

Use Flake8 to analyze Python code

To understand how to use Flake8, start with the following code. It has some intentional errors. Copy it to a file named greeting.py .

def greeting(name):     print("Hello, " + name) greeting("Alice")  greeting("Bob")

Run Flake8 on a file

The formula to run Flake8 on a file is as follows:

flake8 path/to/file.py

In this example, navigate to the directory containing the file greting.py and run the following command.

flake8 greeting.py

Flake8 will return a message indicating intentional errors:

greeting.py:5:1: E999 IndentationError: unexpected indent

This result indicates that line 5 is unnecessarily indented. To fix it, you need to remove the space at the beginning of this line.

def greeting(name):     print("Hello, " + name) greeting("Alice") greeting("Bob")

Now when you run Flake8 you will get the following warning:

greeting.py:4:1: E305 expected 2 blank lines after class or function definition, found 1 greeting.py:5:16: W292 no newline at end of file

The results show the following errors:

  1. Line 4 will have 2 blank lines after the greeting function definition, but actually only 1 line.
  2. Line 5 will have a newline at the end of the file.

Once these errors are fixed, flake8 will not return any messages.

For now, we've only analyzed one file, but in most cases you'll want to analyze more files.

Run Flake8 on multiple files

Let's say you have test_greeting.py , which contains the following code:

from greeting import greeting def test_greet():     assert greeting("Alice") == "Hello, Alice!" 

To analyze these two files, run the following command.

flake8 greeting.py test_greeting.py

This method works, but if you have more than 2 files, entering filenames can be tedious and error-prone.

Using the following command is better at parsing all files in the current directory:

flake8 .

Understanding Flake8's Errors and Warnings

Flake8 reports two types of errors:

  1. Errors: An error indicating a syntax or structural error that prevents your code from running like the indentation error in the greeting.py example.
  2. Warnings: Warnings indicating a potential error or violation of PEP 8 style rules such as 'no newline at end of file' in the greeting.py example.

 

Some common errors and warnings:

  1. E101: The indent contains a mixture of spaces and tabs.
  2. E302: hoping for 2 blank lines, but found 0.
  3. E999 IndentationError: Unexpected indent.
  4. W291: trailing whitespace.
  5. E501: line too long (maximum 79 characters).
  6. F401: imported but unused module.

When running Flake8, it will output a message like the example above and the line number and location of the code that references the messages. This helps you to know exactly where the problem code is so you will save a lot of debugging time.

Flake8 . Configuration

For some projects, Flake8's rules can be too rigid. In this case, Flake8 allows you to configure it and tailor its behavior to suit your needs.

You can provide configuration options such as:

  1. Ignore specific errors or warnings.
  2. Set the maximum line length.
  3. Specify additional rules.

Example: Create a configuration file named setup.cfg. You can also add configuration options to a file named tox.ini or .flake8.

In this file, start by creating a flake8 section like this:

[flake8]

Then add the options you want to configure:

[flake8] max-line-length = 100 ignore = F401

In this example, max-line-length = 100 tells Flake8 to warn about any line in the source file that exceeds 100 characters in length, ignore = F401 tells Flake8 to ignore import-related errors. use.

You do not need to add these options to a configuration file as you can specify them on the command line as follows:

flake8 --ignore E203 --max-line-length 100

Using a config file is the best approach because you don't need to specify the same options every time you use flake8.

Above is how to use Flake8 to 'lint' Python code . Hope the article is useful to you.

5 ★ | 1 Vote