GO-Callvis هي أداة تطوير للمساعدة في تصور الرسم البياني للمكالمات لبرنامج GO باستخدام عرض تفاعلي.
الغرض من هذه الأداة هو تزويد المطورين بنظرة عامة مرئية لبرنامج GO باستخدام البيانات من Call Graph وعلاقاته مع الحزم والأنواع. هذا مفيد بشكل خاص في المشاريع الكبيرة حيث يكون تعقيد الكود أعلى بكثير أو عندما تحاول ببساطة فهم رمز شخص آخر.

تحقق من رمز المصدر للصورة أعلاه.
يقوم بتشغيل تحليل المؤشر لإنشاء الرسم البياني للمكالمات للبرنامج ويستخدم البيانات لإنشاء الإخراج بتنسيق DOT ، والذي يمكن تقديمه باستخدام أدوات GraphViz.
-graphviz )لتثبيت go-callvis ، قم بتشغيل:
# Latest release
go install github.com/ofabry/go-callvis@latest
# Development version
go install github.com/ofabry/go-callvis@masterبدلاً من ذلك ، استنساخ المستودع وتجميع رمز المصدر:
# Clone repository
git clone https://github.com/ofabry/go-callvis.git
cd go-callvis
# Compile and install
make installلاستخدام العرض التفاعلي الذي يوفره خادم ويب يخدم صور SVG للحزم المركزة ، يمكنك ببساطة تشغيل:
go-callvis <target package>
يستمع HTTP Server على http: // localhost: 7878/افتراضيًا ، استخدم الخيار -http="ADDR:PORT" لتغيير عنوان خادم HTTP.
لإنشاء خيار استخدام ملف إخراج واحد -file=<file path> لاختيار وجهة ملف الإخراج.
تنسيق الإخراج الافتراضي إلى svg ، استخدم الخيار -format=<svg|png|jpg|...> لاختيار تنسيق إخراج مختلف.
Usage of go-callvis:
-debug
Enable verbose log.
-file string
output filename - omit to use server mode
-cacheDir string
Enable caching to avoid unnecessary re-rendering.
-focus string
Focus specific package using name or import path. (default "main")
-format string
output file format [svg | png | jpg | ...] (default "svg")
-graphviz
Use Graphviz's dot program to render images.
-group string
Grouping functions by packages and/or types [pkg, type] (separated by comma) (default "pkg")
-http string
HTTP service address. (default ":7878")
-ignore string
Ignore package paths containing given prefixes (separated by comma)
-include string
Include package paths with given prefixes (separated by comma)
-limit string
Limit package paths to given prefixes (separated by comma)
-minlen uint
Minimum edge length (for wider output). (default 2)
-nodesep float
Minimum space between two adjacent nodes in the same rank (for taller output). (default 0.35)
-nointer
Omit calls to unexported functions.
-nostd
Omit calls to/from packages in standard library.
-rankdir
Direction of graph layout [LR | RL | TB | BT] (default "LR")
-skipbrowser
Skip opening browser.
-tags build tags
a list of build tags to consider satisfied during the build. For more information about build tags, see the description of build constraints in the documentation for the go/build package
-tests
Include test code.
-version
Show version and exit.
قم بتشغيل go-callvis -h لسرد جميع الخيارات المدعومة.
هنا يمكنك العثور على أوصاف لأنواع مختلفة من الإخراج.
| يمثل | أسلوب |
|---|---|
focused | اللون الأزرق |
stdlib | اللون الأخضر |
other | اللون الأصفر |
| يمثل | أسلوب |
|---|---|
exported | الحدود الجريئة |
unexported | الحدود الطبيعية |
anonymous | الحدود المنقطة |
| يمثل | أسلوب |
|---|---|
internal | اللون الأسود |
external | لون بني |
static | خط صلب |
dynamic | خط متقطع |
regular | سهم بسيط |
concurrent | السهم مع الدائرة |
deferred | السهم مع الماس |
فيما يلي مثال لمزامنة المشروع.

تحقق من المزيد من الأمثلة وخيارات الأوامر المستخدمة.
انضم إلى قناة #Go-Callvis على gophers.slack.com. ( ليس عضوًا بعد؟ احصل على دعوة)
هل وجدت أي أخطاء أو لديك بعض الاقتراحات؟
هل تريد المساهمة في المشروع؟
الهدف المثالي لهذا المشروع هو إنشاء تطبيق ويب من شأنه تخزين بيانات الرسم البياني للمكالمات محليًا ثم توفير وصول سريع للرسوم البيانية للمكالمات لأي حزمة من شجرة التبعية الخاصة بك. في البداية ، سيُظهر خريطة تفاعلية للتبعيات الإجمالية بين الحزم ثم عن طريق تحديد حزمة معينة ، وسوف يعرض الرسم البياني للمكالمات وتوفير خيارات مختلفة لتغيير الإخراج ديناميكيًا.