Pylint is a static code analyser for Python 2 or 3. The latest version supports Python 3.7.2 and above.
Pylint analyses your code without actually running it. It checks for errors, enforces a coding standard, looks for code smells, and can make suggestions about how the code could be refactored.
Projects that you might want to use alongside pylint include flake8 (faster and simpler checks with very few false positives), mypy, pyright or pyre (typing checks), bandit (security oriented checks), black and isort (auto-formatting), autoflake (automated removal of unused import or variable), pyupgrade (automated upgrade to newer python syntax) and pydocstringformatter (automated pep257).
Pylint can infer actual values from your code using its internal code representation (astroid).
If your code is
import logging as argparse, Pylint will know that
is in fact a logging call and not an argparse call.
Pylint isn't smarter than you: it may warn you about things that you have
conscientiously done or checks for some things that you don't care about.
During adoption, especially in a legacy project where pylint was never enforced,
it's best to start with the
--errors-only flag, then disable
convention and refactor message with
--disable=C,R and progressively
re-evaluate and re-enable messages as your priorities evolve.
Pylint ships with two additional tools:
pyreverse (standalone tool that generates package and class diagrams.)
symilar (duplicate code finder that is also integrated in pylint)