
Qodo
在 VS Code 中安装 Qodo 并生成单元测试与代码评审
面向 VS Code 用户的 Qodo 配置教程:从扩展市场安装、账号登录,到用 /test 生成单元测试、用 /review 做提交前自审,并配置模型、测试框架与本地 LLM。
Qodo(原名 CodiumAI)是一个把测试生成与代码评审结合起来的 AI 代码质量平台。它最广为人知的能力是在拉取请求上做自动评审,而它的 VS Code 扩展把同一套能力搬进了本地编辑器:选中一个函数就能生成单元测试,选中一段代码就能拿到评审意见、解释和重构建议,不必切到浏览器,也不必等 CI 流水线跑完。这篇教程讲的是在 VS Code 里把 Qodo 装好、登录、跑通第一次测试生成,并把常用设置调成适合自己工作流的形态。如果你更习惯在网页端处理,也可以先了解 Qodo 的整体能力,再回到编辑器里落地。
适合读这篇的人:日常大部分时间待在 VS Code 里、希望把代码质量检查前移到提交之前的前后端开发者;正在给团队评估 AI 代码评审工具、想先在本机试跑的技术负责人;以及从旧版 CodiumAI 扩展迁移过来、不确定该装哪个包的老用户。整个安装过程不需要 API 密钥、不需要 Docker、不需要敲终端命令,全部在 VS Code 的图形界面里完成。
准备工作
动手之前先确认下面几项都满足,否则后面某一步会卡住:
- VS Code 版本:需要 1.80 或更高版本,macOS、Windows、Linux 均可。
- 网络连接:首次安装需要联网;Qodo 的 AI 能力默认走云端托管的模型,所以后续使用也需要保持联网(除非你按后文配置本地 LLM)。
- 登录账号:GitHub、Google 或任意邮箱账号都可以注册登录,不需要企业订阅。
- 一个已打开的项目:安装完成后要拿真实代码验证功能,所以最好在 VS Code 里打开一个包含源码的工程。
另外有一条容易忽略的迁移事项:如果你以前装过 CodiumAI 扩展,品牌更名为 Qodo 之后,应当更新到 Qodo 品牌的最新扩展才能继续获得支持和新功能。VS Code 有时会通过自动更新把旧扩展迁移过去,但保险起见,装完后到已安装扩展列表里核对一遍。如果列表里同时存在 CodiumAI 和 Qodo 两个扩展,卸载 CodiumAI 那个,只保留 Qodo。
操作步骤
第一步:安装 Qodo 扩展
扩展直接在 VS Code 扩展市场里获取,不需要去别处下载安装包。
- 打开 VS Code。
- 按
Ctrl+Shift+X(Windows / Linux)或Cmd+Shift+X(macOS)打开扩展视图。 - 在扩展面板顶部的搜索框里输入
Qodo。 - 找到发布者为 Qodo 的那个扩展,它可能带有「formerly CodiumAI」的副标题。
- 点击 Install 按钮。
安装通常在 10 到 20 秒内完成,具体取决于网络速度。装好后,VS Code 左侧活动栏会出现 Qodo 图标,点开就是 Qodo 面板,所有功能都从这里进入。
如果你更习惯命令行,也可以用下面这条命令安装:
code --install-extension Qodo.qodo-vscode
第二步:登录账号
扩展装好之后必须登录才能激活,因为 Qodo 要靠账号来管理额度、把使用记录关联到你的账户。
- 点击左侧活动栏的 Qodo 图标。
- 面板会显示登录提示,点击 Sign In。
- 选择登录方式:GitHub(如果以后打算用 Qodo 的 PR 评审功能,推荐这个)、Google(用 Google 账号快速登录)、Email(用任意邮箱注册一个独立的 Qodo 账号)。
- 浏览器会弹出一个授权窗口,在其中完成登录。
- 回到 VS Code,Qodo 面板此时会显示账号信息和剩余额度。
免费 Developer 计划在注册账号时自动激活,不需要绑定信用卡。该计划每月提供一定数量的 IDE 与 CLI 交互额度,以及一定数量的 PR 评审次数(如果你之后把 Qodo 接到 Git 仓库)。具体的额度数字与计划内容会随时间调整,请以 Qodo 官网当前公布的信息为准。
登录完成后,面板上会显示当前额度余额、正在使用的 AI 模型,以及测试生成、代码对话、代码评审这几个主要功能的快捷入口。
第三步:生成第一批单元测试
测试生成是 Qodo 的招牌功能,也是验证扩展是否正常工作的最快方式。
- 在项目里打开任意一个至少包含一个函数或方法的源文件。
- 把光标放进想测试的函数内部,或者直接选中整个函数。
- 打开 Qodo 对话面板,输入
/test;也可以在编辑器里右键,从上下文菜单选择 Qodo 的测试生成选项。 - Qodo 会分析函数的行为、输入类型、条件分支和错误路径。
- 几秒之后,一整套单元测试就生成出来了。
生成的测试通常覆盖这几类场景:
- 正常路径:用合法输入验证函数按预期返回。
- 边界情况:null 值、空字符串、边界数值、空数组等。
- 错误场景:非法输入、缺失参数、异常处理。
- 类型变化:函数可能接收到的不同输入类型。
Qodo 会识别项目已有的测试框架,并按对应风格生成测试。项目用 pytest 就产出 pytest 风格的测试,用 Jest 就产出 Jest 测试。支持的框架包括 pytest、unittest、Jest、Vitest、Mocha、JUnit 4、JUnit 5、Go 的 testing 包、NUnit、xUnit 和 RSpec。
举个例子,假设源文件里有这样一个工具函数:
def calculate_discount(price, percentage):
if price < 0:
raise ValueError("Price cannot be negative")
if percentage < 0 or percentage > 100:
raise ValueError("Percentage must be between 0 and 100")
return price * (1 - percentage / 100)
Qodo 可能生成如下测试:
from your_module import calculate_discount
def test_calculate_discount_standard():
assert calculate_discount(100, 10) == 90.0
def test_calculate_discount_zero_percentage():
assert calculate_discount(100, 0) == 100.0
def test_calculate_discount_full_percentage():
assert calculate_discount(100, 100) == 0.0
def test_calculate_discount_negative_price():
with pytest.raises(ValueError, match="Price cannot be negative"):
calculate_discount(-10, 10)
def test_calculate_discount_percentage_over_100():
with pytest.raises(ValueError, match="Percentage must be between 0 and 100"):
calculate_discount(100, 110)
def test_calculate_discount_negative_percentage():
with pytest.raises(ValueError, match="Percentage must be between 0 and 100"):
calculate_discount(100, -5)
可以看到,除了正常路径,两个 ValueError 分支都被单独覆盖到了,这正是手写测试时最容易漏掉的部分。
额度方面:每次测试生成请求消耗 1 个额度。免费计划每月的额度可以支撑对大约两百多个函数生成测试,具体数字以官网当前信息为准。额度用完后需要升级到付费计划。
第四步:使用对话面板里的其他命令
除了生成测试,Qodo 侧边栏的对话面板还提供代码评审、解释和重构能力。用法统一:先在编辑器里选中要分析的代码,再在 Qodo 对话面板里输入命令。
| 命令 | 作用 |
|---|---|
/test | 为选中的函数生成单元测试 |
/review | 对选中代码做评审,给出改进建议 |
/explain | 详细解释选中代码做了什么 |
/improve | 给出选中代码的重构建议 |
/docstring | 为选中的函数生成文档注释 |
除了斜杠命令,也可以直接用自然语言在对话面板里提问,Qodo 会结合代码上下文回答。
/review 值得单独说一句:它适合在开拉取请求之前做自审。它会检查潜在的 bug、安全问题、性能反模式以及可读性改进点,效果类似 Qodo 在 PR 上做的自动评审,但发生在代码推上去之前,改起来成本更低。
额度消耗与所用模型有关:标准模型每次请求消耗 1 个额度,Claude Opus 这类高级模型每次请求消耗 5 个额度。所以日常小改动用标准模型,遇到需要深度分析的问题再切高级模型,是比较经济的用法。
第五步:调整扩展设置
按 Ctrl+,(macOS 为 Cmd+,)打开 VS Code 设置,搜索 Qodo 就能看到全部可配置项。以下几项最值得先看:
默认 AI 模型:决定 Qodo 用哪个模型生成回答。可选 GPT-4o(速度与质量较均衡)、Claude 3.5 Sonnet(推理能力较强)、DeepSeek-R1 等。高级模型输出质量更高,但每次请求消耗的额度也更多。建议先用默认模型,确实需要更深分析时再切换。
测试生成偏好:可以配置目标测试框架、测试文件的命名约定、生成的测试里是否包含文档注释。如果 Qodo 没能正确识别你的测试框架,就在这里显式指定。
本地 LLM 支持:如果所在组织要求代码不能离开本机,可以通过 Ollama 开启本地 LLM 模式,把所有 AI 处理都路由到本地托管的模型,而不是走 Qodo 的云端 API。配置方式是:在本机安装 Ollama,下载一个受支持的模型,然后在扩展设置里把 Qodo 指向本地的 Ollama 端点。
遥测:控制扩展是否向 Qodo 发送使用数据。如果组织政策有要求,可以在设置面板里完全关闭。
键盘快捷键:按 Ctrl+K Ctrl+S(macOS 为 Cmd+K Cmd+S)打开快捷键编辑器,搜索 Qodo 可以看到所有可用命令。常配的几个是:为选中函数生成测试、打开 Qodo 对话面板、对当前文件执行代码评审。
一个完整示例
下面把前面的步骤串成一次从零到跑通的最小流程,假设你手上有一个 Python 项目,里面有一个待测试的函数。
1. 安装并登录。在扩展视图搜索 Qodo,点击 Install。装完后点活动栏的 Qodo 图标,选择 GitHub 登录,浏览器授权后回到 VS Code,面板显示额度余额即表示登录成功。
2. 打开待测文件。在资源管理器里打开 discount.py,内容就是前面那个 calculate_discount 函数。注意函数里已经带了显式的异常分支,这类代码最能体现生成测试的价值。
3. 生成测试。把光标放进 calculate_discount 函数体内,打开 Qodo 对话面板输入 /test 并回车。等待几秒,面板里会出现一组 pytest 风格的测试用例,覆盖正常折扣、0% 折扣、100% 折扣,以及价格为负、百分比超过 100、百分比为负这三种异常。
4. 保存并运行。把生成的测试保存为项目测试目录下的文件,例如 tests/test_discount.py,然后在终端运行:
pytest tests/test_discount.py -v
如果全部通过,说明扩展的安装、登录、模型调用、框架识别这一整条链路都是通的。
5. 做一次提交前自审。在同一个文件里选中整个函数,在 Qodo 面板输入 /review。它会返回一份评审意见,指出潜在问题与改进方向。逐条判断是否采纳,改完再提交。
6. 补文档。如果这个函数是给其他模块调用的公共接口,再选中它输入 /docstring,让 Qodo 生成文档注释,省去手写参数说明的时间。
这套流程跑通之后,日常开发中的用法基本就是重复第 3 到第 6 步:写函数、生成测试、自审、补注释,全部在编辑器内完成,不需要切换到浏览器或等待 CI。
注意事项
额度是按请求计费的,不是按代码行数。每次测试生成消耗 1 个额度;对话请求按模型区分,标准模型 1 个、高级模型 5 个。免费计划每月有固定额度,用完后需要付费。具体额度、计划价格与模型清单请以 Qodo 官网当前信息为准,不要按本文里的数字做预算。
生成的测试需要人工过一遍。Qodo 会覆盖正常路径、边界和异常分支,但生成结果不等于可以直接合并。断言是否符合业务语义、mock 是否合理、测试命名是否清晰,都要自己判断。把生成结果当作起点而不是终点。
函数签名越明确,输出质量越高。Qodo 需要理解函数的输入类型和返回值才能写出好测试。Python 用类型注解,TypeScript 用类型标注,JavaScript 用 JSDoc 注释。像 def process_order(order: Order, discount: float) -> Receipt 这样的签名,比 def process_order(order, discount) 能给到多得多的上下文。
函数职责要单一。只做一件事的函数,生成的测试质量明显好于承担多重职责的大函数。如果发现生成的测试很浅、漏掉了重要场景,先考虑把函数拆小,而不是反复重试生成。
旧扩展要清理。从 CodiumAI 迁移过来的用户,务必确认已安装扩展列表里只有 Qodo 品牌的那一个。两个扩展并存可能导致功能冲突或行为异常。
本地 LLM 模式需要额外准备。开启本地 LLM 意味着要自己安装 Ollama、下载模型并维护端点,输出质量与云端模型可能存在差异。只有在代码不能出本机的合规要求下才建议走这条路。
云端模式依赖网络。默认配置下 AI 处理在云端完成,断网时测试生成、评审、对话这些功能都不可用。需要离线工作时,只能依赖本地 LLM 模式。