
المكتبة للسماح للمستخدمين بفحص مجلد مشروع البرمجيات (أي الدليل ودليله الفرعي) واستخراج جميع المعلومات الأكثر صلة ، مثل وثائق الفئة والطريقة والمعلمة ، والفئات (وطرقهم) ، والوظائف ، وما إلى ذلك ، إلخ.
بالنظر إلى مجلد مع رمز ، ويل inspect4py :
inspect4py Library كنوعها الرئيسي)يتم استخراج جميع البيانات الوصفية كملف JSON.
يعمل Increpect4py حاليًا فقط لمشاريع Python 3 .
أضافت inspect4py وظيفة الرسوم البيانية لتدفق بيانات الالتقاط لكل وظيفة مستوحاة من GraphCodebert: Github & Paper. يتم إعطاء التوضيح:
| رمز المصدر | قائمة الإخراج | صورة networkx |
|---|---|---|
ديف ماكس (أ ، ب): | ('A' ، 3 ، 'Comesfrom' ، [] ، []) | ![]() |
يستخدم inspect4py ASTS ، وبشكل أكثر تحديداً وحدة AST في Python ، وإنشاء شجرة من الكائنات (لكل ملف) ترث فئاتها جميعها من AST.AST.
تقوم inspect4py بتوصيف كل من ملفات (ملفات) الإدخال كشجرة AST ، واستخراج المعلومات ذات الصلة وتخزينها كملف JSON. علاوة على ذلك ، فإنه يلتقط أيضًا تدفق التحكم لكل ملف (ملفات) إدخال ، باستخدام مكتبتين أخريين:
نستخدم أيضًا DOCSTRING_PARSER ، الذي يحظى بدعم DOCSTRINGS على طراز REST و Google و Numpydoc. يمكن العثور على بعض الاختبارات (الأساسية) التي تم إجراؤها باستخدام هذه المكتبة هنا.
أخيرًا ، نعيد استخدام Pigar لتوليد متطلبات مستودع معين تلقائيًا. هذا هو funcionality اختياري. من أجل تنشيط الوسيطة ( -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}
}
تأكد من تثبيت جليسة الأشجار ، هناك حاجة إلى مزيد من المعلومات ، مزيد من المعلومات:
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 الخاص بك)
قم بإعداد enviroment الظاهري 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 ) . الفرع الرئيسي لديه فقط الرمز المرتبط بأحدث الإصدار.
نود أن نشكر لورا كاماتشو ، مصممة الشعار