通义灵码企业代码补全增强使用实践

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
性能测试 PTS,5000VUM额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 通义灵码提供了企业代码补全增强的能⼒,在开发者使⽤通义灵码 IDE 插件的⾏间代码补全时,可以结合企业上传的代码库作为上下⽂进⾏⾏间代码补全,使代码补全更加贴合企业代码规范、业务特点。本⽂将分享如何构建⾼质量的企业代码库,以及开发者在前端和后端开发场景的使⽤实践。

作者:任婷婷(汐遥)


通义灵码提供了企业代码补全增强的能⼒,在开发者使⽤通义灵码 IDE 插件的⾏间代码补全时,可以结合企业上传的代码库作为上下⽂进⾏⾏间代码补全,使代码补全更加贴合企业代码规范、业务特点。本⽂将分享如何构建⾼质量的企业代码库,以及开发者在前端和后端开发场景的使⽤实践。


管理员如何准备高质量企业代码库


为确保代码数据的有效处理,我们建议您遵循以下指导原则来准备代码库。这将有助于提升检索的效率与准确性。


准备指南

1. 上传限制仅适⽤于源代码⽂件,代码库中应仅上传实际编写的源代码⽂件。例如,对于 Java 应上传 .java ⽂件,对于 C# 应上传 .cs ⽂件,对于 JavaScript 应上传 .js 或 .jsx ⽂件等。


2. 请避免上传以下内容。

  • 测试数据与代码:请勿上传测试脚本、测试⽤例或任何不包含业务逻辑的测试相关代码。
  • Mock ⽅法:排除所有由模拟⽅法和⼯具⽣成的代码,除非这些代码包含对业务逻辑的具体实现。
  • 构建产物:
  • 前端:排除通过构建⼯具(如 Webpack、Gulp 等)⽣成的⽂件,这些⽂件通常位于 dist 或 build ⽬录下。
  • 后端:排除编译⽣成的 DLL ⽂件及其他所有编译输出。


3. 注释要求如下。

  • 对希望被检索到的函数,在函数头部应添加详尽的注释。
  • 注释应提供充分的信息以区分不同的函数,建议参考注释模板或根据企业规范进⾏相应调整。


/**
* 更新指定订单状态。
*
* @param orderId 订单的唯⼀标识符。
* @param newStatus 新的订单状态。
* @return boolean 表示更新是否成功。
*/


4. 函数名称规范要求。

  • 如果函数注释较为简单,则函数名称必须能够准确描述其功能。
  • 使⽤清晰且具描述性的命名⽅式,例如:exportOrdersToPDF、updateOrderStatus ⽽不是 func1 。


上传指南

  • 打包压缩⽂件:将代码⽂件打包为 .zip、.gz 或 .tar.gz 格式。
  • 代码包⼤⼩限制:每个代码包的⼤⼩不得超过 100 MB。


开发者如何使用企业代码生成增强


插件版本要求

仅适⽤于 VSCode 1.3.9 及以上版本,以及 JetBrains 1.3.10 及以上版本。


后端场景使用实践

1. 通过⾃然语⾔注释⽣成代码。


步骤一:企业代码库代码上传

上传包含所需功能代码的压缩包⾄企业代码库,例如雪花算法的代码,并确保⽬标函数遵循注释规范,注释位于函数头部。更详细代码库准备指南请参⻅上述管理员如何准备⾼质量代码库。


/**
* 使⽤雪花算法⽣成唯⼀序列号
* @param workerId
* @return
*/
public synchronized Long getSnowFlowerId(long workerId){
long id = -1L;
if (workerId < 0 || workerId > snowFlowerProperties.getMaxWorkerId()) {
throw new IllegalArgumentException(
String.valueOf("workerID must gte 0 and lte " + snowFlowerProperties.getMaxWorkerId()));
}
// ... 算法实现代码 ...
return id;
}


步骤二:输入注释

在集成开发环境(IDE)中定位到某 Java 类内,输入与期望召回的函数相匹配的注释。注释格式可以灵活,但应确保含义的准确性和⼀致性。


第一种方式


//请通过雪花算法⽣成唯⼀编号的代码,返回⽣成的id


第二种方式


/**
* 使⽤雪花算法⽣成唯⼀序列号
* @param wId
* @return
*/


注释说明:

  • 注释⻓度要求:在编写代码时,注释应尽量避免过于简短,建议⻓度⾄少 15 个字符,过短的注释将无法触发召回。
  • 注释语义要求:确保注释的语义准确且有意义,最好包含关键词与返回值说明,以便通义灵码准确地理解和匹配相应的代码。
  • 多语⾔⽀持:⽀持中英⽂注释,代码库中的注释和实际编码时的注释可以使⽤不同的语⾔。
  • 参数名称灵活性:参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。


步骤三:代码⽣成

⾸次回⻋后,灵码将提供基于注释⽣成补全建议;再次回⻋后,灵码将根据企业代码库中的代码进⾏补全。

image.png

说明:

  • 如果您的注释中包含参数,灵码将⾃动调整⽣成代码中的参数名,确保命名⼀致性。
  • 如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。


2. 通过函数签名⽣成代码。


步骤一:代码库代码上传

上传包含所需功能代码的压缩包⾄企业代码库,并确保这些函数具有清晰且独特的标识,以便于检索和识别。更详细代码库准备指南请参⻅上述管理员如何准备⾼质量代码库。


步骤二:输入函数签名

在集成开发环境(IDE)中定位到某 Java 类内,键入⽬标函数的签名部分。参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。


public List<Object> nextList(String name, int size)


函数签名说明:

  • 函数名称:使⽤较为清晰的函数名称,需要具备⼀定语义作为相似性依据。
  • 参数和返回值:类型和顺序需要与⽬标函数保持⼀致,但参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。


步骤三:代码补全

⾸次回⻋后,灵码将提供代码补全建议;再次回⻋后,灵码将根据企业代码库中的代码进⾏⾃动补全。

image.png

说明:

  • 灵码将根据您提供的参数名,⾃动调整⽣成代码中的参数名,确保命名⼀致性。
  • 如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。


前端场景使用实践

1. 通过标签补全前端⾃研组件代码。


步骤一:代码库代码上传

在开始之前,您需要确保所有必要的前端组件代码已经上传到企业代码库中。如下是 React 框架示例。


<LTable
isReady={isReady}
formInitialValues={formInitialValues}
rowKey="key"
tableRef={tableRef}
toolbarLeft={
<Button type="primary">新增</Button>
}
formItems={formItems}
formRef={formRef}
columns={columns}
request={async (params, requestType) => {
const res: Record<string, any> = await apiGetUserList(params);
return {
data: res.data,
total: res.total,
};
}}
/>


步骤二:编写组件代码

在您的 IDE 中打开相应的 .jsx ⽂件,并开始编写代码。输入基础 HTML 标签或⾃定义组件标签,例如 <BatchUntagEditor />


步骤三:代码⾃动补全

当您输入的代码达到⼀定⻓度,并且能够与企业组件库中的代码匹配时,IDE 将⾃动触发代码补全功能,为您⽣成完整的组件代码。您也可以通过回⻋,主动触发代码补全。

image.png

重要:请在完整的组件标签内触发您的补全。


2. 通过⾃然语⾔注释⽣成代码。


步骤一:代码库代码上传

上传包含所需功能代码的压缩包⾄企业代码库,并确保每个函数都遵循注释规范,注释位于函数头部。更详细代码库准备指南⻅管理员如何准备⾼质量企业代码库章节。如下是 JavaScript 示例。


/**
* 根据报错信息⽣成,以id为键值的对象
* @param {Array<validator,Result>} results
* @return {Record<string,string>}
*/
function getErrObj(results) {
// ... 函数实现代码 ...
}


步骤二:输入注释

在 IDE 中,在 JavaScript ⽂件内输入特定的注释内容,如下示例。


//根据报错信息⽣成以 id 为键值的对象


注释说明:

  • 注释⻓度要求:在编写代码时,注释应尽量避免过于简短,建议⻓度⾄少 15 个字符,过短的注释将无法触发召回。
  • 注释语义要求:确保注释的语义准确且有意义,最好包含关键词与返回值说明,以便通义灵码准确地理解和匹配相应的代码。
  • 多语⾔⽀持:⽀持中英⽂注释,代码库中的注释和实际编码时的注释可以使⽤不同的语⾔。
  • 参数名称灵活性:参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。


步骤三:代码⽣成

⾸次回⻋后,灵码将提供基于注释⽣成补全建议;再次回⻋后,灵码将根据企业代码库中的代码进⾏补全。

image.png


说明:

  • 如果您的注释中包含参数,灵码将⾃动调整⽣成代码中的参数名,确保命名⼀致性。
  • 如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。


常见问题:在重新安装插件后,即便重启 IDE 或重新登录,仍无法成功召回知识库中的代码

解决⽅案:

  • 在 macOS 系统中,请执⾏以下命令以重启进程并清除缓存。


ps -ef|grep lingma|grep start|awk '{print $2}'|xargs -I {} kill -9 {}


  • 如果是 Windows 系统,请在进程管理器中结束 Lingma 进程。


推荐阅读:《5 大场景上手通义灵码企业知识库 RAG》


点击此处,立即体验通义灵码企业代码生成增强。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
24天前
|
人工智能 自然语言处理
通义灵码在Visual Studio2022中的实践
本文介绍了如何在Visual Studio 2022中安装和使用通义灵码。首先,在Visual Studio 2022中安装通义灵码插件,然后按照步骤完成安装和登录。最后,通过实操演示了通义灵码的三大功能:行级/函数级实时续写、自然语言生成代码和研发领域自由问答。希望读者能从中受益。
478 4
|
28天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
12天前
|
前端开发 安全 开发者
【通义灵码实践】实现经典手机游戏推箱子
本文介绍了使用通义灵码辅助实现经典推箱子游戏的过程。首先,通过输入“用Python写一个推箱子游戏”,灵码生成了基本的终端版本代码,包括地图渲染、玩家移动和胜利检测等功能。然而,终端版本交互体验不佳。为了解决这一问题,再次输入“不要在终端上运行,希望可以在页面上运行”,灵码生成了基于Flask的后端代码和HTML前端代码,实现了网页版推箱子游戏。最终结果展示了游戏的完整实现,包括前后端交互和用户界面。总结中提到,该方法具有快速生成代码、代码质量高、易于扩展等优点,但也存在功能简单、样式和用户体验有限、错误处理不足等问题,适合快速原型开发和教学演示。
48 2
|
27天前
|
人工智能 自然语言处理 程序员
提交通义灵码创新实践文章,重磅好礼只等你来!
通义灵码创新实践征集赛正式开启,发布征文有机会获得重磅好礼+流量福利,快来参加吧!
505 13
|
20天前
|
人工智能 运维 自然语言处理
通义灵码一周年:灵码编码个人版实践
作为一名运维工程师,我在运维和测试过程中经常需要编写代码。最近了解到通义灵码,它支持行/函数级实时续写、自然语言生成代码等功能,大大提升了我的工作效率。通过通义灵码,我可以快速生成和补全代码,节省了大量时间。此外,通义灵码还提供了代码解释和注释生成等实用功能,帮助我更好地理解和维护现有代码。整体安装和使用都非常简便,推荐给需要提升开发效率的小伙伴们。
89 4
|
21天前
|
机器学习/深度学习 自然语言处理 搜索推荐
1024——通义·灵码的功能以应用以及实践案例测评
本文档介绍了阿里巴巴旗下的通义·灵码大模型产品,涵盖其核心功能如文本生成、语义理解、情感分析、多模态处理等,并展示了在智能客服、金融智能投顾、电商推荐系统等多个领域的应用实例。通过具体代码示例,演示了如何调用通义·灵码的API实现自动回复、投资建议、新闻摘要生成等功能。最后,通过实际案例解析,评估了通义·灵码的新功能及其优化建议,包括安全性改进和代码优化策略。
1024——通义·灵码的功能以应用以及实践案例测评
|
27天前
|
运维 自然语言处理 开发者
作为一名运维人员,使用通义灵码个人版处理日常工作中的代码相关任务,极大地提升了我的工作效率。以下是我使用通义灵码的具体实践场景、效果和心得,以及相应的截图。
作为一名运维人员,我使用通义灵码处理日常工作中的代码任务,效率提升了30%。通义灵码帮助我快速理解复杂代码、生成准确的代码注释,并能从自然语言生成代码示例,大幅减少了代码编写和理解的时间。
57 3
|
27天前
|
安全 前端开发 测试技术
【灵码助力安全2】——利用通义灵码辅助复现未公开漏洞的实践
本文介绍了利用通义灵码辅助复现未公开漏洞的过程,包括XSS和文件包含两种典型漏洞类型。通过具体案例,展示了如何结合CVE描述和源码,使用灵码定位漏洞位置、分析漏洞原因,并验证漏洞的存在。文章强调了灵码在提高漏洞复现效率、减少手动排查时间方面的优势,同时也指出了其在复杂场景下仍需人工判断的局限性。未来,期待灵码能在自动化安全测试、动态分析及威胁建模等领域发挥更大作用,全面提升软件安全性。
|
30天前
|
运维 测试技术 开发工具
基于通义灵码 @workspace 和 @terminal 的实践场景、效果和心得
基于通义灵码 @workspace 和 @terminal 的实践场景、效果和心得
|
1月前
|
API 开发者
通义灵码实践场景与效果分享
作为后端开发工程师,我利用通义灵码结合企业知识库和代码库,生成符合团队规范的代码,效率提升约40%。灵码支持实时智能补全、代码质量提升及文档自动生成,简化了开发流程,减少了重复工作,显著提升了团队的开发效率和代码质量。