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
The test takes effect:
collected 2 items test.py .. 2 passed
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)
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
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)
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"]
Define in code:
from unittest import mock
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",)
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",)
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",]
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











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.

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 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.

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.

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

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 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.

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
