Pylint is a static code analyzer for Python that checks source code without executing it.
Pylint solves the problem of maintaining code quality and catching errors early by analyzing Python code for bugs, style violations, code smells, and refactoring opportunities. Its distinguishing approach relies on inference: rather than trusting type hints alone, Pylint builds an internal code representation using astroid to infer actual values of nodes. This means it can track that code like `import logging as argparse` followed by `argparse.error(...)` is actually a logging call, not an argparse call, allowing it to catch issues that simpler linters miss. This inference capability comes at a performance cost but enables deeper analysis, particularly in codebases without complete type annotations.
Pylint suits projects where catching subtle bugs and maintaining consistent code standards matter more than linting speed. It works well in mature codebases and teams that value thorough static analysis. The tool integrates with most editors and IDEs and can be installed via pip, optionally with spelling support through enchant.
The project maintains strong engagement with its user base: almost all open issues come from outside users rather than the core team, reflecting a substantial base of real-world adopters. Maintainers typically respond to new issues and pull requests within a day. Work in the issue tracker centers on three areas: implementing missing checks (Needs PR), fixing false positives that the tool incorrectly reports, and addressing bugs.