AI自动写代码:GitHub copilot插件在Idea的安装和使用教程

news2024/9/20 18:47:51

GitHub Copilot 是微软与OpenAI共同推出的一款AI编程工具,基于GitHub及其他网站的源代码,根据上文提示为程序员自动编写下文代码,可以极大地提高编写代码的效率。

先看看ChatGpt是怎么回答Copilot的功能特点:
在这里插入图片描述

给大家简单提取一些关键信息,GitHub Copilot 是微软与OpenAI共同推出的一款AI编程工具,基于GitHub及其他网站的源代码,根据上文提示为程序员自动编写下文代码,可以极大地提高编写代码的效率,核心功能如下:

  • 根据已有上下文补全代码
  • 根据函数名和参数,生成方法体
  • 根据注释自动生成代码
  • 代码优化
  • 生成测试代码

Copilot使用的是OpenAI烧了数千万美元研发出来的GPT-3.5模型,Copilot在GPT-3模型基础之上通过对GitHub的开源代码进行学习,得到了Codex模型,该模型具备强大的代码生成能力

在使用Copilot之前,需要一些准备工作

1.GitHub Copilot订阅服务

首先你要有一个gitHub账号,没有账号的自行注册即可
点击此处注册:https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home

有了gitHub账号之后,进入Copilot官网,点击申请。

前两个月免费试用,第三个月开始付费,每月10,每年 100 ,每年100,每年100;或者TB购买,不过有概率封禁,如果是学生的话,可以申请学生认证,认证成功之后也可以免费使用。

大家可以先点击start trail体验一下
在这里插入图片描述
在这里插入图片描述

进入之后可以填写自己的相关信息

2.Idea安装Copilot

要求:Idea版本应不低于2021.2,否则无法搜到Copilot插件
在这里插入图片描述

重启idea之后便可使用

3.Idea使用Copilot

安装后重启,点击tools->Copilot登录到gitHub之后来获取使用资格
在这里插入图片描述

在这里插入图片描述

点击Cop and Open
在这里插入图片描述

将设备码复制到此处
在这里插入图片描述

在这里插入图片描述

3.1 代码补全

Copilot能将整行进行补全,并且自可以自动填充到参数
在这里插入图片描述

Copilot也能自动识别到上文中出现过的workbook变量及其getSheetAt方法,没有发生语法错误的问题。
在这里插入图片描述

虽然在上一个例子中补全效果较好,没有出现语法错误的问题,但是Copilot依然会在很多情况下生成存在语法错误的代码片段。如下图所示,StringUtils类是在本地工程中创建的,类下面只有一个readTestFile方法,然而Copilot却生成了print方法,因为Copilot是根据数亿的开源代码学习到的,不能及时的去学习本地工程的代码信息,所以本质上跟TabNine一样是会存在语法错误的问题,只是由于模型更强大,所以错误的概率更小,但是一旦涉及到本地工程的代码,错误的概率就会非常高。
在这里插入图片描述

Copilot方法级的代码生成也有很多错误的时候,比如生成读取XML文件的代码,结果生成的是读取Excel的代码,可能是因为类开头import了较多Excel相关的API。
在这里插入图片描述

3.2 单元测试

用Copilot写单元测试是非常方便的,它能帮助我们生成很多测试数据,减少Mock数据的烦恼。
在这里插入图片描述

假设我们有一个名为Calculator的类,其中有一个add方法,用于将两个数字加。我们希望使用Copilot生成一个测试类来测试这个方法。

// Calculator.java

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

首先,我们需要创建一个测试类。让我们在源代码目录下创建一个名为CalculatorTest的Java类。

// CalculatorTest.java

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class CalculatorTest {

    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        Assertions.assertEquals(5, result, "Addition is incorrect");
    }
}

在上述代码中,我们使用了JUnit Jupiter库中的Assertions类来进行断言。在testAdd方法中,我们创建了一个Calculator实例,然后调用add方法,将结果与期望值进行比较。

现在,我们可以使用Copilot来生成这段测试代码。在IntelliJ IDEA中,选择Calculator类中的add方法,然后按下快捷键Ctrl + Shift + T。

Copilot将根据代码片段生成一个相关的测试方法。

// Copilot生成的测试方法

@Test
void add() {
    Calculator calculator = new Calculator();
    int result = calculator.add(2, 3);
    Assertions.assertEquals(5, result, "Addition is incorrect");
}

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

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

相关文章

【go】新手go module 踩坑入门rc_server

go1.3 后废弃了GOPATH 但是gomodule 要自己设置 :go env -w GO111MODULE=auto Microsoft Windows [版本 10.0.22621.1848] © Microsoft Corporation。保留所有权利。 C:\Users\zhangbin>adb connect 127.0.0.1:7555 connected to 127.0.0.1:7555 C:\Users\zhangbin&…

【计算机通识】未来的计算机

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、未来的计算机 2.1、光子计算机 2.2、生物计算机 2.3、量子计算机 3、总结 1、缘起 自然界中的一切事物都是处…

3d重建+神经渲染

3d重建 基于深度相机(结构光、TOF、双目摄像头)的三维重建基于图像的三维重建:深度学习基于视觉几何的传统三维重建:这种三维重建方法研究时间比较久远,技术相对成熟。主要通过多视角图像对采集数据的相机位置进行估计,再通过图像…

经典同步问题之哲学家就餐

文章目录 一:问题描述方案一:方案二:方案三: 一:问题描述 五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替的进行思考和进餐。…

2023年测试岗前景?为什么要做自动化测试?8年测试总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试是把以…

Web网页制作期末复习(2)——常用文本标签、列表标签、表格标签、Form表单、块元素与行内元素(内联元素)

目录 常用文本标签 列表标签 有序列表 无序列表 定义列表 表格标签 表格组成与特点 表格标签 表格属性 ​​​合并表格单元格 Form表单 属性说明 表单元素 文本框 密码框 提交按钮 块元素与行内元素(内联元素) 内联元素和块级元素…

3、DuiLib了解xml的使用和布局

文章目录 1、了解 XML 使用和布局2、VerticalLayout和HorizontalLayout3、TabLayout4、TileLayout5、Container6、ChildLayout 1、了解 XML 使用和布局 本节主要介绍 DuiLib 中 XML 关键字的使用和一些特性,通过构建一个简单的带标题栏和简单结构的窗口&#xff0c…

模型分享---登陆注册界面

目录 模型---登陆注册界面 验证码的生成: CheckCodeUtil.java: Servlet: 普通用户登陆: css: jsp: 运行结果: 管理员登陆: 运行结果: 注册: 普通用户: css: jsp: 运行…

FreeRTOS实时操作系统(三)任务挂起与恢复

系列文章目录 FreeRTOS实时操作系统(一)RTOS的基本概念 FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库) 文章目录 系列文章目录前言任务挂起与恢复普通挂起恢复实例中断恢复实例 前言 继续跟着正点…

记录--封装一个通过js调用的全局vue组件

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在使用vue项目编写的时候,不可避免的会碰到需要时js api来调用组件进行显示的情况 例如饿了么element ui 的 Notification 通知、Message 消息提示等组件 虽然已经提供了,…

postman和jmete接口测试的用法与区别

目录 前言 接口测试的目的 接口测试怎么测: 1.创建接口用例集(没区别) 2.步骤的实现(有区别) 3数据用例的实现 4断言的实现 5执行 6其他 总结: 前言 前阶段做了一个小调查,发现软件测…

DETR 系列有了新发现?DETRs with Hybrid Matching 论文阅读笔记

DETR 系列有了新发现?DETRs with Hybrid Matching 论文阅读笔记 一、Abstract二、引言三、相关工作目标检测中的 DETR其它视觉任务中的 DETR标签赋值 四、方法4.1 基础知识通用的 DETR 框架通用的可变形 Deformable-DETR 框架 4.2 混合匹配4.2.1 混合分支计划一对一…

client-go的Indexer三部曲之三:源码阅读

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《client-go的Indexer三部曲》全部链接 基本功能性能测试源码阅读 本篇概览 本文是《client-go的Indexer三部曲》系列的终篇,主要任务是阅读和…

Vue全家桶(四):Vue Router 路由

目录 Vue Router1. 相关理解1.1 Vue Router的理解1.2 对SPA应用的理解1.3 路由的理解 2. 基本路由2.1 vue-router使用步骤2.2 几个注意点2.3 触发路由2.4 嵌套路由2.5 路由传递参数方式2.5.1 params 方式2.5.2 Query的方式 2.6 命名路由2.7 路由的props配置2.8 路由跳转的repla…

H3C-HCL模拟器-VLAN划分实验

一、实验拓扑结构图: 二、实验需求: 1. 按图示为PC配置IP地址 2. SW1和SW2上分别创建vlan10和vlan20,要求PC3和PC5属于vlan10,PC4和PV6属于vlan20 3. SW1和SW2相连的接口配置为trunk类型,允许vlan10和vlan20通过 4…

AI工程化的“基座能力”?—— 聊聊GPT Function Calling

点击↑上方↑蓝色“编了个程”关注我~ 这是Yasin的第 94 篇原创文章 最近AI大模型火出了圈,很多人惊叹它的智能程度。但大多数人都以为它的能力主要在“聊天”、“写文案”这方面。然而实际它能做的远远更多。 Chat GPT是当今世界上最智能的模型,它前段时…

【Linux】—— 详解进程PCB和进程状态

前言: 在上篇我们已经对有关体系结构的基本知识进行了详细的介绍,接下来我们将进入网络编程的第一个大块—— 有关进程相关的知识!!! 目录 前言 (一) 基本概念 1、描述进程-PCB 2、查看进程…

【人工智能】— 逻辑回归分类、对数几率、决策边界、似然估计、梯度下降

【人工智能】— 逻辑回归分类、对数几率、决策边界、似然估计、梯度下降 逻辑回归分类Logistic Regression ClassificationLogistic Regression: Log OddsLogistic Regression: Decision BoundaryLikelihood under the Logistic ModelTraining the Logistic ModelGradient Desc…

使用vue脚手架搭建前端工程(附:搭配ElementUI来快速开发)

目录 一、搭建过程 1. 全局安装webpack(打包工具) 2. 全局安装vue脚手架 3. 初始化vue项目 4. vue项目目录的简单介绍 二、执行流程分析 三、自己造一个组件案例 四、ElementUI的使用 1. 环境的引入 2. 一个简单使用 3. 使用它来快速搭建后台管…

AI绘画Stable diffusion保姆级教程,看这一篇就够了「安装-配置-画图」

随着chat gpt爆火之后,越来越多的人开始关注人工智能,人工智能相关的其他应用如AI绘画,也再次得到人们的关注。AI绘画的确很上头,最近几天小编也研究一下,这里把研究的过程以及中间遇到的问题整理一下,我这…