Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kebaikan, keburukan dan bahaya PyLint

Kebaikan, keburukan dan bahaya PyLint

WBOY
WBOYke hadapan
2023-04-10 12:01:031878semak imbas

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

Ujian berfungsi:

collected 2 items test.py .. 2 passed

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)

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

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)

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"]

ditakrifkan dalam kod:

from unittest import mock

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",)

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",)

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",]

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!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam