Last modified: February 26, 2019
This article is written in: 🇵🇱
Kod może być składniowo poprawny, ale jednocześnie nieczytelny lub źle zorganizowany. Przestrzeganie pewnych standardów i konwencji pisania kodu jest niezbędne, zwłaszcza gdy w projekcie uczestniczy wielu programistów. Konwencje te opisane są w dokumentach PEP (Python Enhancement Proposals), a wśród nich wyróżniają się PEP8 (styl kodowania) oraz PEP257 (docstringi).
Aby pomóc programistom w przestrzeganiu tych konwencji, stworzono narzędzia do tzw. lintowania kodu, takie jak Pylint, Black, Flake8 czy autoflake.
Pylint
jest jednym z najpopularniejszych narzędzi lintujących dla języka Python. Jest używany do analizowania kodu źródłowego w celu znalezienia błędów programistycznych, pomagania w przestrzeganiu konwencji stylu kodowania, i sugerowania możliwości poprawy kodu.
Pylint działa przez analizę modułów Pythona, które są przekazywane jako argumenty w linii poleceń. Skanuje on moduły, szuka konfiguracji w plikach pylintrc
lub setup.cfg
, a następnie generuje raport na podstawie tych analiz.
Pylint można łatwo zainstalować za pomocą pip:
pip install pylint
Aby użyć Pylint do sprawdzenia pliku, wystarczy uruchomić:
pylint nazwa_pliku.py
Pylint oceni kod i wygeneruje raport, wskazując wszystkie znalezione problemy.
Pylint jest wysoce konfigurowalny. Można dostosować jego zachowanie poprzez modyfikację pliku konfiguracyjnego .pylintrc
. Można utworzyć ten plik komendą:
pylint --generate-rcfile > .pylintrc
W pliku .pylintrc
można dostosować różne aspekty Pylint, takie jak:
Aby wyłączyć sprawdzanie długości linii i ignorować ostrzeżenia o zbyt mało skomplikowanych nazwach zmiennych, możesz dodać do pliku .pylintrc
:
[FORMAT]
max-line-length=120
[BASIC]
good-names=i,j,k,ex,Run,_
Pylint może być rozszerzony za pomocą wtyczek, które można instalować oddzielnie lub pisać samodzielnie. Wtyczki mogą być ładowane poprzez dodanie ich do pliku konfiguracyjnego.
load-plugins=pylint_django
Black
to nowoczesne narzędzie do formatowania kodu Python, które ma na celu zapewnienie jednolitego stylu kodowania. Jest promowane jako "bezkompromisowy" formatowacz kodu, ponieważ nie oferuje szerokiej gamy opcji konfiguracyjnych, co w praktyce oznacza, że każdy używający Black'a kod będzie wyglądać bardzo podobnie.
Można zainstalować Black za pomocą pip:
pip install black
Aby sformatować plik kodu Pythona, użyj:
black nazwa_pliku.py
Możesz także uruchomić Black na całym katalogu, aby sformatować wszystkie pliki Pythona w nim zawarte:
black sciezka/do/katalogu
Black oferuje ograniczone możliwości konfiguracji, ale można dostosować niektóre aspekty, takie jak długość linii. Domyślnie, Black formatuje kod z maksymalną długością linii wynoszącą 88 znaków. Można to zmienić przy użyciu opcji --line-length
:
black --line-length 100 nazwa_pliku.py
Jeśli chcesz, aby Black sprawdzał pliki bez ich formatowania (tryb "check mode"), możesz użyć opcji --check
:
black --check sciezka/do/katalogu
To sprawdzi, czy pliki są już sformatowane zgodnie z regułami Black, bez wprowadzania zmian.
Black można łatwo zintegrować z edytorami kodu, takimi jak VS Code, PyCharm, czy Sublime Text, oraz z systemami kontroli wersji poprzez hooki git. Dla przykładu, konfiguracja pre-commit hook dla Git może wyglądać tak:
repos:
- repo: https://github.com/psf/black
rev: stable
hooks:
- id: black
language_version: python3
Flake8
jest potężnym narzędziem do analizy statycznej kodu Python, które łączy w sobie funkcje stylu kodowania, błędów programistycznych i kontroli złożoności kodu. Jest szeroko używane przez programistów Pythona dla utrzymania czystości kodu i zgodności z PEP8.
Flake8 można zainstalować za pomocą pip, co jest standardowym sposobem instalacji narzędzi Pythona:
pip install flake8
Podstawowe użycie Flake8 polega na uruchomieniu narzędzia w katalogu projektu lub na określonym pliku:
flake8 sciezka/do/pliku.py
Możesz również uruchomić Flake8 na wielu plikach lub całych katalogach:
flake8 sciezka/do/katalogu/
Flake8 jest konfigurowalny za pomocą pliku konfiguracyjnego .flake8
, który można umieścić w katalogu głównym projektu. Można w nim określić różne opcje, takie jak:
Przykładowy plik konfiguracyjny może wyglądać tak:
[flake8]
exclude = .git,__pycache__,docs/source/conf.py,old,build,dist
max-line-length = 120
ignore = E402
max-complexity = 10
Flake8 można łatwo zintegrować z popularnymi środowiskami programistycznymi (IDE), takimi jak PyCharm, Visual Studio Code czy Sublime Text, co pozwala na bieżące analizowanie kodu podczas jego pisania.
Cechy | Black | Pylint | Flake8 |
Automatyczna korekcja | Tak | Nie | Nie |
Wskazówki dotyczące stylu | Nie | Tak | Tak |
Wyszukiwanie błędów | Nie | Tak | Tak |
Ostrzeżenia o złożoności kodu | Nie | Tak | Tak |
Dostępność pluginów | Nie | Tak | Tak |
Możliwość konfiguracji | Nie | Tak | Tak |
Integracja z IDE | Tak | Tak | Tak |
Sprawdzanie typów (Type hints) | Nie | Tak | Nie |