PEP 8 och PEP 257
PEP8 och PEP257 är två dokument som beskriver kodstandard, respektive standard för dokumentationssträngar, för Python. PEP står för Python Enhancement Proposals och utgör Pythons design- och styrdokument.
Linter
En linter är ett verktyg som används vid programmering som hjälper programmeraren hitta olika typer av problem med kod (mer info) utan att nödvändigtvis köra koden.
För att t.ex. kontrollera att en fil följer PEP8 och PEP257 kan man använda lint-programmen pycodestyle
och pydocstyle
.
I terminalen
I LiUs Linux-miljö
- Använd
pycodestyle <fil>
för att kontrollera att PEP8 följs.
Tyvärr verkar inte pydocstyle
vara förinstallerat på systemet längre utan kräver lite mer arbete.
- Alternativ 1: Börja med att aktivera kursens virtuella omgivning för PEP med kommandot
source /courses/729G46/venv_pep/bin/activate
. Använd sedanpydocstyle <fil>
för att kontrollera att PEP257 följs. - Alternativ 2: Man kan också installera
pydocstyle
i sin egen hemkatalog medpip install pydocstyle
. Efter det kan man körapydocstyle
med kommandotpython3 -m pydocstyle <fil>
.
På egen dator
- Installera python-paketen
pydocstyle
ochpycodestyle
. - Kontrollera filer enligt ovan.
I Visual Studio Code
Tidigare kunde man, när man installerat Python-tillägget i Visual Studio Code, konfigurera tillägget så att det använder sig av något linter verktyg precis som i LiUs Linuxmiljö (som kör en något äldre version av VSCode och dess Python-extension). Sedan hösten 2023 har dock denna funktionalitet tagits bort för att göra plats för specialiserade extensions som enbart utför linting.
Några populära extensions för Python-linting i VSCode är Pylint, flake8 och Ruff. Ruff är den mest allsidiga och den enda som i dagsläget kan ersätta pydocstyle.
Installera Ruff
VSCodes Ruff-extension installeras på samma sätt som dess Python-extension.
Korrekta inställningar för Ruff finns också i den settings.json
-fil som finns tillgänglig i kurskatalogen, och som man skulle hämta i Laboration 1. Har man inte hämtat den och lagt den på rätt ställe kan man behöva aktivera Ruff manuellt.
Aktivera linting med Ruff
För att sedan aktivera linting motsvarande pycodestyle och pydocstyle går man till File -> Preferences -> Settings. Där klickar man på menyvalet Extensions och sedan Ruff. En bit ner i Ruff-avsnittet finns inställningen Lint: Args
. Klicka på den Add Item-knappen så får du ett textfält där du skriver in --select=E,W,D
och sedan klickar du på OK.
Detta säger åt Ruff att använda linting-reglerna för fel enligt pycodestyle (E
), varningar enligt pycodestyle (W
) och varningar enligt pydocstyle (D
).
För att hitta andra linting-regler man vill lägga till kan man titta i Ruffs dokumentation över tillgängliga regler. Några särskilt intressanta är Pyflakes (F), isort (I), flake8-builtins (A), flake8-return (RET), flake8-comprehensions (C4), flake8-executable (EXE) och flake8-unused-arguments (ARG). Vill man använda t.ex. isort och flake8-return lägger man till dessa i select-argumentet, dvs --select=E,W,D,I,RET
. Det går att aktivera alla linting-regler i Ruff genom att sätta --select=ALL
men detta är inte rekommenderat.
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2025-08-12