
Библиотека, позволяющая пользователям осматривать папку проекта программного обеспечения (то есть каталог и ее подкаталог) и извлекать всю наиболее релевантную информацию, такую как класс, метод и документация параметров, классы (и их методы), функции и т. Д.
Учитывая папку с кодом, inspect4py будет:
inspect4py будет возвращать Library в качестве основного типа)Все метаданные извлекаются в виде файла JSON.
Inspect4py в настоящее время работает только для проектов Python 3 .
inspect4py Добавлено функциональность графиков потока данных захвата для каждой функции, вдохновленной GraphCodebert: Github & Paper. Иллюстрация дана:
| Исходный код | Список вывода | Сетевое изображение |
|---|---|---|
def Max (a, b): | ('a', 3, 'происходит от', [], []) | ![]() |
inspect4py использует ASTS, в частности модуль AST в Python, генерируя дерево объектов (на файл), все классы которого наследуют от Ast.ast.
inspect4py парсии в каждом из входных файлов в виде дерева AST, извлекая соответствующую информацию и сохраняя ее в качестве файла JSON. Кроме того, он также отражает поток управления каждому входному файлу (ы), используя еще две библиотеки:
Мы также используем docstring_parser, который поддерживает Docstrings в стиле Google и Numpydoc. Некоторые (основные) тесты, проведенные с использованием этой библиотеки, можно найти здесь.
Наконец, мы повторно используем Пигар для автоматического создания требований данного репозитория. Это необязательная функциональность. Чтобы активировать аргумент ( -r ), должен быть указан при запуске Inspect4py.
Пожалуйста, цитируйте нашу демонстрационную бумагу MSR 2022:
@inproceedings{FilgueiraG22,
author = {Rosa Filgueira and
Daniel Garijo},
title = {Inspect4py: {A} Knowledge Extraction Framework for Python Code Repositories},
booktitle = {{IEEE/ACM} 19th International Conference on Mining Software Repositories,
{MSR} 2022, Pittsburgh, PA, USA, May 23-24, 2022},
pages = {232--236},
publisher = {{IEEE}},
year = {2022},
url = {https://dgarijo.com/papers/inspect4py_MSR2022.pdf},
doi = {10.1145/3524842.3528497}
}
Убедитесь, что у вас установлена деревья, необходимо Complier, дополнительная информация:
pip install tree-sitter
Обратите внимание, что если файл «.so» не работает должным образом, рекомендуется запустить следующие смеси, чтобы сгенерировать файл SO для вашей ОС:
git clone https://github.com/tree-sitter/tree-sitter-python
python inspect4py/build.py
Убедитесь, что у вас установлен Graphviz:
sudo apt-get install graphviz
Мы протестировали inspect4py в Python 3.7+. Наша рекомендуемая версия - Python 3.9 .
Мы протестировали inspect4py в Unix, MacOS и Windows 11 (22621.1265).
inspect4py доступен в PYPI! Просто установите его как обычный пакет:
pip install inspect4py
Вы закончили!
Затем попробуйте обновить утилиты Python-DEV: sudo apt-get install python3.X-dev (где x-ваша версия Python)
Подготовьте виртуальную среду Python3, cd в папку inspect4py и установите пакет следующим образом:
git clone https://github.com/SoftwareUnderstanding/inspect4py
cd inspect4py
pip install -e .
Вы закончили!
docstring_parser==0.7
astor
graphviz
click
pigar
setuptools==54.2.0
json2html
configparser
bigcode_astgen
GitPython
tree-sitter
Если вы хотите провести оценки, не забудьте добавить pandas в предыдущий набор.
Вам нужно установить Docker.
Далее, клонировать репозиторий inspect4py :
git clone https://github.com/SoftwareUnderstanding/inspect4py/
Создайте изображение Docker для inspect4py :
docker build --tag inspect4py:1.0 .
Запустите изображение inspect4py :
docker run -it --rm inspect4py:1.0 /bin/bash
Теперь вы можете запустить inspect4py :
root@e04792563e6a:/# inspect4py --help
Для получения дополнительной информации о параметрах выполнения inspect4py , см. Раздел ниже (выполнение).
Обратите внимание, что при запуске inspect4py с Docker вам нужно будет пройти путь к целевому репозиторию для анализа. Вы можете сделать это по:
docker run -it --rm inspect4py:1.0 /bin/bash
# Docker image starts
root@e04792563e6a:/# git clone https://github.com/repo/id
root@e04792563e6a:/# inspect4py -i id
docker run -it -v -v $PWD:/out --rm inspect4py:1.0 /bin/bash
# Docker image starts
root@e04792563e6a:/# inspect4py -i /out/path/to/repo
Другие полезные команды при использовании Docker:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker image rm -f inspect4py:1.0
Инструмент может быть выполнен для проверки файла или всех файлов данного каталога (и его подкаталогов). Например, его можно использовать для осмотра всех файлов Python данного репозитория GitHub (который был ранее клонирован локально).
Инструмент по умолчанию хранит результаты в каталоге OutputDir , но пользователи могут указать свое собственное имя каталога, используя флаги -o или --output .
inspect4py --input_path <FILE.py | DIRECTORY> [--output_dir "OutputDir", --ignore_dir_pattern "__", ignore_file_pattern "__" --requirements --html_output]
Для ясности мы добавили команду help , чтобы объяснить каждый входной параметр:
inspect4py --help
Usage: inspect4py [OPTIONS]
Options:
--version Show the version and exit.
-i, --input_path TEXT input path of the file or directory to
inspect. [required]
-o, --output_dir TEXT output directory path to store results. If
the directory does not exist, the tool will
create it.
-ignore_dir, --ignore_dir_pattern TEXT
ignore directories starting with a certain
pattern. This parameter can be provided
multiple times to ignore multiple directory
patterns.
-ignore_file, --ignore_file_pattern TEXT
ignore files starting with a certain
pattern. This parameter can be provided
multiple times to ignore multiple file
patterns.
-r, --requirements find the requirements of the repository.
-html, --html_output generates an html file of the DirJson in the
output directory.
-cl, --call_list generates the call list in a separate html
file.
-cf, --control_flow generates the call graph for each file in a
different directory.
-dt, --directory_tree captures the file directory tree from the
root path of the target repository.
-si, --software_invocation generates which are the software
invocation commands to run and test the
target repository.
-ast, -—abstract_syntax_tree generates abstract syntax tree in json format.
-sc, --source_code generates source code of each ast node.
-ld, --license_detection detects the license of the target repository.
-rm, --readme extract all readme files in the target repository.
-md, --metadata extract metadata of the target repository using
Github API.
-df, --data_flow extract data flow graph for every function, BOOL
-st, --symbol_table symbol table file location. STR
--help Show this message and exit.
Для получения дополнительной документации и примеров, пожалуйста, посмотрите на нашу онлайн -документацию
Взносы в решение любого из текущих вопросов приветствуются. Чтобы выдвинуть ваш вклад, просто подтолкните запрос на притяжение в филиал разработки ( dev ) . В основном филиале есть только код, связанный с последним выпуском.
Мы хотели бы поблагодарить Лору Камачо, дизайнер логотипа