Apabila membangunkan ReadmeGenie, saya menyasarkan untuk memastikan kualiti kod yang konsisten dengan persediaan automatik untuk linting dan pemformatan. Selepas mempertimbangkan beberapa alat, saya memilih Ruff sebagai linter dan Hitam sebagai pemformat kod. Walaupun Ruff juga boleh mengendalikan linting dan pemformatan, saya memutuskan untuk menyediakan Hitam sebagai pemformat berasingan untuk mendapatkan pengalaman dengan konfigurasi kedua-dua alatan. Di bawah, saya akan berkongsi sebab saya memilih alatan ini, cara saya mengkonfigurasinya untuk projek saya, cabaran yang saya hadapi dan pelajaran yang saya pelajari sepanjang perjalanan.
Ruff ialah linter pantas untuk Python yang menyokong pelbagai peraturan linting daripada linter lain (seperti Flake8 dan Pyflakes) dan menawarkan peningkatan prestasi yang ketara. Ia sangat boleh disesuaikan, yang membolehkan saya menentukan gabungan peraturan sambil memastikan keserasian dengan Hitam untuk pemformatan. Reka bentuk Ruff untuk kelajuan dan kebolehlanjutan adalah sesuai untuk projek yang mengutamakan kecekapan tanpa mengorbankan kualiti.
Hitam ialah pemformat Python yang menguatkuasakan satu gaya pemformatan dengan ketat, membantu mengurangkan perbincangan dan ketidakkonsistenan mengenai penggayaan kod. Walaupun Ruff menawarkan keupayaan pemformatan asas, pendekatan khusus Black memberikan beberapa kelebihan:
Penggunaan Luas: Hitam digunakan secara meluas, menjadikannya lebih mudah untuk disepadukan ke dalam kebanyakan aliran kerja pembangunan, terutamanya dalam projek kerjasama.
Dokumentasi Hitam: https://github.com/psf/black
Untuk memastikan Ruff dan Black berfungsi dengan lancar dalam ReadmeGenie, saya mengkonfigurasinya dalam kedua-dua pyproject.toml dan
.pre-commit-config.yaml, membenarkan pembangun memformat dan memasukkan kod secara automatik apabila membuat komitmen.
Persediaan ini memastikan Ruff digunakan semata-mata untuk linting dan Hitam untuk pemformatan:
# pyproject.toml # Set up black as formatter [tool.black] line-length = 88 target-version = ["py311"] # Set up ruff as linter only [tool.ruff] # Exclude directories that don’t need linting (e.g., virtual environments) exclude = [ "venv/", "__pycache__/" ] fix = true # Enable specific linting rules select = ["F", "E", "W", "B", "I", "S"] # Example codes: F=flake8, E=errors, W=warnings, B=bugbear, I=import, S=safety # Exclude Black-compatible rules to avoid conflicts with Black's formatting. ignore = ["E501", "E203", "E231"] # Exclude Black-incompatible style issues
Menggunakan cangkuk prakomit, saya mengkonfigurasi .pre-commit-config.yaml untuk menguatkuasakan linting dan pemformatan pada setiap komit:
# .pre-commit-config.yaml repos: - repo: https://github.com/psf/black rev: 23.1.0 hooks: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit rev: v0.7.1 hooks: - id: ruff
Dengan persediaan di atas, anda boleh menggunakan arahan berikut:
# pyproject.toml # Set up black as formatter [tool.black] line-length = 88 target-version = ["py311"] # Set up ruff as linter only [tool.ruff] # Exclude directories that don’t need linting (e.g., virtual environments) exclude = [ "venv/", "__pycache__/" ] fix = true # Enable specific linting rules select = ["F", "E", "W", "B", "I", "S"] # Example codes: F=flake8, E=errors, W=warnings, B=bugbear, I=import, S=safety # Exclude Black-compatible rules to avoid conflicts with Black's formatting. ignore = ["E501", "E203", "E231"] # Exclude Black-incompatible style issues
# .pre-commit-config.yaml repos: - repo: https://github.com/psf/black rev: 23.1.0 hooks: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit rev: v0.7.1 hooks: - id: ruff
Arahan ini menggunakan pembetulan pada semua fail Python, memastikan penggayaan yang konsisten dan pemeriksaan kualiti.
Untuk mengautomasikan Ruff dan Black semasa menyimpan, saya menambah konfigurasi berikut dalam .vscode/settings.json:
ruff check . --fix
Persediaan ini menjadikan Black sebagai pemformat lalai dan Ruff satu-satunya linter aktif dalam Kod VS, membolehkan kedua-duanya dijalankan
secara automatik apabila disimpan.
Setelah dikonfigurasikan, Ruff dan Black mengenal pasti beberapa isu:
Satu cabaran yang ketara ialah memahami bahawa sesetengah gaya tidak serasi antara Ruff dan Black. Contohnya:
Menggunakan Ruff dan Black bersama-sama telah menjadi cara terbaik untuk meningkatkan kualiti kod. Inilah yang saya pelajari:
Atas ialah kandungan terperinci Menyediakan Alat untuk Kualiti Kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!