Все четыре инструмента относятся к статическому анализу, но решают разные задачи и часто используются вместе в пайплайне CI.
Flake8
Flake8 — тонкий слой над pycodestyle, pyflakes и рядом плагинов. Основной фокус:
соблюдение стиля кода (PEP 8: отступы, длина строк, пробелы, имена и т.п.);
простые ошибки уровня «мертвый импорт», «неиспользуемая переменная», «перекрытие импортов» (частично за счёт pyflakes);
богатая система плагинов (командный стандарт оформления, проверка docstring’ов и т.п.).
На практике: Flake8 — дешёвый и быстрый линтер, который почти всегда включают первым в пайплайн.
Pylint
Pylint идёт дальше простого стиля и даёт более глубокий анализ:
качество кода: подозрительные конструкции, потенциальные баги, неиспользуемый код;
code smells: слишком большие функции/классы, совпадающие фрагменты кода, плохие имена;
«оценка» модуля в виде числового рейтинга;
более сложные проверки импортов, иерархий и т.п.
Минусы: медленнее Flake8 и даёт много «мнений» из коробки, поэтому его часто конфигурируют под командный стиль или используют точечно.
mypy
mypy — это уже не линтер стиля, а статический проверяющий типов для аннотированного кода:
использует аннотации типов (type hints) и модуль typing;
ловит несоответствия типов: передача str туда, где объявлен int; неверные возвращаемые типы; несовместимые перегрузки и т.п.;
поддерживает строгие режимы, плагинную систему (например, плагины для pydantic, SQLAlchemy).
С точки зрения собеседования важно подчеркнуть: mypy проверяет типы, а не стиль; он не заменяет Flake8/Pylint, а дополняет их.
Radon
Radon специализируется на метриках сложности и качества:
цикломатическая сложность функций/методов;
поддерживаемость кода (Maintainability Index);
подсчёт raw‑метрик (количество строк кода, комментариев и т.п.).
На основе Radon можно искать «горячие точки» — функции c высокой сложностью, которые стоит рефакторить, и отслеживать динамику метрик по проекту.
Хорошая устная формулировка
Flake8 — лёгкий линтер и стайл‑чекер; Pylint — более тяжёлый анализатор качества и стиля; mypy — проверяющий типов поверх аннотаций; Radon — анализатор сложностей и метрик. В живых проектах их обычно комбинируют: Flake8/Pylint для стиля и качества кода, mypy для типов, Radon — для поиска слишком сложных участков и отслеживания поддерживаемости.