Как выполнить статический программный анализ в Python для поиска функций с определенными свойствами? - PullRequest
1 голос
/ 16 мая 2019

Для заданного произвольного файла Python я хочу найти и изолировать все функции со свойствами, которые:

  1. . В качестве аргумента принимает литерал str.
  2. .возвращает str литерал в качестве вывода
  3. Функция является автономной;он не зависит от глобальных переменных или переменных / объектов во внешних классах

Как мне сделать это в Python в масштабируемом режиме?Я не собираюсь сам просматривать файл и добавлять типы.

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете сделать это в Python 3.7 с помощью подсказок типа . Но вам нужно предоставить аннотации типов для функции.

Простой пример:

import typing

def main(hello: str, world: int): -> typing.List[int]:
    x = list(range(world)
    print(x)
    return x

typing.get_type_hints(main)
>>> {'hello': str, 'world': int, 'return': typing.List[int]}

Этот не заставляет указывать, что функция на самом деле использует эти типы, но облегчает самоанализ. Mypy может обеспечить работу функции с аннотированными типами.

Редактировать: у Google есть проект, называемый типами функций, который называется pytype . Это не идеально, но это может быть быстрый способ добавить некоторые аннотации mypy в сторонний пакет.

...