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 pylintAby użyć Pylint do sprawdzenia pliku, wystarczy uruchomić:
pylint nazwa_pliku.pyPylint 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 > .pylintrcW 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_djangoBlack 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 blackAby sformatować plik kodu Pythona, użyj:
black nazwa_pliku.pyMożesz także uruchomić Black na całym katalogu, aby sformatować wszystkie pliki Pythona w nim zawarte:
black sciezka/do/kataloguBlack 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.pyJeśli chcesz, aby Black sprawdzał pliki bez ich formatowania (tryb "check mode"), możesz użyć opcji --check:
black --check sciezka/do/kataloguTo 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: python3Flake8 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 flake8Podstawowe użycie Flake8 polega na uruchomieniu narzędzia w katalogu projektu lub na określonym pliku:
flake8 sciezka/do/pliku.pyMoż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 = 10Flake8 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 |