CodemapEx (codemap_ex v0.0.1)
CodemapEx - Elixir 代码映射和分析工具。
提供对项目中所有模块的分析和查询功能,可以了解每个代码块调用了哪些 Elixir 方法, 帮助理解代码结构和依赖关系。
Link to this section Summary
Functions
构建函数调用图,如果失败则抛出错误。
获取指定模块的代码块结构。
获取指定模块的代码块结构,如果模块不存在则抛出错误。
列出已解析的所有模块。
构建函数调用图并以美观格式打印结果。
手动触发重新扫描项目中的所有模块。
将调用图转换为 Mermaid 格式。
Link to this section Functions
Link to this function
build_call_graph(module, function, arity)
构建函数调用图。
从指定的函数开始,递归遍历所有相关的函数调用,构建一个有向无环图。
参数
参数
module
- 起始函数所在的模块(原子)function
- 起始函数的名称(原子)arity
- 起始函数的参数数量(整数)
返回值
返回值
{:ok, graph}
- 成功构建调用图{:error, reason}
- 发生错误,返回错误原因
示例
示例
iex> CodemapEx.build_call_graph(Enum, :map, 2)
{:ok, %CodemapEx.Graph{start: {Enum, :map, 2}, nodes: [{Enum, :map, 2}], edges: []}}
Link to this function
build_call_graph!(module, function, arity)
构建函数调用图,如果失败则抛出错误。
参数
参数
module
- 起始函数所在的模块(原子)function
- 起始函数的名称(原子)arity
- 起始函数的参数数量(整数)
返回值
返回值
- 调用图结构
示例
示例
iex> graph = CodemapEx.build_call_graph!(Enum, :map, 2)
%CodemapEx.Graph{start: {Enum, :map, 2}, nodes: [{Enum, :map, 2}], edges: []}
Link to this function
get_block(module)
获取指定模块的代码块结构。
参数
参数
module
- 要查询的模块(原子)
返回值
返回值
{:ok, block}
- 成功返回模块的代码块结构{:error, reason}
- 发生错误,返回错误原因
示例
示例
iex> CodemapEx.get_block(Test.Support.Math)
{:ok, %CodemapEx.Block.Mod{}}
Link to this function
get_block!(module)
获取指定模块的代码块结构,如果模块不存在则抛出错误。
参数
参数
module
- 要查询的模块(原子)
返回值
返回值
- 模块的代码块结构
示例
示例
iex> block = CodemapEx.get_block!(Test.Support.Math)
%CodemapEx.Block.Mod{}
Link to this function
list_modules()
列出已解析的所有模块。
返回值
返回值
- 模块名称(原子)的列表
Link to this function
pretty_print_call_graph(graph)
构建函数调用图并以美观格式打印结果。
此函数会构建调用图并将结果以易读的格式输出到控制台。
参数
参数
module
- 起始函数所在的模块(原子)function
- 起始函数的名称(原子)arity
- 起始函数的参数数量(整数)
返回值
返回值
- 调用图结构(与 build_call_graph! 相同)
示例
示例
iex> graph = CodemapEx.build_call_graph!(Enum, :map, 2)
iex> CodemapEx.pretty_print_call_graph(graph)
函数调用图 - 起始点: Enum.map/2
节点数量: 12
边数量: 15
节点列表:
- Enum.map/2
- List.map/2
- ...
调用关系:
- Enum.map/2 -> List.map/2
- ...
%CodemapEx.Graph{start: {Enum, :map, 2}, nodes: [...], edges: [...]}
Link to this function
rescan()
手动触发重新扫描项目中的所有模块。
此操作将重新扫描并解析项目中的所有模块,更新内部 ETS 表。
Link to this function
to_mermaid(graph)
将调用图转换为 Mermaid 格式。
参数
参数
graph
- 调用图结构