GitHub Copilot介绍

GitHub Copilot是一种依据人工智能的编程辅助东西,它运用了先进的机器学习技能,能够主动生成Java代码片段和函数等。只需求输入几个关键字或许一些自然言语描述,Copilot就会依据上下文和言语语法规则,主动生成可用的Java代码,削减了程序员在编写代码时的重复性劳作和错误。

GitHub Copilot集成IDE

1.准备github copilot账号

装置插件之前,咱们需求保证现已具有GitHub账户并通过认证。

2021年6月29日,微软与OpenAI一起推出了一款AI编程东西GitHub Copilot, 此刻请求内测后就可免费试用。

2022年6月22日,Copilot正式上线,定价每月 10 美元(约 66.9 元人民币)或每年 100 美元(约 669 元人民币),对学生用户和盛行开源项目的维护者免费供给。

在2023年的今天, 假如咱们想体会一下, 又觉得费用过高, 咱们能够有以下三条途径:

1.假如你是学生, 你能够直接进行学生认证, 即可免费运用。
2.参加某个大型开源项目, 并作出贡献, 之后能够向github请求免费运用。
3.以上两条都不满意, 能够上咸鱼查找:github学生包, 费用大概一年30左右。
假如条件答应, 还是请支撑正版。

2. 装置GitHub Copilot插件

首要,咱们需求在咱们的集成开发环境(IDE)中装置GitHub Copilot插件。目前,GitHub Copilot已支撑IntelliJ IDEA

Visual Studio Code、PyCharm等主流IDE,咱们能够依据自己的需求选择相应的IDE。装置过程或许因IDE而异,可是都大同小异。

拿IDEA举例, 能够按照以下步骤进行装置:

1. 翻开 IDEA,选择 "File" -> "Settings" -> "Plugins"-> marketplace。
2. 在右侧的查找框中输入 "GitHub Copilot",然后点击 "查找"3. 在查找成果中找到 "GitHub Copilot" 插件,点击 "Install"4. 装置完结后,重启 IDEA, 即可在Tools里看到对应的github copilot
5. 此刻还无法运用,因为需求关联到你的github账号。点击Tools->GitHub Copilot ->Login to GitHub
6. 输入你的 GitHub 用户名和暗码,或许运用 Personal Access Token 进行身份验证。
7. 接下来,你能够在IDEA中测验运用 GitHub Copilot 主动生成代码。

GitHub Copilot: 让Java编程更高效

下面是一些运用GitHub Copilot的示例,演示如何运用它来简化Java代码编写。

1.主动补全办法和类名

在编写Java代码时,经常需求运用一些库和办法。在输入办法和类名时,Copilot会主动补全并显示该类和办法的参数和回来类型。这能够大大加快代码编写的速度。

例如,当你输入“List”时,Copilot会主动提示你创立List类,并供给添加、删除、遍历等办法, 从而帮助你更快速地编写代码。

coder最好的副驾驶-github copilot体验

2.主动生成Java表达式

在编写Java代码时,需求运用许多的表达式。Copilot能够依据上下文主动生成Java表达式,从而削减你的作业量。只需输入 几个关键字,Copilot就会主动推断并生成一个可用的Java表达式。

例如,当你输入“if”时,Copilot会主动生成一个可用的Java表达式。这能够帮助你时刻和精力,并削减编写错误的时机。

coder最好的副驾驶-github copilot体验

3.生成Java Lambda表达式

在Java 8之后,Lambda表达式成为了Java编程的重要组成部分。运用GitHub Copilot,你快速生成Java Lambda表达式。

只需输入一段注释来表述生成的规则,Copilot就会主动生成一个Lambda表达式。

coder最好的副驾驶-github copilot体验

4.依据注释生成咱们需求的办法

GitHub Copilot的一个特别之处在于它能够依据用户供给的注释生成代码。当你在编辑器中键入注释时,Copilot会依据注释供给代码主张,并将生成的代码直接刺进到编辑器中。

例如,假如你在注释中写下“将CST格局时刻转化为yyyy-MM-dd HH:mm:ss格局”,Copilot将生成一个履行这个操作的函数, 并将其刺进到你的代码中。

coder最好的副驾驶-github copilot体验

coder最好的副驾驶-github copilot体验

5.处理算法难题以及学习算法

GitHub Copilot能够依据你输入的信息,给出一些算法主张。这些主张或许会进步你的作业效率,尤其是在处理一些相对简略的问题时。

例如, 你能够通过输入注释”写一个01背包算法”来让它为你生成代码片段.

coder最好的副驾驶-github copilot体验

你也能够直接指定某种算法来让GitHub Copilot来为你处理一些简略的问题。

例如, 当你输入”用二分法从一大串字符串中查找某一个字符”, 他会为你生成对应的代码.

coder最好的副驾驶-github copilot体验

在处理算法难题时,最重要的是理解问题的本质,并规划出高效、正确的算法。虽然GitHub Copilot能够供给一些有用的代码片段,但仍需求程序员自己进行算法规划和剖析。

此外,算法问题的处理涉及到更广泛的问题,包含算法的正确性、时刻复杂度和空间复杂度等。GitHub Copilot并不能处理 这些问题,因而仍需求程序员进行细心的剖析和评估。

因而,虽然GitHub Copilot能够供给一些帮助,但仍需求程序员自己进行算法规划和剖析,以便找到最优解。

6.依据上下文给出智能主张

跟着运用时刻的递加,你会发现GitHub Copilot会优先主张你写过的重复性代码逻辑,它能够深入了解你的项目上下文,为你供给最适宜的主张。

例如, 当你在写代码的时候, 打出”finally”, GitHub Copilot依据你之前写的部分代码直接生成你想要的关闭流的代码。

coder最好的副驾驶-github copilot体验

7.借助上下文分组

在 Copilot 中,你能够运用上下文分组来帮助它更精确地生成代码。例如,假如你正在编写一个运用数据库的应用程序,你能够将你的代码分为不同的组,例如“连接到数据库”、“查询数据”和“关闭连接”。这样,当你在某个组中编写代码时,Copilot 就会考虑该组中已有的代码,以更精确地生成代码。例如:

// 连接到数据库
Connection conn = DriverManager.getConnection(url, username, password);
// 查询数据
String sql = "SELECT * FROM my_table";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
// 关闭连接
rs.close();
stmt.close();
conn.close();

然后,当您在“查询数据”组中编写代码时,Copilot 就会考虑连接到数据库和关闭连接的代码,以更精确地生成代码。

8.代码优化

copilot关于简略函数能够做到一定程度的优化,而关于复杂函数不能保证成果共同。

coder最好的副驾驶-github copilot体验

9.生成单元测试

copilot能够对一些简略的函数生成单元测试

coder最好的副驾驶-github copilot体验

它还能够依据咱们的办法名称主动生成对应的办法体, 一起生成好对应的单元测试用例

coder最好的副驾驶-github copilot体验

10.生成实体类

1. 依据供给的JSON串生成对应的实体类

新建一个实体类,在头部方位添加描述信息,然后回车补全。

假如将描述放到类的内部,也能够生成,但会是一行一行来生成。可是假如描述下方添加内部类的代码,则是能够一次生成的。

coder最好的副驾驶-github copilot体验

2. 依据SQL句子来生成对应的实体类

以数据库相关信息生成, 支撑刺进句子和建表句子。

coder最好的副驾驶-github copilot体验

GitHub Copilot: 运用小Demo

Demo1:

需求:

开发一个读取并打印CSV 文件的 Java 应用程序。

完结这个需求, 创立好JAVA实体类后,只是只需求2个指令。

1.读取CSV文件, 并将数据存储在map列表中。

2.打印CSV文件中的数据。

coder最好的副驾驶-github copilot体验

coder最好的副驾驶-github copilot体验

小结:

从我开始创立实体类开始, 到我完结这个需求, 我一共花了13分钟左右。

其间大概有5分钟的时刻, 我花在了找CsvReader的依靠Jar包, 并将Jar包依靠进项目中。 大概有3分钟花费在改写项目Maven依靠上。 还有5分钟我在Code Review, 来保证生成的代码是正确。

程序运转成果:

coder最好的副驾驶-github copilot体验

Demo2:

需求升级:

开发一个从URL下载CSV 文件, 一起读取并打印文件内容的 Java 应用程序。

这次只是需求一个指令即可完结:

1.从指定URL下载CSV文件, 读取文件内容存储在map列表中。

2.从右侧的多个主张中, 选取一个咱们需求的主张。

coder最好的副驾驶-github copilot体验

coder最好的副驾驶-github copilot体验

小结:

这次更快, 因为之前现已做好了Jar包导入, 这次不需求重复导入。

完结这个需求, 我一共花费了5分钟左右。

其间, 有2分钟的时刻, 我是在右侧选择适宜的代码主张。

并且能够看到, 这次只输入了一条指令。

打印那条指令, 因为Copilot学习了Demo1的代码, Copilot会主动帮咱们生成出来。

这个特性会导致一个成果:

即, 跟着代码的越写越多, 你会发现Copilot用起来会越来越顺手。

这次生成的代码和刚刚Demo1对比, 十分相似, 主要有2处不同。

1.函数入参由文件途径变更为下载URL。

coder最好的副驾驶-github copilot体验

2.文件来源由读取文件途径, 变更为从URL下载文件流, 并用文件流生成CsvReader目标。

coder最好的副驾驶-github copilot体验

符合咱们的预期。

争议

Copilot具有许多优点,但它也面临着一些争议,其间一些包含:

1.代码生成的精确性问题:因为Copilot是依据机器学习技能的,它或许会生成不精确或不完整的代码。这或许导致安全问题或功用缺点。

2.版权问题:Copilot能够通过生成与其他人的代码相似的代码来侵犯版权。这使得一些人担心Copilot或许会导致知识产权的问题。

3.缺少透明度:Copilot运用的机器学习模型是关闭的,没有揭露的源代码,这意味着没有人知道它的内部作业原理。这或许导致缺少透明度和可验证性。

4.东西的发展方向:Copilot是由GitHub和OpenAI一起开发的,它们的发展方向或许会遭到商业利益和技能路线等因素的影响。这或许会导致Copilot的未来发展方向存在一定的不确定性。

总结

GitHub Copilot通过海量代码资源库进行学习练习,结合你当时编码环境上下文, 给到你的即时主张通常会按照你的预期运转, 能够让你在运用过程中发生一种越用越懂你的感觉, 会让你写代码发生一种酣畅淋漓的快感。

总归,GitHub Copilot是一个有用的编程辅助东西,能够加快代码开发,进步出产效率。在运用它时,需求理解其局限性并保持警惕,以保证代码质量和安全性。