Table of Contents
Advantages
PyLint will find it
Cons
DANGER
Make it work for you
1. Fixed version
2. Default prohibition
3. Checkers
Using PyLint
Home Backend Development Python Tutorial Pros, cons, and dangers of PyLint

Pros, cons, and dangers of PyLint

Apr 10, 2023 pm 12:01 PM
pylint

Pros, cons, and dangers of PyLint

Get the most out of PyLint.

Knock on the blackboard: PyLint is actually good!

"PyLint can save your life" is an exaggeration, but not as much as you might think. PyLint can save you from very hard to find and complex defects. At worst, it only saves test running time. At its best, it helps you avoid complex errors in production.

Advantages

I'm embarrassed to say how common this is. Test names are always so weird: no one cares about the name, and often a natural name can't be found. For example, the following code:

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
Copy after login

The test takes effect:

collected 2 items test.py .. 2 passed
Copy after login

But the problem is: if you override the name of a test, the testing framework will happily skip the test!

In reality, these files may have hundreds of lines, and the person adding a new test may not know all the names. Everything looks fine until one takes a closer look at the test output.

The worst part is, The addition of covered tests, The damage caused by covered tests, and the chain reaction problemmay take several It may take days, months or even years to discover.

PyLint will find it

Like a good friend, PyLint can help you.

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

Cons

Just like the 90s sitcom, the more you learn about PyLint, the more problems you get. Here's regular code for a stock modeling program:

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

But PyLint seems to have its own opinions (probably formed in the 90s) and isn't afraid to state them as fact:

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

DANGER

Ever thought about adding your own unsubstantiated opinion to a tool used by millions of people? PyLint has 12 million downloads per month.

"If you're too picky, people will uncheck" — This is PyLint GitHub issue 6987, raised on July 3, 2022

For a possible addition There are a lot of false positives for the test, and its attitude is... "eh".

Make it work for you

PyLint is great, but you need to be careful with it. To make PyLint work for you, here are the three things I recommend:

1. Fixed version

Fix the version of PyLint you use to avoid any surprises!

Define in your ​​.toml​​ file:

[project.optional-dependencies]pylint = ["pylint"]
Copy after login

Define in code:

from unittest import mock
Copy after login

This corresponds to the following code:

# 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",)
Copy after login

2. Default prohibition

Disable all checks, and then enable those that you think have a high false positive rate. (Not just the false negative/false positive ratio!)

# 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",)
Copy after login

3. Checkers

The following are the checkers I like. Improve project consistency and avoid obvious mistakes.

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

Using PyLint

You can just use PyLint for the good parts. Run it in CI for consistency and use common checkers.

Discard the bad part: disabling the checker by default.

Avoid dangerous parts: Fixed version to avoid surprises.

The above is the detailed content of Pros, cons, and dangers of PyLint. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1670
14
PHP Tutorial
1273
29
C# Tutorial
1256
24
Python vs. C  : Learning Curves and Ease of Use Python vs. C : Learning Curves and Ease of Use Apr 19, 2025 am 12:20 AM

Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

Python and Time: Making the Most of Your Study Time Python and Time: Making the Most of Your Study Time Apr 14, 2025 am 12:02 AM

To maximize the efficiency of learning Python in a limited time, you can use Python's datetime, time, and schedule modules. 1. The datetime module is used to record and plan learning time. 2. The time module helps to set study and rest time. 3. The schedule module automatically arranges weekly learning tasks.

Python vs. C  : Exploring Performance and Efficiency Python vs. C : Exploring Performance and Efficiency Apr 18, 2025 am 12:20 AM

Python is better than C in development efficiency, but C is higher in execution performance. 1. Python's concise syntax and rich libraries improve development efficiency. 2.C's compilation-type characteristics and hardware control improve execution performance. When making a choice, you need to weigh the development speed and execution efficiency based on project needs.

Learning Python: Is 2 Hours of Daily Study Sufficient? Learning Python: Is 2 Hours of Daily Study Sufficient? Apr 18, 2025 am 12:22 AM

Is it enough to learn Python for two hours a day? It depends on your goals and learning methods. 1) Develop a clear learning plan, 2) Select appropriate learning resources and methods, 3) Practice and review and consolidate hands-on practice and review and consolidate, and you can gradually master the basic knowledge and advanced functions of Python during this period.

Which is part of the Python standard library: lists or arrays? Which is part of the Python standard library: lists or arrays? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary,whilearraysarenot.Listsarebuilt-in,versatile,andusedforstoringcollections,whereasarraysareprovidedbythearraymoduleandlesscommonlyusedduetolimitedfunctionality.

Python vs. C  : Understanding the Key Differences Python vs. C : Understanding the Key Differences Apr 21, 2025 am 12:18 AM

Python and C each have their own advantages, and the choice should be based on project requirements. 1) Python is suitable for rapid development and data processing due to its concise syntax and dynamic typing. 2)C is suitable for high performance and system programming due to its static typing and manual memory management.

Python: Automation, Scripting, and Task Management Python: Automation, Scripting, and Task Management Apr 16, 2025 am 12:14 AM

Python excels in automation, scripting, and task management. 1) Automation: File backup is realized through standard libraries such as os and shutil. 2) Script writing: Use the psutil library to monitor system resources. 3) Task management: Use the schedule library to schedule tasks. Python's ease of use and rich library support makes it the preferred tool in these areas.

Python for Web Development: Key Applications Python for Web Development: Key Applications Apr 18, 2025 am 12:20 AM

Key applications of Python in web development include the use of Django and Flask frameworks, API development, data analysis and visualization, machine learning and AI, and performance optimization. 1. Django and Flask framework: Django is suitable for rapid development of complex applications, and Flask is suitable for small or highly customized projects. 2. API development: Use Flask or DjangoRESTFramework to build RESTfulAPI. 3. Data analysis and visualization: Use Python to process data and display it through the web interface. 4. Machine Learning and AI: Python is used to build intelligent web applications. 5. Performance optimization: optimized through asynchronous programming, caching and code

See all articles