Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator konfiguracji Ruff

Sekcja [tool.ruff] do pyproject.toml: reguły, wersja i format

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Wybierz wersję Pythona, zestaw reguł i opcje formatowania, aby wygenerować sekcję [tool.ruff] do pyproject.toml.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator konfiguracji Ruff dla Pythona

Generator Ruff tworzy gotową sekcję [tool.ruff] do pyproject.toml. Wybierasz docelową wersję Pythona, długość linii i zestaw reguł, a narzędzie dopisuje też sekcję formattera.

Czym jest Ruff?

Ruff to linter i formatter Pythona napisany w Rust — kilkadziesiąt razy szybszy od Flute8 czy isort, z setkami reguł kompatybilnych z ekosystemem. Konfiguracja mieszka w pyproject.toml, więc nie potrzebujesz osobnych plików setup.cfg czy .flake8.

Kod regułZakres
E, Fbłędy składniowe pyflakes i pycodestyle — podstawa
Iporządek importów (zamiennik isort)
UPmodernizacja do nowszych wersji Pythona
Btypowe błędy logiczne (flake8-bugbear)
SIMupraszczanie warunków i pętli

Długość linii i formatter

Domyślna długość linii Ruff to 88 znaków — standard Blacka. Zespół może ustawić 100 lub 120, jeśli tak redagują kod. Sekcja [tool.ruff.format] włącza formatter zgodny z Blackiem: podwójne cudzysłowy i deterministyczny układ kodu, co kończy dyskusje o formatowaniu w code review.

Jak działa generator konfiguracji Ruff

Generator nie zgaduje — każde ustawienie z formularza mapuje wprost na konkretny klucz w pliku pyproject.toml. Wybrana wersja Pythona trafia do klucza target-version, długość linii do line-length, a zaznaczone grupy reguł do listy select. Jeśli włączysz formatter, narzędzie dopisuje drugą sekcję, [tool.ruff.format], która działa niezależnie od listy reguł lintera. Wszystko ląduje w jednym pliku, więc nie powstają dodatkowe setup.cfg czy .flake8.

Długość linii jest wspólna dla obu etapów pracy Ruffa. Ta sama wartość — 88, 100 albo 120 — decyduje o tym, kiedy linter zgłosi przekroczenie linii, i o tym, jak formatter zawija kod. Ustawienie tych wartości rozłącznie kończy się sytuacją, w której formatter łamie linię, a linter i tak ją zgłasza, dlatego generator trzyma jedną liczbę w obu miejscach.

Grupy reguł są oznaczone krótkimi kodami literowymi i każdy kod to osobny zestaw sprawdzeń. Zaznaczenie grupy w formularzu to dopisanie jej kodu do listy select — nic więcej się za tym nie kryje, a kolejność kodów na liście nie zmienia działania lintera.

Przykład krok po kroku

  1. Wybierasz docelową wersję Pythona — na przykład 3.12, co w pliku zapisuje się jako target-version = "py312". Od tej wartości zależy zestaw reguł modernizujących (grupa UP).
  2. Ustawiasz długość linii na 100. Domyślne 88 zostaje zastąpione, a różnica wynosi 12 znaków na rzecz dłuższych linii.
  3. Zaznaczasz sześć grup reguł: E, F, I, UP, B oraz SIM. Każda z nich dopisuje jeden kod do listy select, więc w pliku pojawia się lista sześciu elementów.
  4. Włączasz formatter. Generator dopisuje drugą sekcję, [tool.ruff.format], z ustawieniami zgodnymi z Blackiem — podwójne cudzysłowy i deterministyczny układ kodu.
  5. Wynik to gotowa sekcja [tool.ruff] z target-version, line-length i select oraz sekcja [tool.ruff.format] — łącznie dwie sekcje i jedna lista reguł. Wklejasz je do pyproject.toml i uruchamiasz ruff check, a potem ruff format.

Tabela referencyjna reguł i ustawień

Element konfiguracjiCo obejmujeKiedy włączyć
Ebłędy pycodestyle — styl i składnia, w tym przekroczenie długości liniizawsze, to podstawa konfiguracji
Fbłędy pyflakes — nieużywane importy, niezdefiniowane nazwyzawsze, łapie realne błędy, nie kosmetykę
Iporządek importów, zamiennik isortgdy kod ma wielu autorów albo importy rosną
UPmodernizacja składni do nowszej wersji Pythonagdy target-version jest wyższy niż stary kod w repo
Btypowe błędy logiczne z flake8-bugbeargdy chcesz wyłapać pułapki, których nie widzi E i F
SIMupraszczanie warunków i pętligdy zależy ci na czytelności, nie tylko na poprawności
line-lengthdomyślnie 88, zespoły ustawiają 100 lub 120gdy zespół ma własny standard redakcji kodu
[tool.ruff.format]formatter zgodny z Blackiem, podwójne cudzysłowygdy chcesz zakończyć spory o formatowanie w code review

Praktyczne wskazówki

  • Zacznij od E i F. Te dwie grupy nie wymagają zmian w stylu pisania i niemal zawsze przechodzą na istniejącym kodzie, więc nadają się na pierwszy commit z Ruffem.
  • Dodaj I i UP od razu. Porządek importów i modernizacja składni rzadko psują działający kod, a oszczędzają ręcznej pracy przy każdym nowym pliku.
  • Trzymaj jedną długość linii. Jeśli wpiszesz 100, nie zostawiaj formattera na 88 — rozjazd tych dwóch wartości powoduje walkę narzędzi o ten sam fragment kodu.
  • Nie włączaj wszystkiego naraz. Każda grupa reguł to potencjalnie setki zgłoszeń w istniejącym repo. Dodawaj je partiami, żeby dało się przejrzeć wynik.
  • Uruchamiaj fix przed formatem. Najpierw ruff check --fix porządkuje kod zgodnie z regułami, potem ruff format ustala układ — odwrotna kolejność zmusza formatter do powtórnej pracy.

Ograniczenia narzędzia

  • Nie analizuje twojego kodu. Generator wypisuje konfigurację na podstawie wybranych opcji i nie wie, ile zgłoszeń pojawi się po jej włączeniu w twoim projekcie.
  • Nie ustawia wyjątków per plik. Sekcje typu per-file-ignores, wyłączanie pojedynczych reguł czy ignorowanie katalogów musisz dopisać ręcznie, jeśli są potrzebne.
  • Nie sprawdza kontekstu projektu. Nie wie, czy w repo działa już Black, isort albo flake8, więc nie wykryje konfliktu między dwoma formatterami ani podwójnego porządkowania importów.
  • Nie weryfikuje wersji Ruffa. Nazwy kluczy i dostępne grupy reguł zmieniają się między wydaniami, więc wynik warto porównać z dokumentacją wersji, którą masz zainstalowaną.

Najczęstsze pytania

Czy Ruff zastąpi Flake8 i isort?

Tak — pokrywa większość ich reguł i działa znacznie szybciej. Migracja zwykle sprowadza się do przeniesienia wybranych reguł do select w pyproject.toml.

Jakie reguły wybrać na start?

Zestaw E, F jest bezpieczny dla każdego projektu. Importy (I) i modernizacja (UP) zwykle nie psują kodu, więc warto dodać je od razu.

Czy Ruff naprawia błędy automatycznie?

Tak, dla wielu reguł działa ruff --fix — np. porządkuje importy i usuwa nieużywane. Formatter uruchamiasz komendą ruff format.

Czym różni się select od extend-select w konfiguracji Ruffa?

Select zastępuje domyślny zestaw reguł, a extend-select dokłada reguły do zestawu domyślnego. Generator podaje gotową listę w select, więc jeśli chcesz zachować domyślne reguły Ruffa i tylko coś dołożyć, przepisz listę do extend-select.

Jaką wartość line-length wybrać — 88, 100 czy 120?

88 to domyślna wartość Ruffa i standard Blacka, więc nic nie musisz zmieniać. Wartości 100 i 120 mają sens tylko wtedy, gdy cały zespół faktycznie tak redaguje kod — inaczej formatter będzie zawijał linie wbrew przyzwyczajeniom autorów.

Czy generator obsługuje reguły spoza listy E, F, I, UP, B i SIM?

Nie — narzędzie oferuje właśnie te grupy. Pozostałe reguły możesz dopisać ręcznie w select, dopisując ich kody do wygenerowanej listy.

Czy konfigurację Ruffa można trzymać poza pyproject.toml?

Tak, Ruff czyta też dedykowany plik ruff.toml oraz .ruff.toml. Generator tworzy jednak sekcję [tool.ruff] do pyproject.toml, żeby cała konfiguracja projektu została w jednym pliku.

Czy po wklejeniu konfiguracji trzeba jeszcze coś zmienić w projekcie?

Sama sekcja nic nie zmienia, dopóki nie uruchomisz ruff check albo ruff format. Warto też dodać wywołanie Ruffa do skryptu CI lub hooka przed commitem, inaczej konfiguracja zostanie niewykorzystana.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!