Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Problems of static analysis in Python

Problems of static analysis in Python

Sobolev Nikita

June 13, 2021
Tweet

More Decks by Sobolev Nikita

Other Decks in Programming

Transcript

  1. Flake8 Плагины pylint Плагины mypy Плагины pylance pytype pyre-check black

    autopep8 fixit yapf pyupgrade Тайпчекеры Линтеры
  2. Flake8 Плагины pylint Плагины mypy Плагины pylance pytype pyre-check black

    autopep8 fixit yapf pyupgrade Тайпчекеры Линтеры Авто-форматеры
  3. <_ast.Module> ┗━ body ┣━ [0] <_ast.Expr> ┃ ┗━ value: <_ast.Call>

    ┃ ┣━ args ┃ ┃ ┣━ [0] <_ast.Name> ┃ ┃ ┃ ┗━ id: first_long_name_with_meaning ┃ ┃ ┣━ [1] <_ast.Name> ┃ ┃ ┃ ┗━ id: second_very_long_name_with_meaning ┃ ┃ ┗━ [2] <_ast.Name> ┃ ┃ ┗━ id: third ┃ ┗━ func: <_ast.Name> ┃ ┗━ id: print 25
  4. Проблемы > Неконсистентность между версиями Python > Нет информации о

    типах > Нет нюансов синтаксиса > Нет комментариев
  5. Проблемы > Представляет собой не "структуру", а простой список >

    Вообще ничего не знает / не умеет > Очень сложен в работе для правил с хоть какой-то логикой
  6. Используется > В инфраструктуре Инстаграма > Во многих новых библиотеках

    для авто-форматирования > Для проверки нюансов синтаксиса
  7. Используется > В инфраструктуре Инстаграма > Во многих новых библиотеках

    для авто-форматирования > Для проверки нюансов синтаксиса > Для анализа кода
  8. Проблемы > У каждой реализации они свои! > Нет единого

    стандарта > В каждом тайпчекере поддерживается далеко не все возможности
  9. Проблемы > У каждой реализации они свои! > Нет единого

    стандарта > В каждом тайпчекере поддерживается далеко не все возможности > Нигде (кроме mypy) нет возможности подключать плагины
  10. Pylint > Примитивная конфигурация > Нет типов > Но лучше

    бы их совсем не было > Невозможно нормально внедрить
  11. typed-linter > Нормальная конфигурация в духе eslint > Провайдеры типов

    > Авто-форматирование на токенах > Нормальное внедрение