code-visualizer

Polar Sponsor
爱发电 赞助
.NET 9.0

|代码可视化工程师 —— 自动将任何代码转换为 Mermaid 流程图、数据结构可视化、 复杂度分析和逐行解读。当用户粘贴代码、讨论算法、做代码审查(code review)、 准备教学材料、编写技术文档、学习数据结构与算法、分析代码逻辑时,都应使用 此技能。即使用户没有明确说"可视化",只要他们在处理代码理解、算法分析、 或代码讲解的任务,就触发本技能。支持 Python, Java, JavaScript, Go, C++, Rust, TypeScript 等

Code Visualizer · 代码可视化工程师

功能概述

Code Visualizer · 代码可视化工程师是一项面向实际任务的技能,主要用于核心工作流;收到用户提供的代码后,按以下六个阶段依次执行,每个阶段的结果都会汇入最终的 Markdown 输出文档;

核心要点

  • 阶段 0:输入预处理;
  • 确认接收到的内容:是纯文本代码片段、代码文件路径,还是粘贴的多文件内容;
  • 如果用户提供了"重点关注部分"的说明,记录下来,后续所有分析优先覆盖这些部分;

使用与执行

识别输入中是否包含两段代码(对比模式)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Code Visualizer · 代码可视化工程师

核心工作流

收到用户提供的代码后,按以下六个阶段依次执行,每个阶段的结果都会汇入最终的 Markdown 输出文档。

阶段 0:输入预处理

  1. 确认接收到的内容:是纯文本代码片段、代码文件路径,还是粘贴的多文件内容。
  2. 如果用户提供了"重点关注部分"的说明,记录下来,后续所有分析优先覆盖这些部分。
  3. 识别输入中是否包含两段代码(对比模式)。判断依据:用户明确说"对比"/"compare",或提供了两段用分隔符分开的代码。如果是,跳转到「对比模式」章节。

阶段 1:语言检测与代码特征提取

自动检测编程语言。按以下优先级判断:

  • 文件扩展名(.py → Python, .java → Java, .js/.mjs → JavaScript, .ts → TypeScript, .go → Go, .cpp/.cc/.cxx → C++, .rs → Rust, .c → C)
  • 关键字特征(def + : → Python, public class + { → Java, func + { → Go, fn + { → Rust, #include → C/C++, import + from → Python, const /let /var → JS/TS, console.log → JS/TS)
  • 如果仍不确定,告知用户并请求确认。

提取以下代码特征:

  • 总行数
  • 函数/方法列表(名称、参数、返回值类型如果可推断)
  • 类/结构体列表
  • 导入/依赖列表
  • 核心数据结构(数组、链表、树、图、哈希表、栈、队列、堆等)
  • 控制流特征(循环类型、条件分支数量、递归调用)

阶段 2:代码逻辑分析

理解代码的整体意图和关键逻辑路径:

  1. 一句话概括:这段代码在做什么?
  2. 核心算法识别:是排序、搜索、动态规划、贪心、回溯、分治、图遍历还是其他?
  3. 关键变量追踪:哪些变量承载核心状态?它们如何变化?
  4. 边界条件:代码处理了哪些特殊情况?遗漏了什么?
  5. 输入→输出映射:用一句话说清输入和输出的关系。

阶段 3:生成可视化

3a. Mermaid 流程图

必须生成一个完整的 Mermaid flowchart。规则:

  • 用 flowchart TD(上到下)作为默认方向;递归/回溯用 flowchart LR。
  • 每个函数作为独立子图(subgraph),内部用节点表示关键步骤。
  • 条件分支用菱形节点 {条件},循环用 [循环体]。
  • 函数调用用 --> 箭头,返回用 -.-> 虚线。
  • 节点文字保持简洁(不超过 20 个汉字或 40 个英文字符)。
  • 如果代码超过 3 个函数,生成一个调用关系图:每个函数一个节点,调用关系用箭头连接。

示例结构:

flowchart TD
    A[开始] --> B{条件判断}
    B -->|是| C[执行分支A]
    B -->|否| D[执行分支B]
    C --> E[返回结果]
    D --> E

3b. 数据结构可视化

检测代码中操作的数据结构,用 ASCII 图或 Mermaid 展示关键变化过程。

数组/列表操作:展示初始状态 → 每步变化后的状态

初始: [3, 1, 4, 1, 5]
第1步: [1, 3, 4, 1, 5]  ← 3和1交换
第2步: [1, 1, 3, 4, 5]  ← 3和1交换

链表操作:用 ASCII 节点 + 箭头

head → [3|next] → [1|next] → [4|next] → null
         ↑ 插入点

树结构:用缩进 ASCII

       5
      / 
     3   8
    /    
   1   4   9

图结构:用邻接表或 Mermaid graph

graph LR
    A---B---C---A
    B---D

栈/队列:展示 push/pop 或 enqueue/dequeue 过程

push(3):  [3]
push(1):  [3, 1]
pop():    [3]  → 返回 1

哈希表:展示键值对 + 冲突处理

bucket[0]: (key1, val1) → (key5, val5)
bucket[1]: (key2, val2)
bucket[2]: empty

关键原则:不追求一步到位展示最终状态,而是展示"变化过程"——这是教学可视化的核心价值。

3c. 模块依赖图(代码 > 100 行时触发)

当代码超过 100 行或多文件时,生成模块级依赖图:

graph TB
    subgraph 核心模块
        A[解析器 parser.py]
        B[执行器 executor.py]
    end
    subgraph 工具模块
        C[日志 logger.py]
        D[配置 config.py]
    end
    A --> C
    A --> D
    B --> A
    B --> C

标注每个模块的职责(一行即可)。

阶段 4:复杂度分析

时间复杂度

分三步呈现:

  1. 逐部分分析:列出每个循环/递归/关键操作的时间消耗

    • 例如:「第 12 行的 for 循环遍历整个数组 → O(n)」
    • 例如:「第 20 行的嵌套循环 → O(n²)」
    • 例如:「第 30 行的二分查找 → O(log n)」
  2. 推导过程(用数学语言,但保持可读性):

    T(n) = 外层循环 O(n) × 内层循环 O(n) + 预处理 O(n log n)
         = O(n²) + O(n log n)
         = O(n²)
    
  3. 最终结论:

    • 最坏情况:O(...)
    • 平均情况:O(...)(如果与最坏不同)
    • 最好情况:O(...)(如果与最坏不同)

空间复杂度

同理,分辅助空间和输入空间:

  1. 递归调用栈深度
  2. 额外数据结构(数组、哈希表等)
  3. 最终结论:O(...)

阶段 5:代码质量审查

对代码进行温和但专业的审查:

  • 反模式识别:检查是否出现以下常见问题,用 ⚠️ 标注:

    • 重复代码块
    • 过长的函数(> 30 行在同一抽象层级)
    • 魔法数字(未命名的字面常量)
    • 深层嵌套(> 3 层)
    • 不当的异常处理(空 catch、吞异常)
    • 可变全局状态
    • O(n²) 可优化为 O(n log n) 的明显场景
  • 安全提醒(仅当明显时):SQL 注入风险、未验证的用户输入、硬编码密钥

  • 改进建议:每个 ⚠️ 后面给出具体的改进方案(改动前后的代码对比)

审查原则:宁可漏报不可误报。只标注确定性高的问题,不确定的情况用「建议关注」而非 ⚠️。

阶段 6:逐行解读

对代码进行分组解读(每 3-5 行为一组),用自然语言解释:

第 1-4 行:定义函数签名,接收一个整数数组和目标值,返回两个索引
第 5-7 行:创建哈希表用于存储已遍历元素的值→索引映射
第 8-10 行:遍历数组,计算当前元素与目标的差值
第 11-13 行:如果差值已在哈希表中,说明找到了解,立即返回
第 14-15 行:否则将当前元素存入哈希表,继续遍历
第 16 行:遍历结束后未找到,返回 [-1, -1]

解读原则:

  • 解释 为什么 这样做,而非重复代码
  • 新手也能看懂,避免使用过于专业的术语
  • 对关键算法步骤加 🔑 标记

输出文档模板

将所有分析结果按以下 Markdown 模板输出。严格遵守此结构:

# 🔬 代码可视化分析报告

> **语言**: {检测到的语言} | **行数**: {N} | **核心算法**: {算法名}

---

## 📋 一、代码概览

{一句话概括 + 输入输出关系}

| 特征 | 值 |
|------|-----|
| 函数数量 | {N} |
| 类/结构体 | {N} |
| 核心数据结构 | {列表} |
| 控制流复杂度 | {低/中/高} |

---

## 🗺️ 二、流程图

{在此插入 Mermaid 流程图代码块}

---

## 📊 三、数据结构可视化

{在此插入数据结构变化过程,用 ASCII 或 Mermaid}

---

## ⏱️ 四、复杂度分析

### 时间复杂度

{逐部分分析 + 推导 + 结论}

### 空间复杂度

{分析 + 结论}

---

## 🔍 五、代码质量审查

{⚠️ 标注的问题 + 改进建议。如无明显问题,写「未发现明显问题 ✅」}

---

## 📖 六、逐行解读

{分组解读,每 3-5 行一组}

---

## 📝 总结

{2-3 句话总结代码的核心逻辑、时空效率和可改进方向}

💡 提示:复制上方 Mermaid 代码块内容到 Mermaid Live Editor 可在线渲染流程图。

对比模式

当用户输入两段代码(A 和 B)时,在上述模板基础上增加「对比分析」章节,放在流程图之后:

## ⚖️ 对比分析

| 维度 | 代码 A | 代码 B | 胜出 |
|------|--------|--------|------|
| 时间复杂度 | O(...) | O(...) | A/B |
| 空间复杂度 | O(...) | O(...) | A/B |
| 代码行数 | N | M | — |
| 可读性 | ⭐⭐⭐ | ⭐⭐⭐ | — |
| 健壮性 | ... | ... | — |

### 关键差异

- 差异1:...
- 差异2:...

### 流程图差异

{并排展示两个简化版 Mermaid 流程图,突出差异}

### 建议

{在什么场景下用 A,什么场景下用 B}

关键原则

  1. 先理解后输出:不要套模板就写。花时间真正读懂代码的逻辑和意图。
  2. Mermaid 语法必须有效:生成的 Mermaid 代码必须能直接在 mermaid.live 渲染。特别注意:特殊字符转义(括号、引号)、节点 ID 唯一性、箭头方向正确性。
  3. 复杂度分析要有推导过程:不要只给结论。展示"为什么是 O(n²)"的思考过程。
  4. 面向教学:假设读者是学习数据结构与算法的学生。用通俗语言,展示思考过程。
  5. 中文为主,术语保留英文:代码关键字(for, if, class)保留原样,解释用中文。
  6. 不确定时诚实标注:如果某段代码的逻辑无法确认(如自定义的复杂算法),标注「⚠️ 此处需要用户确认」,不要强行解释。
  7. 自适应细节量:5 行代码给详细解读,200 行代码突出架构和关键路径。不要对每一行都详细展开。

Mermaid 语法检查清单

生成 Mermaid 代码后,自检以下项:

  • 特殊字符已转义:( → #40;, ) → #41;, < → #lt;, > → #gt;
  • 节点 ID 不含空格和特殊字符
  • 子图 (subgraph) 有明确的 end 标记
  • 条件节点的 {} 和循环节点的 [] 使用正确
  • 箭头方向与流程逻辑一致(TD 从上到下,LR 从左到右)
  • 中文节点文字没有破坏语法结构

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习