搜尋
首頁後端開發Python教學PyLint 的優點、缺點和危險

PyLint 的優點、缺點和危險

充分利用 PyLint。

敲黑板:PyLint 其實很好!

“PyLint 可以拯救你的生命”,這是一句誇張的描述,但沒有你想像的那麼誇張。 PyLint 可以讓你遠離非常難找到的和複雜的缺陷。在最差的情況下,它只可以節省測試運行的時間。在最好的情況下,它可以幫助你避免生產環境中複雜的錯誤。

優點

我不好意思說這種情況是多麼普遍。測試的命名總是那麼奇怪:沒有人關心這個名稱,而且通常也找不到一個自然的名稱。例如以下程式碼:

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

測試生效:

collected 2 items test.py .. 2 passed

但問題是:如果你覆寫了一個測試的名稱,測試框架將愉快地跳過這個測試!

實際上,這些檔案可能有數百行,而新增測試的人可能不知道所有的名稱。除非有人仔細查看測試輸出,否則一切看起來都很好。

最糟糕的是,被覆蓋測試的添加被覆蓋測試造成的破壞,以及連鎖反應的問題可能要幾天、幾月甚至幾年才能發現。

PyLint 會找到它

就像一個好朋友一樣,PyLint 可以幫助你。

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

缺點

就像 90 年代的情境喜劇一樣,你對 PyLint 了解的越多,問題就越多。以下是一個庫存建模程式的常規代碼:

"""Inventory abstractions"""import attrs@attrs.defineclass Laptop:"""A laptop"""ident: strcpu: str

但PyLint 似乎有自己的觀點(可能形成於90 年代),並且不怕把它們作為事實陳述出來:

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

危險

有沒有想過在一個數百萬人使用的工具中加入自己未證實的觀點? PyLint 每月有 1200 萬次下載。

「如果太挑剔,人們會取消檢查」 — 這是PyLint GitHub 的6987 號議題,於2022 年7 月3 號提出

#對於新增一個可能有許多誤報的測試,它的態度是... “”。

讓它為你工作

PyLint 很好,但你需要小心地與它配合。為了讓 PyLint 為你工作,以下是我推薦的三件事:

1、固定版本

固定你使用的 PyLint 版本,避免任何驚喜!

在你的 .toml 檔案中定義:

[project.optional-dependencies]pylint = ["pylint"]

在程式碼中定義:

from unittest import mock

這與下列程式碼對應:

# 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、預設禁止

停用所有檢查,然後啟用那些你認為誤報比率高的。 (不只是漏報/誤報的比率!)

# 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、檢查器

以下是我喜歡的檢查器。加強專案的一致性,避免一些明顯的錯誤。

checkers = ["missing-class-docstring","missing-function-docstring","missing-module-docstring","function-redefined",]

使用 PyLint

你可以只使用 PyLint 好的部分。在 CI 中運行它以保持一致性,並使用常用檢查器。

放棄不好的部分:預設禁止檢查器。

避免危險的部分:固定版本以避免意外。

以上是PyLint 的優點、缺點和危險的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
Python中的合併列表:選擇正確的方法Python中的合併列表:選擇正確的方法May 14, 2025 am 12:11 AM

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

如何在Python 3中加入兩個列表?如何在Python 3中加入兩個列表?May 14, 2025 am 12:09 AM

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

Python串聯列表字符串Python串聯列表字符串May 14, 2025 am 12:08 AM

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

Python執行,那是什麼?Python執行,那是什麼?May 14, 2025 am 12:06 AM

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python:關鍵功能是什麼Python:關鍵功能是什麼May 14, 2025 am 12:02 AM

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python:編譯器還是解釋器?Python:編譯器還是解釋器?May 13, 2025 am 12:10 AM

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

python用於循環與循環時:何時使用哪個?python用於循環與循環時:何時使用哪個?May 13, 2025 am 12:07 AM

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

Python循環:最常見的錯誤Python循環:最常見的錯誤May 13, 2025 am 12:07 AM

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐個偏置,零indexingissues,andnestedloopineflinefficiencies

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境