FuncLens
AI 驱动的函数级代码审查、重构与测试生成助手
FuncLens 是一款轻量级、非侵入式的 VS Code 扩展,旨在将 AI 能力无缝集成到日常编码工作流中。它为每个函数提供一键式的 CodeLens 操作,支持代码审查、重构建议和单元测试生成。
✨ 核心功能
🚀 智能辅助 (AI Powered)
- 代码审查 (Review): 深度分析函数逻辑,发现潜在 Bug 和代码异味,以行内评论形式展示。
- 重构建议 (Refactor): 提供代码优化和重构方案,支持一键对比查看差异 (Diff View)。
- 生成单测 (Gen UT): 根据函数逻辑自动生成单元测试代码。
⚡️ 便捷触发
- CodeLens: 函数/方法上方常驻快捷按钮,无需离开键盘即可触发。
- 右键菜单: 全局支持,选中文本后通过 "FuncLens" 子菜单触发。
🛠️ 高度可配置
- 自定义动作 (Custom Actions): 支持配置任意 Shell 脚本或 Python 脚本,扩展无限可能。
- 实时反馈协议: 脚本可以通过标准输出实时更新 UI 状态并自动打开生成的文件。
- 变量插值: 支持丰富的上下文变量(如文件路径、函数名、工作区路径等)。
⚙️ 配置指南
在 .vscode/settings.json 或用户设置中进行配置。
1. 基础设置
| 配置项 |
说明 |
默认值 |
|
funclens.mode |
执行模式:qwen-sdk (内置 SDK) 或 cli (自定义脚本)。 |
cli |
|
| 33: |
funclens.agentCommand |
核心 AI 引擎的调用命令或可执行文件路径。 |
- |
funclens.timeout |
命令执行的超时时间 (毫秒)。 |
30000 |
|
2. 界面可见性
控制编辑器中 CodeLens 按钮的显示。
| 配置项 |
说明 |
默认值 |
funclens.showReviewAction |
是否显示 "Review" 按钮 |
true |
funclens.showRefactorAction |
是否显示 "Refactor" 按钮 |
true |
funclens.showTestAction |
是否显示 "Gen UT" 按钮 |
true |
🔥 自定义动作 (Custom Actions)
这是 FuncLens 最强大的功能之一。你可以定义自己的脚本指令,让它们像原生功能一样显示在代码上方。
配置示例
"funclens.customActions": [
{
"title": "Echo Info",
"command": "echo \"Processing {name} in {file}\"",
"executionMode": "terminal"
},
{
"title": "Run Python Analysis",
"command": "python3 ${workspaceFolder}/scripts/analyze.py --file \"{file}\"",
"executionMode": "process",
"afterExecution": "openFile"
}
]
配置项详解
| 字段 |
类型 |
说明 |
title |
string |
CodeLens 显示的标题(自动添加齿轮图标)。 |
command |
string |
要执行的 Shell 命令。支持变量插值。 |
executionMode |
string |
terminal: 在 VS Code 集成终端中运行(可见)。
process: 后台运行(支持高级反馈协议)。 |
afterExecution |
string |
none: 结束后无动作。
openFile: 如果脚本输出了文件路径,提示用户打开。 |
支持的变量插值
在 command 字符串中可以使用以下变量:
VS Code 标准变量:
${workspaceFolder}: 当前工作区根目录的绝对路径。
FuncLens 上下文变量:
{file}: 当前文件的绝对路径。
{name}: 当前函数/方法的名称。
{line}: 函数开始行号 (1-based)。
{startLine}: 同 {line}。
{endLine}: 函数结束行号 (1-based)。
{selection}: 选中的代码文本。
{block}: 包含选区的完整代码块文本。
📡 高级脚本交互协议
当 executionMode 设置为 process 时,您的脚本可以通过标准输出 (stdout) 与 VS Code UI 进行实时交互。
1. 实时更新状态 (::status::)
让用户知道脚本正在做什么,而不是一直显示枯燥的 "Runing..."。
Python 示例:
print("::status::正在连接数据库...", flush=True)
# ...
print("::status::正在生成报表...", flush=True)
2. 上报制品 (::artifact::)
脚本运行结束后,自动通知用户打开生成的文件。
Python 示例:
# 告诉插件生成了一个文件
print(f"::artifact::/path/to/report.html", flush=True)
FuncLens 会在右下角弹出通知:"Custom Action Completed. Generated 1 artifacts. Open them?"
📖 使用教程
- 环境准备: 确保您的机器上安装了必要的运行时(如 Node.js, Python 等),并配置好
funclens.agentCommand。
- 触发审查: 点击函数上方的
Review 按钮,AI 的建议会以评论的形式直接挂载在代码行上。
- 应用修改:
- 对于
Review 评论,您可以点击 "Apply Fix"(如果提供)。
- 对于
Refactor,插件会打开内联差异视图 (Inline Diff),您可以选择 Accept 或 Reject。
- 运行自定义脚本: 点击自定义的 CodeLens,观察状态变化,并在完成后一键打开生成的结果文件。
⌨️ 快捷键与命令
FuncLens: Review Code: 触发审查
FuncLens: Refactor Code: 触发重构
FuncLens: Generate Tests: 生成测试
FuncLens: Accept Changes: 接受差异 (仅在 Diff 模式下有效)
FuncLens: Reject Changes: 拒绝差异 (仅在 Diff 模式下有效)
Happy Coding with FuncLens!