Skip to content
On this page

Github Copilot的使用场景

Copilot(https://copilot.github.com/)是Github提供的一个人工智能编码辅助工具,在编码过程中提供基于人工智能学习的编码建议。在很多情况下,Copilot可以只用注释或函数名就能实例化出完整的代码。

但是你知道吗,你可以在更多的使用场景中使用Copilot?Copilot还可以补充测试用例、注释、文档、数字序列,甚至是翻译。在这篇文章中,我们将介绍Copilot的更多使用场景。

如果你想了解Copilot的基础,请参考[如何使用Github Copilot和快捷键](/zh-hans/vscode/copilot-usage-and-shortcut.html)。

解决算法问题

Copilot可以帮助你解决算法问题。例如,你可以用Copilot来解决寻找数组最大值的问题。

以JavaScript为例,你可以在VSCode中写下以下文字。

// 使用快速排序对数组进行排序

然后等待Copilot建议代码,然后按Tab接受建议,你会得到以下代码。

js
// 使用快速排序对数组进行排序
const quickSort = (arr) => {
  if (arr.length <= 1) {
    返回 arr;
  }
  const pivotIndex = Math.floor(arr.length / 2);
  const pivot = arr.splice(pivotIndex, 1)[0];
  const left = [];
  const right = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

如果你把注释改为//使用冒泡排序对数组进行排序,你会得到以下代码。

js
// 使用bubble sort对数组进行排序

const bubbleSort = (arr) => {
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length - 1 - i; j++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j + 1];
        arr[j + 1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr;
};

哇,Copilot可以为你解决算法问题!

编写测试用例

Copilot还可以帮助你编写测试用例。例如,你可以用Copilot为上一节中的quickSort函数编写测试用例。

以JavaScript为例,你可以在VSCode中写下以下文字。

// 测试 quickSort
test('quickSort', () => {

然后等待Copilot建议代码,然后按Tab接受建议,你会得到以下代码。

js
// 测试 quickSort
test('quickSort', () => {
  expect(quickSort([1, 2, 3, 4, 5]).toEqual([1, 2, 3, 4, 5])。
  expect(quickSort([5, 4, 3, 2, 1]).toEqual([1, 2, 3, 4, 5])。
  expect(quickSort([1, 3, 2, 5, 4]).toEqual([1, 2, 3, 4, 5])。
});

举个更复杂的例子,假设你有一个叫做UserService的服务,它有一个叫做getUserInfo的方法来获取用户信息,还有一个叫做setUserInfo的方法来设置用户信息。你可以在VSCode中写下以下文字。

// 测试
const userService = new UserService();
const userInfo = userService.getUserInfo();
userInfo.setUserInfo('name', 'testName');

然后等待Copilot建议代码,然后按Tab接受建议,你将得到以下代码。

js
// 测试
const userService = new UserService();
const userInfo = userService.getUserInfo();
userInfo.setUserInfo('name', 'testName')。
expect(userService.getUserInfo()).toEqual({
  name: 'testName',
});

看,Copilot知道你想测试setUserInfo方法,它将自动为你生成测试代码。

如果你用它来编写更多的测试用例,你会发现Copilot足够聪明,可以为你编写测试用例。它知道你想测试什么,它将自动为你生成测试代码。如果你多次测试一个方法,Copilot甚至会为你命名变量属性(userInfo2, userInfo3, 等等)。而且它还知道在测试后销毁数据,这样就不会影响下一次的测试。

写注释

Copilot还可以帮助你写注释。例如,你可以用Copilot为上一节中的 quickSort函数写注释。

以JavaScript为例,你可以在VSCode中写下以下文字。

js
const quickSort = (arr) => {
  if (arr.length <= 1) {
    return arr;
  }
  const pivotIndex = Math.floor(arr.length / 2);
  const pivot = arr.splice(pivotIndex, 1)[0];
  const left = [];
  const right = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

然后你在quickSort函数的上面一行写上以/**开头的注释,等待Copilot建议代码,然后按Tab接受建议,你会得到以下代码。

js
/**
 *使用快速排序对数组进行排序
 */
const quickSort = (arr) => {
  if (arr.length <= 1) {
    return arr;
  }
  const pivotIndex = Math.floor(arr.length / 2);
  const pivot = arr.splice(pivotIndex, 1)[0];
  const left = [];
  const right = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

然后你可以像这样完成quickSort函数的参数和返回值。

js
/**
 * 使用快速排序对数组进行排序
 * @param
 */

然后等待Copilot建议代码,然后按Tab接受建议,你将得到以下代码。

js
/**
 * 使用快速排序对数组进行排序
 * @param {number[]} arr
 * @returns {number[]}
 */

看,Copilot知道你想为quickSort函数写一个注释,它会自动为你生成注释,还知道如何履行quickSort函数的参数和返回值。

数字序列

Copilot还可以帮助你编写数字序列。例如,你可以用Copilot生成一个从1到100的数组。

以JavaScript为例,你可以在VSCode中写下以下文字。

js
// 从1到100的数字数组
const arr = [1, 2,

然后等待Copilot建议代码,然后按Tab接受建议,你会得到以下代码。

js
//从1到100的数字数组
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5051, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100];

你也可以生成一个从100到1的数字数组或其他东西。

js
// 从100到1的数字数组
const arr = [100, 99,

// 从1到100的奇数数组
const arr = [1, 3,

词典

Copilot也可以作为词典使用。例如,你可以用Copilot查询"test"这个词的含义。

你可以在VSCode中写下以下文字。

//解释一下test这个词
测试:为了

然后等待Copilot建议代码,然后按Tab接受建议,你将得到以下代码。

// 解释一下测试这个词
测试:为了检查某物是否符合要求,或为了证明某事是否正确而进行的一系列操作。

你可以添加更多的词来查询。

// 解释这些词
测试:为了检查某物是否符合要求,或为了证明某事是否正确而进行的一系列操作。
算法:
编程:
LGTM:

然后等待Copilot建议代码,然后按Tab接受建议,你将得到以下代码。

//解释一下这些词
测试:为了确定准确性、可靠性或质量而进行的一系列行动、事件等。
算法:解决问题的一种方法或步骤。
编程:用计算机语言编写的程序。
LGTM:看起来不错。

翻译

Copilot还可以帮助你进行翻译。例如,你可以用Copilot将以下文字从英文翻译成中文。

English: Hello, I am Copilot, I can help you write code.
Chinese:

然后等待Copilot建议代码,然后按Tab接受建议,你会得到以下代码。

English: Hello, I am Copilot, I can help you write code.
Chinese: 你好,我是 Copilot,我可以帮助你写代码。

你可以添加更多的语言来翻译。

English: Hello, I am Copilot, I can help you write code.
Chinese: 你好,我是 Copilot,我可以帮助你写代码。
Traditional Chinese:
Japanese:

然后等待Copilot建议代码,然后按Tab接受建议,你会得到以下代码。

English: Hello, I am Copilot, I can help you write code.
Chinese: 你好,我是 Copilot,我可以帮助你写代码。
Traditional Chinese: 你好,我是 Copilot,我可以幫助你寫代碼。
Japanese: こんにちは、私は Copilot です。私はあなたがコードを書くのを手伝うことができます。

总结

在这篇文章中,我为你介绍了Copilot的更多使用场景。当你写代码时,Copilot可以提供很多帮助。它还可以帮助你写文档,写测试用例,写注释,生成数字序列,以及翻译。它是非常有用的。我希望你能喜欢它。