Visual Studio 智能代码插件:CodeGeeX

前言

在软件开发领域,高效的编程助手一直是提升开发者效率和质量的关键。

随着人工智能技术的不断发展,智能编程助手逐渐成为开发者们不可或缺的工具。其中,CodeGeeX作为一款专为Visual Studio设计的免费智能编程助手,凭借其强大的功能和便捷的使用体验,赢得了广大开发者的青睐。

CodeGeeX通过深度学习技术,能够理解开发者的编程意图,提供智能的代码补全、错误检查、代码重构等功能,帮助开发者快速编写出高质量、易维护的代码。同时,它还能够与Visual Studio无缝集成,无需额外的配置和设置,即可轻松使用。

在本文中,将详细介绍CodeGeeX的特点和优势,以及如何使用它来提升编程效率和质量。无论你是经验丰富的开发者,还是刚刚入门的初学者,CodeGeeX都将成为编程路上的得力助手。

CodeGeeX 是什么?

CodeGeeX是一款基于大模型的智能编程助手,它可以实现代码的生成与补全、自动为代码添加注释、自动解释代码、自动编写单元测试、实现代码审查Code Review、自动修复代码fixbug、自动生成commit message完成git提交,以及在不同编程语言的代码间实现互译、针对技术和代码问题的智能问答等丰富的功能。

帮助开发者显著提高工作效率,CodeGeeX支持100+种编程语言,适配多种主流IDE平台,包括Visual Studio Code,JetBrains IDEs,Visual Studio,HBuilderX,DeepIn-IDE等。

CodeGeeX支持的常见语言/框架

序号分类支持语言
1前端VUE、Javascript、TypeScript、HTML、CSS、React
2后端C、C++、C#、Java、Python、Go、PHP、Rust、SQL
3APP端ObjectC、Kotlin、Swift、Uni-App
4其他Peal、Ruby.GraphQL、Cobol

注意:支持语言完整列表 https://github.com/THUDM/CodeGeeX2/blob/main/evaluation/utils.py#L14

图片

图片

CodeGeeX的核心能力

功能描述
单行/多行代码续写根据上下文代码内容,推理出光标所在的当前行、当前段代码的内容。在实际开发场景中最常见也是提效最明显的场景。
根据注释生成代码根据自然语言的注释,自动生成所需要的代码,可以生成完整的方法级函数。
AskCodeGeeX智能问答通过侧边栏的智能问答交互,可以将开发中遇到的技术问题,直接向CodeGeeX提问获得快速解答。
自动添加注释给代码自动添加行级注释,可以根据需要选择英文或者中文。
代码翻译多种编程语言之间进行互译。理解代码语义并在保留原始代码语义和功能的基础上,翻译成另一种编程语言的等效代码。
生成单元测试根据函数、方法的内容和运行逻辑,生成相关的单元测试代码。支持Java、PythonGo、C/C++、JavaScript等,
NL2SQL基于给定的SQL表结构和自然语言描述的查询需求,生成SQL查询语句。
函数重构快速进行函数重构,梳理代码逻辑,降低出错风险。
生成调试日志通过理解代码运行逻辑,为代码自动生成调试信息,帮助用户快速定位问题。
生成ReadMe文档根据代码内容快速生成符合ReadMe格式的文档信息,
Code Interpreter工具箱接入了Code Interpreter的能力,可以实现批量处理文件,分析多种格式的数据并进行可视化,绘制数学函数,分析代码文件等。

自动模式

当CodeGeeX插件处于激活状态下,在编辑器中输入停止时,会从当前光标处开始进行自动的代码生成与补全。此时,右下角CodeGeeX图标转圈表示正在生成。生成的代码以灰色显示,按Tab键即可将生成结果在当前位置插入。如果不需要使用生成的代码,可按Esc键取消,也可以忽略生成的代码并继续输入。

交互模式

在需要获取代码生成结果时,按Ctrl+Enter激活交互模式。CodeGeeX插件将生成若干段候选代码,并显示在右侧窗口中。若希望使用其中某段候选代码,点击候选代码上方的"use code",即可将代码插入编辑器中的光标位置候选代码数量可以在插件设置中调整。

插件会根据当前光标位置自动判断生成一行或生成多行。CodeGeeX作为辅助工具,并不保证每次生成的是一段完整的代码。如果生成的代码没有完成一项功能,只需要让插件再次调用模型,继续向后生成,直到完成即可。

插件对于给定的输入,多次生成的结果可能不同。这是因为通过大模型进行生成,结果带有随机性。这种随机性可以从宏观统计上提高生成的准确率。如果希望降低随机性,可以在插件设置中调整部分参数设置,但不建议一般用户调整这些设置。

Visual Studio 插件安装

CodeGeeX适配了Visual Studio 2022之后所有的最高版本。

插件安装方式

1.在Visual Studio 2022的扩展->管理扩展中搜索CodeGeeX。

2、在Visual Studio窗口顶部的"扩展"菜单中,点击下拉菜单中选择"管理扩展"。或者直接用快捷键组合"Alt+Shift+X“访问扩展管理器。

3、搜索CodeGeeX,然后单击"下载"或"安装"按钮,具体如下图所示:

图片

4、重新启动Visual Studio,就完成了安装,可以在Visual Studio 的扩展看到CodeGeeX目录,具体如下图所示:

图片

使用方式

CodeGeex 在Visual Studio 中的使用方式,保持了它在Visual Studio Code 和 JetBrains IDEs 全家桶的使用方式,您可以无缝的拓展到不同IDE平台来使用。

1、登录

启动后进行登录,有三种登录方式,可以点击左上角的 登录 链接,也可以点CodeGeeX菜单中的"登录”,也可以打开聊天框打开侧边栏进行登录,具体如下图所示:

图片

这里通过CodeGeeX的侧边栏登录,可以选择验证码登录,账号登录,第三方账号登录。通过第三方登录,然后绑定手机号,就可以使用CodeGeeX的全部功能,开启倍速编程的体验吧!

图片

2、设置

可以通过点击侧边栏顶部的更多按钮,下拉菜单中直接进入设置,修改更符合开发习惯的设置。

每一个选项点击后,下方会有相应的描述。

图片

3、侧边栏

侧边栏可以通过拖拽的方式变宽,或是同其他visual窗口一样进行停靠、锚定,或放在更习惯的左侧或右侧位置,确保在Visual Studio 上编程的丝滑体验。

图片

切换模型 Change Model

图片

在边栏的智能问答输入框中,使用“/”调出预设命令:

图片

核心功能

自动生成代码

在编码过程中,CodeGeeX可以根据上下文代码的内容,推理出接下来可能的代码输入。如果认为推理出的代码内容合适,使用快捷键Tab对生成的代码进行采纳,被采纳的代码即会高亮显示并留存在光标后;

如果认为内容不合适,任意键可以取消推荐的内容,继续手动编码。可以使用Tab键接收建议,也可以通过开始编写要使用的代码来接收建议。

根据注释生成代码 将注释转换为代码

CodeGeeX可以针对一段自然语言的注释内容,生成相关的代码片段 。

特别是对于能够使用一句话描述清楚的、常见的算法片段、函数段、方法段等。

自动为代码添加注释

CodeGeeX可以轻松为代码添加中(英)文注释。在编辑器中选中代码,点击鼠标右键。在右键菜单中点击CodeGeeX ,然后点击下一级菜单生成注释即可。

生成单元测试

在编辑器中选中代码,点击鼠标右键,菜单中点击CodeGeeX,然后点击下一级菜单生成单测。也可以通过侧边栏的对话框,输入“/test”,生成其对应的单元测试代码。

图片

智能问答

CodeGeeX 的智能问答支持模型选择,你可以选择Pro版模型或者Lite版的模型,点击CodeGeeX目录,打开 CodeGeeX 侧边栏(聊天窗),点击侧边栏上方的Ask CodeGeeX标签, 即可进入问答模式。

图片

代码解释

代码解释是开发者非常喜爱的功能之一,CodeGeeX设置了多个入口,在编程过程中可以更加便利的使用。

图片

总结

CodeGeeX 是一款功能强大的AI编程助手,可以根据用户的输入和要求提供适当的答复和支持,从而提高工作的效率。

快来开始免费使用 CodeGeeX!

具体可访问官方地址:https://codegeex.cn/。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试进阶指南:高级问题与解答精粹(一)

Java面试问题及答案 1. 什么是Java内存模型(JMM)?它的作用是什么? 答案: Java内存模型(JMM)是一个抽象的概念,它定义了Java程序中各种变量(线程共享变量)的…

让大模型更聪明——复杂而艰巨的任务

一、引言 在人工智能领域,大模型因其强大的数据处理能力和复杂的结构,成为了推动技术进步的重要力量。然而,要让大模型真正展现出“聪明”的特质,即具备高度的人类智能水平,仍是一项极具挑战性的任务。本文将从数据质…

深度学习手撕代码题

目录: 目录 PyTorch实现注意力机制、多头注意力与自注意力Numpy广播机制实现矩阵间L2距离的计算Conv2D卷积的Python和C++实现Numpy实现bbox_iou的计算Numpy实现FocallossPython实现nms、softnmsPython实现BN批量归一化PyTorch卷积与BatchNorm的融合分割网络损失函数Dice Loss…

Java-Stream流-概述、创建、使用:遍历/匹配、筛选、聚合、映射、归约、排序、提取/组合

Java8-Stream: 一、Stream流概述1.Stream流的特点:2.使用步骤:3.常用方法示例: 二、Stream流创建1.常见的创建Stream的方法2. stream()或parallelStream()方法的使用和选择 三、Stream流使用Optional案例中使用的实体类1.遍历/匹配…

05- Redis 中的 Zset 数据类型和应用场景

1. 介绍 Zset 类型(有序集合类型)相比于 Set 类型多了一个排序属性 score(分值),对于有序集合 Zset 来说,每个存储元素相当于有两个值组成的,一个是有序集合的元素值,一个是排序值。…

MYSQL之安装

一,下载仓库包 wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm二,安装仓库 yum -y install mysql80-community-release-el7-3.noarch.rpmsed -i s/gpgcheck1/gpgcheck0/g mysql-community.repo三,安装MY…

JS——对象

1.什么是对象 对象是什么? 对象是一种数据类型 无序的数据的集合( 数组是有序的数据集合 ) 对象有什么特点? 无序的数据的集合 可以详细地描述某个事物 静态特征 (姓名, 年龄, 身高, 性别, 爱好) > 可以使用数字, 字符串…

618有哪些值得买的好物?这几款好物通宵整理吐血推荐!

随着618购物节越来越近,很多买家终于等到了用好价钱买好东西的好机会。不管是你一直想要的家居电器,还是最新的数码产品,平时挺贵的东西在618期间会便宜不少。不过,这么多东西可选,促销活动也多得让人看花了眼&#xf…

antd-vue a-tree 当两个不同一级下二级key相同的时候就会导致两个同时选择, 拿到node.parent的数据也会出问题, 解决办法

一、问题如下图: 当两个不同一级下二级key相同的时候就会导致两个同时选择, 同时拿到node.parent的数据也会出问题, 出现一下问题的原因是因为数据treeData 的key出现相同的了 然后如下图、因为我的查询条件 第二层是给 cloud , 第二层是给 relatedPool…

内存泄漏面面谈

概述 主要介绍了内存泄漏的关注点是对象,对内存问题进行了分类并且确定本文关注点是内存泄漏,15种内存泄漏判断方式,hprof文件的用法和分析过程,以及memory profiler工具一些基本概念,最后提到了如何触发内存泄漏问题…

企业文件加密软件有哪些?企业文件加密软件排名榜一

企业文件加密软件有哪些?企业文件加密软件排名榜一 企业文件加密软件在市场上种类繁多,尤其是2024年的市场,很多新生加密软件也出现了,那么排在榜一的是哪款加密软件呢? 1、安企神软件: 这款软件支持7天试用…

深入理解Nginx的Location模块

Nginx 是一个高性能的HTTP和反向代理服务器,其中的 location 模块用于根据请求的URI对请求进行路由。本文将详细介绍 Nginx 的 location 匹配规则、优先级,以及如何使用嵌套的 location 配置,并通过示例代码加以说明。 1. Location 基础 lo…

YOLOv8猫狗检测:从SwanLab可视化训练到Gradio Demo网站

基于YOLO模型在自定义数据上做训练,实现对特定目标的识别和检测,是CV领域非常经典的任务,也是AI项目落地最热门的方向之一。 这篇文章我将带大家使用Ultralytics、SwanLab、Gradio这两个开源工具,完成从数据集准备、代码编写、可…

深入剖析:探究编程领域就业热点的地理分布

深入剖析:探究编程领域就业热点的地理分布 在数字化浪潮席卷全球的时代,编程技能无疑成为求职市场的热门标签。然而,对于编程爱好者而言,寻找最佳就业地点却成为一项颇具挑战性的任务。究竟什么地方编程最好找工作?本…

第十八节:带你梳理Vue2: Vue组件中的注意事项和特例

1. Vue组件名推荐使用驼峰命名 现在我们来看看为什么在Vue中推荐注册组件时使用驼峰写法, 在了解这个之前,相信大家应该都能明白为什么在Vue中, 局部组件的使用频率高于全局组件. 推荐使用驼峰写法也是和局部组件有关系 我们先看一个示例 <div id"app"><…

vue el-carousel走马灯实现显示多张(5张)和(7张)

vue el-carousel走马灯实现显示多张&#xff08;5张&#xff09;和&#xff08;7张&#xff09; 父组件不用修改&#xff0c;仅在子组件源码的基础上进行修改即可 直接上代码 <template><div><el-carousel v-if"typeitem5_xybjzq || typeitem5_qdbjzq&quo…

2、PHP 8.1.0-dev 后门远程命令执行漏洞复现

1、青少年ctf&#xff0c;题目PHP后门 2、页面 3、bp抓包发现PHP版本为8.1.0-dev 4、尝试使用以前爆出过的漏洞&#xff08;网上查相关案例&#xff09; User-Agentt: zerodiumvar_dump(5*5); User-Agentt: zerodiumsystem("cat /flag"); 5、查找flag User-Agentt: z…

C语言与内存息息相关的重要概念有哪些?

一、问题 C语⾔、C语⾔和C#语⾔&#xff0c;这三门语⾔&#xff0c;⼀个⽐⼀个加号&#xff08;&#xff09;多&#xff0c;C语⾔没有加号&#xff0c;C有两个加号&#xff0c;C#有四个加号。随着语⾔的发展&#xff0c;⼀个⽐⼀个简单&#xff0c;很多问题系统都给做了&#x…

关于Infinity在不同的编程语言中的含义

在不同的编程语言中&#xff0c;Infinity&#xff08;或等价的概念&#xff09;通常用来表示一个比任何有限数都要大的数值。它是浮点数类型的一个特殊值&#xff0c;用于表示当一个数超过了该类型能够表示的最大值时的情况。例如&#xff0c;在JavaScript、Python、Java、C#等…

双向带头链表实现

目录 一. 逻辑结构图解 1. 节点中存储的值 2.逻辑实现 二. 各种功能实现 1. 创建节点函数 2. 初始化哨兵位 3. 尾插 4. 头插 5. 尾删 6. 头删 7. 打印链表值 8. 查找数据&#xff0c;返回节点地址 9. 指定地址后插入节点 10. 删除指定地址节点 11. 销毁链表 三.…