
Perpustakaan untuk memungkinkan pengguna memeriksa folder proyek perangkat lunak (yaitu, direktori dan subdirektori) dan mengekstrak semua informasi yang paling relevan, seperti kelas, metode dan dokumentasi parameter, kelas (dan metode mereka), fungsi, dll.
Diberikan folder dengan kode, inspect4py akan:
inspect4py akan mengembalikan Library sebagai jenis utamanya)Semua metadata diekstraksi sebagai file JSON.
Inspect4py saat ini hanya berfungsi untuk proyek Python 3 .
inspect4py Menambahkan fungsionalitas grafik aliran data menangkap untuk setiap fungsi yang diilhami oleh GraphCodebert: Github & Paper. Ilustrasi diberikan:
| Kode Sumber | Output daftar | Gambar networkx |
|---|---|---|
def max (a, b): | ('A', 3, 'datang dari', [], []) | ![]() |
inspect4py menggunakan AST, lebih khusus modul AST dalam Python, menghasilkan pohon objek (per file) yang semua kelasnya mewarisi dari ast.ast.
inspect4py mem -parsing masing -masing file input sebagai pohon ast, mengekstraksi informasi yang relevan dan menyimpannya sebagai file JSON. Selain itu, ia juga menangkap aliran kontrol masing -masing file input, dengan menggunakan dua perpustakaan lainnya:
Kami juga menggunakan docString_parser, yang memiliki dukungan untuk DOCSTRING REST, GOOGLE, DAN NUMPYDOC. Beberapa tes (dasar) yang dilakukan dengan menggunakan perpustakaan ini dapat ditemukan di sini.
Akhirnya, kami menggunakan kembali Pigar untuk menghasilkan secara otomatis persyaratan repositori yang diberikan. Ini adalah fungsi opsional. Untuk mengaktifkan argumen ( -r ) harus ditunjukkan saat menjalankan inspect4py.
Harap kutip kertas demo MSR 2022 kami:
@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}
}
Pastikan Anda memiliki pemasangan pengasuh pohon, Compier C diperlukan, info lebih lanjut:
pip install tree-sitter
Perhatikan bahwa jika file ".so" tidak berfungsi dengan baik, disarankan untuk menjalankan commed berikut untuk menghasilkan file SO untuk OS Anda:
git clone https://github.com/tree-sitter/tree-sitter-python
python inspect4py/build.py
Pastikan Anda telah menginstal GraphViz:
sudo apt-get install graphviz
Kami telah menguji inspect4py di Python 3.7+. Versi yang kami rekomendasikan adalah Python 3.9 .
Kami telah menguji inspect4py di UNIX, MacOS dan Windows 11 (22621.1265).
inspect4py tersedia di PYPI! Instal saja seperti paket biasa:
pip install inspect4py
Anda sudah selesai!
Kemudian coba perbarui utilitas Python-dev: sudo apt-get install python3.X-dev (di mana x adalah versi python Anda)
Siapkan lingkungan python3 virtual, cd ke folder inspect4py dan instal paket sebagai berikut:
git clone https://github.com/SoftwareUnderstanding/inspect4py
cd inspect4py
pip install -e .
Anda sudah selesai!
docstring_parser==0.7
astor
graphviz
click
pigar
setuptools==54.2.0
json2html
configparser
bigcode_astgen
GitPython
tree-sitter
Jika Anda ingin menjalankan evaluasi, jangan lupa untuk menambahkan pandas ke set sebelumnya.
Anda harus memasang Docker.
Selanjutnya, klon Repositori inspect4py :
git clone https://github.com/SoftwareUnderstanding/inspect4py/
Menghasilkan gambar docker untuk inspect4py :
docker build --tag inspect4py:1.0 .
Jalankan gambar inspect4py :
docker run -it --rm inspect4py:1.0 /bin/bash
Sekarang Anda dapat menjalankan inspect4py :
root@e04792563e6a:/# inspect4py --help
Untuk informasi lebih lanjut tentang opsi eksekusi inspect4py , silakan lihat bagian di bawah ini (eksekusi).
Perhatikan bahwa saat menjalankan inspect4py dengan Docker, Anda perlu menyediakan jalur ke repositori target untuk dianalisis. Anda dapat melakukan ini dengan:
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
Perintah bermanfaat lainnya saat menggunakan Docker:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker image rm -f inspect4py:1.0
Alat ini dapat dieksekusi untuk memeriksa file, atau semua file dari direktori yang diberikan (dan subdirektori). Misalnya, ini dapat digunakan untuk memeriksa semua file Python dari repositori GitHub yang diberikan (yang sebelumnya telah dikloning secara lokal).
Alat dengan default menyimpan hasil di direktori OutputDir , tetapi pengguna dapat menentukan nama direktori mereka sendiri dengan menggunakan bendera -o atau --output .
inspect4py --input_path <FILE.py | DIRECTORY> [--output_dir "OutputDir", --ignore_dir_pattern "__", ignore_file_pattern "__" --requirements --html_output]
Untuk kejelasan, kami telah menambahkan perintah help untuk menjelaskan setiap parameter input:
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.
Untuk dokumentasi dan contoh tambahan, silakan lihat dokumentasi online kami
Kontribusi untuk mengatasi masalah saat ini dipersilakan. Untuk mendorong kontribusi Anda, cukup dorong permintaan tarik Anda ke Cabang Pengembangan ( dev ) . Cabang Master hanya memiliki kode yang terkait dengan rilis terbaru.
Kami ingin mengucapkan terima kasih kepada Laura Camacho, perancang logo