Github Copilot 使用场景

Github Copilot 的使用场景

写注释

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

/**
 *使用快速排序对数组进行排序
 */
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函数的参数和返回值。

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

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

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

写测试用例

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

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

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

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

// 测试 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接受建议,你将得到以下代码。

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

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

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

参考链接

Github Copilot的使用场景 https://tutorials.tinkink.net/zh-hans/vscode/usage-scenarios-of-github-copilot.html