Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эта статья приняла участие"Проект "Звезда раскопок"", чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.
задний фон
В повседневной жизни мы будем смотреть на некоторые проекты с открытым исходным кодом или хотим увидеть визуализацию кода, написанную нами.В golang мы можем использовать инструменты для его реализации.go-callvis показывает взаимосвязь вызовов программ go в виде картинок , что особенно полезно при просмотре сложных проектов.
2 Введение в go-callvies
2.1 Введение в инструмент
go-callvis — это инструмент разработки, помогающий визуализировать граф вызовов программы Go с помощью интерактивного представления.
Цель этого инструмента — предоставить разработчикам визуальный обзор программы Go с использованием данных из графа вызовов и его связи с пакетами и типами. Это особенно полезно в больших проектах, где сложность кода намного выше, или просто при попытке понять код других людей.
2.2 Особенности
- поддержите го мод
- конкретный фокус-пакет в программе
- Нажмите на пакет, чтобы быстро переключить фокус с помощью интерактивного средства просмотра
- Сгруппируйте функции по пакету и/или методу по типу
- Фильтрация пакетов по определенным префиксам пути импорта
- Игнорировать функции в стандартной библиотеке
- Пропускает различные типы вызовов функций
Три установки
- пойти установить
$ go get -u github.com/ofabry/go-callvis
- Компиляция исходного кода и установка
$ git clone https://github.com/ofabry/go-callvis.git cd go-callvis && make install
Четыре примера вывода
Он запускает анализ указателей для построения графа вызовов программы и использует данные для создания вывода в точечном формате, который можно визуализировать с помощью инструмента Graphviz.
Пять инсталляций
go get -u github.com/ofabry/go-callvis
# or
git clone https://github.com/ofabry/go-callvis.git
cd go-callvis && make install
Шесть использования
go-callvis [необязательные аргументы]
1) Интерактивный дисплей с использованием браузера
По умолчанию HTTP-серверПрослушивая http://localhost:7878/, используйте опцию `-http="ADDR:PORT"`, чтобы изменить адрес HTTP-сервера.
2) Статический выход
Чтобы сгенерировать один выходной файл, используйте опцию-file=<file path>
Выберите место назначения выходного файла.
Выходной формат по умолчанию svg, используйте параметры-format=<svg|png|jpg|…>
Выберите другой выходной формат.
3) Другие параметры
-debug
输出详细日志
-file string
以文件新式输出结果,并将忽略server交互模式
-focus string
Focus specific package using name or import path. (default "main")
-format string
输出文件的格式 [svg | png | jpg | ...] (默认 "svg")
-graphviz
使用Graphviz渲染图像
-group string
分组功能,根据包 与/或 类型分组 [pkg, type] (用逗号分开) (默认 "pkg"),例如 -group pkg,type
-http string
HTTP 服务地址 (默认 ":7878")
-ignore string
忽略包含给定前缀的包路径(用逗号分开)
-include string
包含具有给定前缀的包路径 (用逗号分开)
-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
忽略对未导出函数的调用。
-nostd
忽略标准库的调用
-skipbrowser
跳过打开浏览器
-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
包含测试代码
-version
显示版本号
1)解析main包
go-callvis -skipbrowser -nostd ./
2)解析testPkg包
go-callvis -group pkg,type -focus testPkg github.com/项目具体路径
Простой пример
$ go-callvis -format png -group pkg,type -focus github.com/kaliarch/cobra
/cmd/app github.com/kaliarch/cobra
2021/08/18 11:22:12 http serving at http://localhost:7878
2021/08/18 11:22:21 converting dot to png..
2021/08/18 11:22:22 serving file: /var/folders/wn/367g1v9n1bv0sg1k8qldzym80000gn/T/go-callvis_export.png
Ссылка на ссылку
разное
«Добро пожаловать для обсуждения в области комментариев, официальный представитель NuggetsПроект «Звезда раскопок»После мероприятия в комментариях будет разыграно 100 штук Наггетсов.Подробнее о лотерее читайте в статье о мероприятии».