Rumah > pembangunan bahagian belakang > Tutorial Python > Kebaikan, keburukan dan bahaya PyLint

Kebaikan, keburukan dan bahaya PyLint

WBOY
Lepaskan: 2023-04-10 12:01:03
ke hadapan
1963 orang telah melayarinya

Kebaikan, keburukan dan bahaya PyLint

Manfaatkan PyLint sepenuhnya.

Pukul papan: PyLint sebenarnya cukup bagus!

"PyLint boleh menyelamatkan nyawa anda" adalah keterlaluan, tetapi tidak seperti yang anda fikirkan. PyLint boleh menyelamatkan anda daripada kecacatan yang sukar dicari dan kompleks. Paling teruk, ia hanya menjimatkan masa berjalan ujian. Pada tahap terbaik, ia membantu anda mengelakkan ralat yang rumit dalam pengeluaran.

Kebaikan

Saya malu untuk mengatakan betapa biasa perkara ini. Nama ujian sentiasa sangat pelik: tiada siapa mengambil berat tentang nama itu, dan selalunya nama semula jadi tidak ditemui. Contohnya, kod berikut:

def test_add_small():# Math, am I right?assert 1 + 1 == 3def test_add_large():assert 5 + 6 == 11def test_add_small():assert 1 + 10 == 11
Salin selepas log masuk

Ujian berfungsi:

collected 2 items test.py .. 2 passed
Salin selepas log masuk

Tetapi inilah perkaranya: jika anda mengatasi nama ujian, rangka kerja ujian dengan senang hati akan melangkau ujian!

Pada hakikatnya, fail ini mungkin mempunyai ratusan baris dan orang yang menambah ujian baharu mungkin tidak mengetahui semua nama. Semuanya kelihatan baik sehingga seseorang melihat dengan lebih dekat pada output ujian.

Bahagian yang paling teruk ialah, tambahan ujian dilindungi, kerosakan yang disebabkan oleh ujian dilindungi, dan masalah tindak balas rantai boleh mengambilnya mungkin mengambil masa berhari-hari, berbulan-bulan atau bahkan bertahun-tahun untuk ditemui.

PyLint akan menemuinya

Seperti rakan baik, PyLint boleh membantu anda.

test.py:8:0: E0102: function already defined line 1 (function-redefined)
Salin selepas log masuk

Keburukan

Sama seperti sitkom 90an, semakin banyak anda mengetahui tentang PyLint, semakin banyak soalan yang anda perolehi. Berikut ialah kod biasa untuk program pemodelan saham:

"""Inventory abstractions"""import attrs@attrs.defineclass Laptop:"""A laptop"""ident: strcpu: str
Salin selepas log masuk

Tetapi PyLint nampaknya mempunyai pendapatnya sendiri (mungkin dibentuk pada tahun 90-an) dan tidak takut untuk menyatakannya sebagai fakta:

$ pylint laptop.py | sed -n '/^laptop/s/[^ ]*: //p'R0903: Too few public methods (0/2) (too-few-public-methods)
Salin selepas log masuk

Bahaya

Pernah terfikir untuk menambah pendapat anda sendiri yang tidak berasas pada alat yang digunakan oleh berjuta-juta orang? PyLint mempunyai 12 juta muat turun setiap bulan.

"Jika anda terlalu memilih, orang akan menyahtanda" — Ini ialah PyLint GitHub isu 6987, dibangkitkan pada 3 Julai 2022

Untuk penambahan yang mungkin Terdapat banyak ujian positif palsu, dan sikapnya ialah... "Hmm".

Jadikan ia berfungsi untuk anda

PyLint bagus, tetapi anda perlu berhati-hati dengannya. Untuk menjadikan PyLint berfungsi untuk anda, berikut ialah tiga perkara yang saya cadangkan:

1. Versi tetap

Sematkan versi PyLint yang anda gunakan untuk mengelakkan sebarang kejutan!

ditakrifkan dalam fail ​​.toml​​ anda:

[project.optional-dependencies]pylint = ["pylint"]
Salin selepas log masuk

ditakrifkan dalam kod:

from unittest import mock
Salin selepas log masuk

Ini sepadan dengan kod berikut:

# noxfile.py...@nox.session(python=VERSIONS[-1])def refresh_deps(session):"""Refresh the requirements-*.txt files"""session.install("pip-tools")for deps in [..., "pylint"]:session.run("pip-compile","--extra",deps,"pyproject.toml","--output-file",f"requirements-{deps}.txt",)
Salin selepas log masuk

2. Dilumpuhkan secara lalai

Lumpuhkan semua semakan, dan kemudian dayakan semakan yang anda fikirkan mempunyai kadar positif palsu yang tinggi. (Bukan sekadar nisbah negatif palsu/positif palsu!)

# noxfile.py...@nox.session(python="3.10")def lint(session):files = ["src/", "noxfile.py"]session.install("-r", "requirements-pylint.txt")session.install("-e", ".")session.run("pylint","--disable=all",*(f"--enable={checker}" for checker in checkers)"src",)
Salin selepas log masuk

3. dam

Inilah dam yang saya suka. Tingkatkan ketekalan projek dan elakkan kesilapan yang jelas.

checkers = ["missing-class-docstring","missing-function-docstring","missing-module-docstring","function-redefined",]
Salin selepas log masuk

Menggunakan PyLint

Anda hanya boleh menggunakan bahagian PyLint yang bagus. Jalankannya dalam CI untuk konsistensi dan gunakan pemeriksa biasa.

Lepaskan bahagian buruk: melumpuhkan pemeriksa secara lalai.

Elak bahagian berbahaya: Versi tetap untuk mengelakkan kejutan.

Atas ialah kandungan terperinci Kebaikan, keburukan dan bahaya PyLint. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan