Github Copilot AI编码完成工具
目录
一、GitHub Copilot
1、简介
2、工作原理
3、功能
二、GitHub Copilot X
1、什么是 GitHub Copilot X
2、GitHub Copilot X 的功能
三、支持、使用
1、支持
2、使用
四、实际研究、验证(代码方向)
1、代码生成
2、代码提示
3、生成测试用例
4、代码解释
5、代码注释
6、代码优化
7、bug查找
五、个人结论
六、最后说明
Copilot 提供的代码是否都是高质量的?
Copilot 可以替代开发人员吗?
PS: 年纪大了,不想努力了,这段时间在关注一些AI工具,看能不能让其帮忙干点活,自己能偷个懒,关键是那几根头发不能掉了,如果在掉点,去当和尚都不用梯度,换身衣服就行了。
不巧,老大又找我了,表示今年公司压力大,活那么多,人又没钱招,看现在AI这么火,看能不能找点工具来用,提高下研发效率,再这么搞下去,公司马上就要关张大吉了。公私兼顾,就花点时间搞这个事。
查资料,看牛人测评,动手验证,总体感觉Copilot还是可以的,给大家分享下吧。

一、GitHub Copilot
1、简介
GitHub Copilot 是一款基于 AI 的代码完成工具,可与流行的集成开发环境 (IDE) 无缝集成。Copilot 基于 OpenAI 的 GPT-3 语言模型构建,从大量公开可用的代码存储库中学习,实时提供上下文相关的代码建议,凭借其先进的 AI 功能,已超越了传统的代码自动完成功能。
2、工作原理
Copilot 依靠机器学习技术,特别是深度学习来分析和理解代码的模式和结构。对数十亿行代码的培训可以加深对不同编程语言、库和编码风格的理解。这种广泛的培训使 Copilot 能够在开发人员编写代码时向他们提供准确且上下文相关的建议。
3、功能
多语言支持: 支持多种编程语言,允许开发人员在不同的项目和编码环境中利用其功能。无论您使用 Python、JavaScript、C++ 还是任何其他受支持的语言进行编码,Copilot 都可以为您提供针对特定语言的语法和约定量身定制的相关建议。
集成开发环境 (IDE) 集成: 与流行的 IDE(例如 Visual Studio Code)无缝集成,使其可以在您首选的编码环境中轻松访问。这种集成可确保工作流程顺利进行,并允许您在不破坏现有编码设置的情况下利用 Copilot 的功能。
智能代码建议: 利用机器学习算法及其对公开可用代码的丰富知识,在您编写时提供智能且上下文感知的代码建议。它可以理解您正在处理的代码,并建议合适的补全、函数和整个代码片段,从而使编码过程更快、更高效。
高级自动完成: Copilot 的自动完成功能超出了基本的关键字建议范围。它根据周围的代码、函数名称和变量类型提供高度准确且上下文相关的补全。这种高级自动完成功能可以减少手动输入并帮助您更快地编写代码,从而节省时间。
代码生成: 可以根据提供的上下文生成整个函数、类和代码块。此功能对于重复或样板代码特别有用,使开发人员能够快速生成通用代码模式并专注于更高级别的问题解决任务。
二、GitHub Copilot X
1、什么是 GitHub Copilot X
GitHub Copilot X(GitHub Copilot 的未来)由 OpenAI 的 GPT-4 模型提供支持,是一种通过文本和视频进行通信的高度先进的 AI 工具。
它集成到 Visual Studio 和 VS Code 中,提供代码、功能和错误修复的建议。
2、GitHub Copilot X 的功能
语音编码:借助 Copilot X,您只需与助手交谈即可免提编码。它能够理解您的语音命令并将其翻译成代码。
拉取请求: Copilot X 简化了创建拉取请求的过程,生成描述性摘要,并提供代码演练以帮助您跟踪更新。
文档协助:如果您有冗长的文档需要阅读,Copilot X 可以帮助加快阅读过程。您可以简单地要求聊天机器人生成摘要并找到您的具体问题的答案。
Copilot for CLI: Copilot X 将其帮助扩展到命令行界面 (CLI),直接在终端中提供对 shell 命令和标志的支持。
Copilot 聊天:利用 Copilot X 作为聊天机器人来提出问题并寻求各种任务的帮助,例如生成代码、修复错误和创建测试。
Github Copilot是基于的AI代码完成工具,可以与主流IDE集成,提供跨多种编程语言的智能和上下文感知代码建议、高级自动完成和代码生成功能,简化了编码人员的工作量。
GitHub Copilot X 是一款先进的人工智能助手,针对软件开发人员提供了额外的功能,例如语音转代码、拉取请求帮助、文档支持和 CLI 帮助。
三、支持、使用
1、支持
语言支持性:Python,Javascript,Typescript,Ruby,Go,Php,C#,Java..
库和框架支持性:Node.js,React,Vue.js,Angular,Express...
IDE支持:VS Code, VS2022, IntelliJ IDEA等,注意版本。
个人认为:使用VS Code的前端,最好;其次是后端,好;再其次是客户端页面,最差。
2、使用
前提:有梯子
路径1:淘X购买
路径2:自己注册Github、注册Paypal(绑定银行卡 10$/月)(先免费体验一个月)
说明:注册后在IDE插件中,登录账号即可。
详细注册以及使用技巧参考(猫哥的,感觉还算详细)
Github copilot: 01 如何注册激活插件 | 博客 | 猫哥在线课堂
GitHub Copilot: 02 必须知道的7个技巧帮助你代码自动补全 | 博客 | 猫哥在线课堂
四、实际研究、验证(代码方向)
验证环境:VS2022 + C# (WinForm )
1、代码生成
可以输入要求让其生成代码段,生成效果与提问方式、详细程度有很大关系。

Excel 简易分两类: Excel97-03版本不行; Excel07以上版本可以
2、代码提示
在编辑器中输入一些代码时,会根据上下文自动提示一些代码片段,比IDE更强大(IDE是关键字补全,Copilot是推断补全),但是推断的代码不一定适用。
3、生成测试用例
大大提高了代码的测试效率。
4、代码解释
函数、语法、异常等解释。
5、代码注释
可以给代码增加注释,增强易读性。
注意:有时虽然会明确指出禁止修改原代码,但是还会修改源代码,需要尤其注意。
6、代码优化
针对简单代码段,其可以提供优化建议和方案;复杂代码段,优化效果一般。
7、bug查找
可以查找bug,但查找的bug,一般IDE自己都会提示,效果一般。
五、个人结论
1、如果需要开发新功能、或需要用到新技术,其能生成代码,给开发人员提供一个思路,减少查找资料、验证的时间,这点帮助巨大。
2、某些语法忘记怎么写了,写个注释让Copilot帮你写,不用去找度娘了,很好。
3、代码提示功能、生成测试用例功能很好,能提高不少编码效率。
六、最后说明
Copilot 提供的代码是否都是高质量的?
不一定,GitHub Copilot 提供的代码只是建议,需要开发人员进行审核和测试。
Copilot 可以替代开发人员吗?
不可以,GitHub Copilot 只是一种代码编写工具,能提升编码效率,但是依旧需要由开发人员编写、审核、测试代码。
注意:实质上目前的功能已经再抢初级开发的饭碗了,随着AI的不断完善,唉...
突然理解了那句话:那帮搞IT在干嘛? 天天砸别人饭碗,早晚把自己的也砸了...
相关文章:
Github Copilot AI编码完成工具
目录 一、GitHub Copilot 1、简介 2、工作原理 3、功能 二、GitHub Copilot X 1、什么是 GitHub Copilot X 2、GitHub Copilot X 的功能 三、支持、使用 1、支持 2、使用 四、实际研究、验证(代码方向) 1、代码生成 2、代码提示 3、生成测试用例 4、代码解释 5…...
android 9 adb安装过程学习(二)
一、PackageInstalllerService流程分析 下面来分析下 PackageInstallerService 中的逻辑,我们先来看看 PackageInstallerService 的创建,当然,这部分的逻辑是在开机的时候,这里我们再回顾下: 位置:./frame…...
Java面试-框架篇-Mybatis
Java面试-框架篇-Mybatis MyBatis执行流程延迟加载使用及原理一, 二级缓存来源 MyBatis执行流程 读取MyBatis配置文件: mybatis-config.xml加载运行环境和映射文件构造会话工厂SqlSessionFactory会话工厂创建SqlSession对象(包含了执行SQL语句的所有方法)操作数据库的接口, Ex…...
java基础-集合
1、集合 在java中,集合(Collection)指的是一组数据容器,它可以存储多个对象,并且允许用户通过一些方法来访问与操作这些对象。j 集合的实现原理都基于数据结构和算法,如下: 数据结构࿱…...
【C++11】auto与decltype关键字使用详解
系列文章目录 C11新特性使用详解-持续更新 文章目录 系列文章目录前言一、auto关键字1.根据变量的初始化表达式来推导变量的类型2.const与引用 二、decltype关键字1.推断表达式的类型2.const与引用 三、总结 前言 auto和decltype是C11引入的俩个重要的新关键字,用…...
Servlet实现一个简单的表白墙网站
文章目录 前言效果展示事前准备HTML、CSS、JavaScript分别负责哪些HTML和CSS构架出页面的基本结构和样式JavaScript 实现行为和交互实现服务器端的业务代码整理pom.xmlweb.xmlmessageWall.htmlMessageServlet.java 前言 前面我们学习了 Java 中知名的 HTTP 服务器 tomcat 的安…...
mysql 集群恢复
准备使用集群的时候发现集群起不来, 发现抱错集群各个节点都是readonly 状态,找了很多资料,由于集群处于不一致的情况需要防止不同的节点数据写入脏数据 取消节点readonly 方法如下: MySQL 取消 super read only 直接关闭read…...
基于STM32的色彩识别与分类算法优化
基于STM32的色彩识别与分类算法优化是一项与图像处理和机器学习相关的研究任务,旨在实现高效的色彩识别和分类算法在STM32微控制器上的运行。本文将介绍基于STM32的色彩识别与分类算法优化的原理和实现步骤,并提供相应的代码示例。 1. 色彩识别与分类概…...
阿里云发送短信
官方代码如下: // This file is auto-generated, dont edit it. Thanks. package com.aliyun.sample;import com.aliyun.tea.*;public class Sample {/*** 使用AK&SK初始化账号Client* param accessKeyId* param accessKeySecret* return Client* throws Excep…...
关于用css设置input输入框hover的时候的样式以及当input为disabled的时候,不要让hover样式生效
效果如果: 编辑状态下的时候: 只读状态下的时候: 代码如图: <input type"text" name"dataForm.exportCode" id"exportCodeItem" required :disabled"editDisabled" />input:not(…...
hadoop在本地创建文件,然后将文件拷贝/上传到HDFS
1.要$cd {对应目录}进入到对应目录,一般为 cd /usr/local/hadoop/ 2.创建文件,$sudo gedit {文件名},例 sudo gedit test.txt 然后在弹出的txt文件输入内容,点击右上角的保存之后,关闭即可。 3.拷贝本地文件到HDF…...
NFC:应用场景广泛的短距离通信技术
NFC:应用场景广泛的短距离通信技术 一、NFC 技术介绍1.1 NFC 技术应用场景1.2 NFC 技术优点1.3 NFC 工作原理 二、NFC 开发2.1 NFC 应用开发流程2.2 NFC 读取和写入2.3 NFC 读写功能示例 三、总结 一、NFC 技术介绍 NFC (Near-field communication&…...
CentOS使用docker安装OpenGauss数据库
1.搜索OpenGauss docker search opengauss 2.选择其中一个源拉取 docker pull docker.io/enmotech/opengauss 3.运行OpenGauss docker run --name opengauss --privilegedtrue --restartalways -d -e GS_USERNAMEpostgres -e GS_PASSWORDmyGauss2023 -p 5432:5432 docker.…...
原理Redis-QuickList
QuickList **问题1:**ZipList虽然节省内存,但申请内存必须是连续空间,如果内存占用较多,申请内存效率很低。怎么办? 为了缓解这个问题,我们必须限制ZipList的长度和entry大小。 **问题2:**但是…...
js双击修改元素内容并提交到后端封装实现
前面发过一个版本了,后来又追加了些功能。重新发一版。新版支持select和radio。 效果图: 右上角带有绿标的,是可以修改的单元格。如果不喜欢显示绿标,可以传递参数时指定不显示,如果想改为其它颜色,也可以…...
Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署
KubernetesGitlabJenkinsArgoCD多集群部署 文章目录 KubernetesGitlabJenkinsArgoCD多集群部署1. KubernetesGitlabJenkinsArgoCD多集群部署2. 添加WebHooks自动触发3. Jenkins-构建-执行Shell4. 制作镜像及修改Yaml文件4.1 Dockerfile4.2 Build-Shell 5.自动部署Demo测试5.1 推…...
在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持
中国技术出海是中国企业更高层次更高质量的全球化。在人类文明发展史上,凝聚中国古人智慧结晶的造纸术、印刷术、火药、指南针等,曾为中国技术出海写下过浓墨重彩的一笔。在今天,如金山办公、店匠科技、ADVANCE.AI等公司又以技术立业…...
前端如何判空
这样判空就会报错 loadNode(node, resolve)console.log("node")console.log(node)if (node.data ! null) {this.get(ctx /publicity/publicityType/typeTreeData?id node.data.id).then((res) > {resolve(res)})}}, 需要这样写,用typeof来做类型判…...
基于SSM的焦作旅游协会管理系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
庖丁解牛:NIO核心概念与机制详解 07 _ 字符集
文章目录 Pre概述编码/解码处理文本的正确方式示例程序Code Pre 庖丁解牛:NIO核心概念与机制详解 01 庖丁解牛:NIO核心概念与机制详解 02 _ 缓冲区的细节实现 庖丁解牛:NIO核心概念与机制详解 03 _ 缓冲区分配、包装和分片 庖丁解牛&…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
