Sourcegraph Cody诀窍:Sourcegraph Cody——企业代码搜索+AI。
Sourcegraph Cody 不是普通的 AI 编程助手——它扎根于企业代码库,能理解你整个仓库的上下文。但很多人只把它当高级版 ChatGPT 用,浪费了核心能力。下面五个技巧,帮你榨干它的价值。
场景:你想知道某个 API 在整个项目里怎么被调用,或者某个配置项在哪里被修改过。
做法:直接在 Cody Chat 里问:“UserService.login 这个方法在哪些地方被调用了?给我列出调用链。” 或者 “MAX_RETRY 这个常量在哪里定义,哪些模块引用了它?”
为什么有效:Cody 的上下文不是单个文件,而是你指定的整个仓库。它会在索引中搜索符号引用、定义和调用关系,返回精确的文件路径和代码片段。这比用 grep 或 IDE 的“查找引用”快得多,尤其适合大型 monorepo。
进阶用法:问完调用关系后,追加一句“这些调用里有没有潜在的空指针风险?”——Cody 会结合代码逻辑做初步分析。
场景:你只想让 Cody 分析某个特定目录或文件,而不是整个仓库。
做法:在 Chat 输入框里输入 @,会弹出菜单让你选择文件、目录或符号。例如,你只想问 src/services/payment.ts 里的逻辑,就输入 @src/services/payment.ts 再提问。
为什么有效:企业项目动辄几十万行代码,不加限定的话,Cody 可能被无关文件干扰,回答泛泛而谈。精准限定后,它会把注意力集中在目标代码上,回答更具体、更准确。
进阶用法:同时限定多个文件:@file1.ts @file2.ts,然后问“这两个模块之间有没有循环依赖?”
场景:接手一个老项目,有个函数写了 200 行,注释就一句“do stuff”。
做法:选中那段代码,右键选择“Explain Code”(或直接粘贴到 Chat 里问:“这段代码在做什么?用中文解释,重点说业务逻辑而不是语法”)。
为什么有效:Cody 会结合函数名、变量名、调用关系以及整个项目的命名风格来推断意图。它不会像普通 AI 那样只做表面翻译,而是会指出“这个循环是在做数据去重,因为前面有 dedupMap 的创建”。
进阶用法:解释完后问“这个函数有没有明显的性能问题?比如不必要的重复查询或 O(n²) 循环?”
场景:你刚写完一个工具函数,或者修改了一个老方法,需要补充单元测试。
做法:在 IDE 中打开目标函数,在 Cody Chat 里输入:“为这个函数生成 Jest 测试用例,覆盖正常输入、边界值和错误情况。测试数据从现有代码的 mock 文件里找。”
为什么有效:Cody 能看到你项目中已有的测试风格和 mock 数据模式,生成的测试更符合团队规范,而不是生成一套通用模板。它甚至会参考 __tests__ 目录下的类似用例来保持一致性。
进阶用法:先让 Cody 分析函数依赖,再生成测试:“这个函数依赖 getUser 和 formatDate,帮我自动 mock 这两个依赖。”
场景:你写完一个 PR 的改动,想提交前先自我审查一遍。
做法:在 IDE 中选中你修改的所有文件(或整个 diff),问 Cody:“审查这段代码,找出潜在 bug、安全漏洞和不符合我们项目编码规范的地方。特别关注类型安全、空值处理和错误处理。”
为什么有效:Cody 知道你们项目的代码规范(比如 ESLint 配置、命名约定、架构模式),它能发现人类容易忽略的细节,比如“这个变量可能为 null 但没做守卫检查”、“这里用了 any 但实际类型应该是 UserProfile”。
进阶用法:审查完后,让 Cody 直接生成修复建议:“针对你发现的空指针问题,给出修复代码片段,并解释为什么这样改更好。”