12 years of Pylint (or How I learned to stop worrying about bugs)
summary
Pylint celebrates 12 years and claims concrete power: a 35,000‑line tool that finds unused imports, NameErrors, closure‑in‑loop bugs, wrong dunder signatures and bad super() usage, and lists ~180 distinct checks. It builds on astroid plus an inference engine that does partial abstract interpretation, offers a --py3k mode to help port code, and plans Pylint 2.0 with control‑flow graphs and symbolic execution; Google uses a modified fork.
AI-written summary · about
chapters (18)
- 0:00Intro
- 2:28Pylinting ugly code goes like this
- 4:47Pylint can detect real bugs too
- 7:0212 years of what?
- 9:33How pylint works?
- 12:01Astroid nodes
- 15:14Inference example #2
- 17:44Node transforms
- 19:38Inference custom rules
- 20:30Astroid capabilities
- 24:55Pylint - patterns over AST nodes
- 25:55Pylint - visitor pattern example
- 27:23Pylint - abstract interpretation
- 28:24Pylint - checkers
- 29:24Pylint - extra features
- 29:54Pylint - Python 3 porting checker
- 30:43Similar tools: Pychecker
- 31:44Future Pylint
related talks
28mPreventing headaches with linters and automated checks
03h 38mPython Types for Fun and Profit
22mPublishing well formed Python packages
43mPython 3: ten years later
27mStatic Code Analysis with Python
51mTaking Python beyond scripting
30mTyping at scale: statically type-checking a large codebase
25mPublishing well-formed Python packages
