让IntelliCode更加智能化
在你敲代码的时候,你正在舒服的享受着自动完成列表所带来的编码快感,这一切都依赖着IntelliCode组件在幕后所做的辛勤工作。在之前的一篇关于IntelliCode文章中,我们解释了IntelliCode是如何通过对几千个GitHub开源项目里的代码进行机器学习,然后作出更加智能化的编码建议。对于一些类似于标准库的公共API,基于社区知识库的检索分析方式是十分奏效的,但是如果你希望IntelliCode对于私有API或者那些在开源代码中不被广泛使用的库也能进行分析,咋办呢?为了解决这个问题,从Visual Studio 2019 v16.5 Preview 3版本开始,你可以基于你自己的代码库来训练IntelliCode模型。这会产生出一种我们称之为[Team Completions model]的模型,因为一旦你开始这样做了,你会得到基于你的开发团队的编码模式的自动完成列表。
对[Team Completion model]进行训练目前还是一项预览版功能,所以训练的结果可能会随着代码库的配置和平台配置的差异产生各种不同的效果。
如何创建并使用我自己的模型
首先需要确保[C++ team models for completions]是处于启用状态,这一选项位于[Tools > Options > IntelliCode > General > Preview Features]页面下。最简单的对一个模型进行训练和测试的方式是通过菜单项[View > Other Windows > Train IntelliCode Model for this Repository]来进行。当点击这个菜单项时,Visual Studio会立即基于你的代码开始一项模型训练。当训练结束,第一次的成员列表将基于新创建的[Team Completions model],随后所有的列表也都将使用这个新的模型。如下图所示:
对于团队开发环境,任何拥有对代码仓库访问权的开发者都将自动得到这个模型。这种方式的好处在于,它不需要每个人单独去训练代码模型,只需要某个开发者训练一次,整个开发团队都可以轻松共享。
有图有真相
请不用担心安全问题,在创建模型的时候,我们不会向我们的服务器上传你的原始代码。如果想知道更多关于模型创建过程的细节,请参考我们的FAQ。
手动的重新训练模型
通常情况下,你不需要频繁的训练你的模型。只有当你的代码库有很大的变更时,同时,你希望IntelliCode的代码推荐能同步反映这个改变时,你才需要重新训练。方法很简单,直接通过上面讲述的方法步骤重新训练一次即可。
通过Azure Pipelines自动化模型的创建和训练
如果你不想自己管理模型的训练,你可以在Azure Pipelines中自动创建和训练模型,作为你的持续集成流水线中的一部分。你需要从Visual Studio Marketplace中安装到Azure DevOps organization或者Azure DevOps服务器上。使用这种方法后,当你的代码变更Push到仓库后,编译任务将开始执行并且[team completions model]将开始进行训练。关于此自动化的详细配置方法,请参考文档中关于编译任务的配置和自动化的部分。
总结
这应该是一项很好的功能特性,当你的工程代码越来越庞大或者项目成员越来越多的时候,确实有必要让IntelliCode更加合你的口味一点。