近期,通义灵码上线新能力:@workspace,基于本地代码库的 RAG 技术,让灵码深度感知代码库。接下来我们就使用灵码的workspace能力为openGauss开源项目贡献一些代码,以展示workspace的能力。
第一步,先下载openGauss项目,使用vscode打开文件夹,安装通义灵码并登录。这时候在任意代码文件中右键,就可以使用灵码的常规功能了:
- 解释代码
- 生成单元测试
- 生成注释
- 生成优化建议
通过这些功能,我们可以快速的了解函数或代码块的逻辑。
第二步,可以在智能问答窗口中通过 @ 唤起 @workspace,然后就可以基于代码库循环关于整个项目的问题,以快速的理解整个项目架构。
第三步,对有疑惑的代码逐步深入提问,并找到问题和解决方案,这里我们以优化ExecuteSqlQueryForSingleRow
函数为例,先是使用@workspace功能理解ngettext
宏在整个项目中作何使用
然后使用解释代码、生成优化建议等功能理解代码,寻找可优化的点
从问答中得知,当ntups == 1
时,ngettext
会选择单数形式的字符串。格式化后的字符串将是"query returned 1 row instead of one: <query>"
。而这段代码前面有if判断if (ntups != 1)
,由此可以推定,ngettext
永远不会选择单数形式的字符串,单数形式字符串是永远都执行不到的无效代码。
第四步,根据以上问答,删除无效代码,并提交合并请求 https://gitee.com/opengauss/openGauss-server/pulls/6547 给社区。
相比通义灵码的常规功能,@workspace功能结合了对代码库的分析对问题作答,提升了答案的准确性。