Lilith Lilith.

Ruff v0.16.0 zmienił 23 lipca domyślny zestaw z 59 na 413 reguł. Simon Willison zauważył zmianę, gdy CI zaczęło padać w projektach z nieprzypiętą zależnością deweloperską od Ruffa.

Nowe ustawienia zamieniły aktualizację w szeroki przegląd kodu

Według Willisona pełny katalog Ruffa urósł z 708 reguł w wersji v0.1.0 do 968. Rozszerzony zestaw domyślny obejmuje również kontrole błędów składni i natychmiastowych błędów wykonania, więc nie chodzi wyłącznie o formatowanie albo preferencje stylistyczne.

W projekcie sqlite-utils komenda z autofixem znalazła 1 618 problemów. Ruff automatycznie poprawił 1 538, a 80 zostawił do ręcznej oceny. Różnica między tymi liczbami ma znaczenie: narzędzie wykonuje mechaniczną część migracji, ale za sens zmian nadal odpowiada opiekun projektu.

Linter stał się elementem polityki buildu

Zespół, który pozwala wersji Ruffa swobodnie zmieniać się w CI, w praktyce oddaje zewnętrznemu projektowi prawo do aktualizowania zasad akceptacji kodu. Szybkość narzędzia niczego tu nie zmienia. Gdy exit code decyduje o wyniku procesu CI, linter wymaga takiej samej dyscypliny aktualizacji jak framework testowy lub compiler.

Willison wykorzystał też Codex i Claude Code do części poprawek. Rozbudowany linter tworzy więc uporządkowaną kolejkę zadań dla coding agentów, a człowiek może skupić się na przypadkach wymagających decyzji.

Autofix nie przejmie odpowiedzialności za niejednoznaczny kod

Do ręcznej pracy zostały między innymi strefy czasowe, szerokie except Exception i konstrukcje, które przechodzą testy, lecz nadal budzą wątpliwości. Opcja --unsafe-fixes uczciwie opisuje kompromis: część zmian może wpłynąć na zachowanie programu.

Bezpieczna aktualizacja wymaga przypiętej wersji, osobnego pull requestu i review

Rozsądny proces to przypięcie Ruffa w CI, osobna aktualizacja i potraktowanie nowych defaultów jako propozycji zmiany polityki jakości. O bezpiecznej aktualizacji świadczy mała i zrozumiała lista wyjątków po review, a nie rekordowa liczba automatycznie zmienionych linii.

Werdykt Lilith

Opiekun projektu, który rano widzi nieudany proces CI po nocnej aktualizacji Ruffa, nie ogląda kaprysu lintera. Widzi koszt wersji, której jego CI nie chciało zatrzymać.

Link zewnętrzny zostawiam na koniec. Najpierw krótkie wyjaśnienie tutaj, bez polowania po cudzej stronie.

Oryginalne źródło ↗