Ruff va Pre-commit: Python Kod Tekshirishni Avtomatlashtirish
Muallif: Javohir Abdullayev · · Python

Dasturchi Vaqtini Tejash: Kod Sifatini Avtomatlashtirish
Har bir Python dasturchisi kod yozish jarayonida formatlash xatolari, tartibsiz importlar yoki e'tibordan chetda qolgan sintaktik kamchiliklarga duch keladi. Ilgari bu muammolarni hal qilish uchun loyihaga bir nechta alohida vositalar o'rnatilar edi: formatlash uchun Black, importlarni saralash uchun isort va xatolarni topish uchun Flake8. Biroq, bu vositalarni alohida ishga tushirish vaqt oladi va yirik loyihalarda tekshiruv jarayoni sezilarli darajada sekinlashadi.
Ushbu maqolada Rust tilida yozilgan, an'anaviy vositalardan 10 dan 100 baravargacha tez ishlaydigan Ruff linteri hamda uni Git bilan bog'lovchi Pre-commit tizimini ko'rib chiqamiz. Bu kombinatsiya loyihangiz sifatini oshiradi va vaqtingizni sezilarli tejaydi.
Ruff Nima va Nega U Shunchalik Mashhur?
Ruff — bu Python ekotizimi uchun yaratilgan yangi avlod linteri va kod formatlagichi hisoblanadi. Uning asosiy ustunligi tezligidadir. Rust tili imkoniyatlaridan foydalangani sababli u soniyaning kichik ulushlarida o'n minglab qator kodni tekshirishga qodir.
Ruff quyidagi vositalarning o'rnini bir o'zi bosadi:
- Flake8 va uning o'nlab plaginlari
- Black formatlagichi
- isort import saralagichi
- pyupgrade yangi sintaksisga o'tkazish vositasi
Pre-commit: Xatolarni Omborga Kiritmaslik Usuli
Pre-commit — bu Git hook boshqaruv tizimi bo'lib, har gal dasturchi git commit buyrug'ini berganida avtomatik ravishda belgilangan tekshiruvlarni amalga oshiradi. Agar kodda xato bo'lsa yoki format buzilgan bo'lsa, commit qabul qilinmaydi va vosita kodni o'zi to'g'irlab beradi. Bu esa jamoada kod tozaligini saqlashda qo'l mehnati va inson omilini kamaytiradi.
Amaliy Qo'llanma: Loyihaga Ruff va Pre-commit O'rnatish
Keling, yangi yoki mavjud loyihangizda ushbu vositalarni noldan sozlashni ko'rib chiqamiz.
1. Kerakli Paketlarni O'rnatish
Terminal orqali virtual muhitingizga (virtualenv, poetry yoki pipenv) vositalarni o'rnating:
pip install ruff pre-commit2. .pre-commit-config.yaml Faylini Yaratish
Loyihaning ildiz papkasida .pre-commit-config.yaml nomli fayl yarating va unga quyidagi konfiguratsiyani kiriting:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.4
hooks:
# Xatolarni tekshirish va avtomatik to'g'irlash
- id: ruff
args: [--fix]
# Kodni Black uslubida formatlash
- id: ruff-format
3. Ruff Sozlamalarini pyproject.toml Fayliga Qo'shish
Ruff sozlamalarini boshqarish uchun pyproject.toml faylidan foydalanish eng to'g'ri amaliyot hisoblanadi. Loyihangiz talabiga ko'ra qator uzunligi va tekshiruv qoidalarini belgilang:
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "UP"]
ignore = ["E501"]
Bu yerda E va F sintaksis hamda mantiqiy xatolar, I importlar tartibi (isort), UP esa zamonaviy Python sintaksisini (pyupgrade) nazorat qiladi.
4. Hooklarni Faollashtirish
Sozlamalar tayyor bo'lgach, Git hooklarini faollashtiring:
pre-commit installEndi har safar kod o'zgartirilib, commit qilinayotganda Ruff chaqmoqdek tezlikda ishga tushadi, keraksiz bo'shliqlarni olib tashlaydi, importlarni alifbo tartibida to'g'irlaydi va yashirin xatolarni aniqlaydi.
Barcha Fayllarni Bir Yo'la Tozalash
Agar siz ushbu vositani eski loyihaga qo'shgan bo'lsangiz, birinchi marta barcha mavjud fayllarni tozalab olish tavsiya etiladi. Buning uchun quyidagi buyruqni bering:
pre-commit run --all-filesXulosa va Samaradorlik
Ruff va Pre-commit kombinatsiyasini joriy qilish dasturchiga vaqtni bekorchi formatlash bahslariga emas, balki loyiha biznes mantiqiga qaratish imkonini beradi. Tezkor qayta aloqa xatolarning erta bosqichda aniqlanishini ta'minlaydi, bu esa frilans loyihalarda ham, yirik jamoaviy muhitda ham ish unumdorligini kamida ikki barobarga oshiradi.
Teglar: #python #pre-commit #ruff #kod sifati #avtomatlashtirish