日常使用的普通插件其他人已經回答很多了,我來為大家介紹幾個比較新穎的AI輔助編碼插件,包含國外的Kite、Codota、TabNine、GitHub Copilot,國內的阿里云Cosy、AIXcoder。
先總結一下個人體驗的簡單感受:
- TabNine支持的語言及IDE種類最豐富,本地模式內存占用高;
- GitHub Copilot提供的代碼補全/生成效果更驚艷,希望未來收費不太貴;
- 阿里云Cosy的代碼搜索功能比較實用,可以與其他工具搭配使用;
- Kite僅適合Python開發者,補全不算驚艷;
- Codota已經不再維護了,可以不考慮了;
- AIXcoder中規中矩,缺少亮點;
一、GitHub Copilot
安裝方式:IntelliJ IDEA插件市場搜索“GitHub Copilot”。
GitHub近期發布的的代碼智能生成插件,目前支持VSCode、JetBrains等IDE平臺,不同于其他代碼補全工具只提供最多一行的補全結果,Copilot能通過代碼上下文以及語言描述,生成整個代碼片段,無疑是開發者的編碼利器。它是如何做到的呢?下文中提到TabNine使用的是GPT-2深度學習模型,而Copilot使用的是OpenAI據說燒了數千萬美元研發出來的GPT-3模型,Copilot在GPT-3模型基礎之上通過對GitHub的開源代碼進行學習,得到了Codex模型,該模型具備強大的代碼生成能力。但是由于該模型非常龐大,需要有足夠的硬件支撐,所以Copilot目前只能通過邀測的形式小范圍試用。從FAQ中的信息顯示,Copilot未來可能不會大面積免費開放,未來想要嘗試該工具的開發者要準備好預算。
GitHub Copilot提供了片段級的代碼補全功能,可以用于注釋生成代碼、生成單元測試等場景。
- 提供了遠程服務模式,需要將代碼上傳到遠端,所以如果是企業的開發者可能要注意數據安全了
- 能夠通過代碼上下文、注釋及語言描述生成方法級的代碼片段
GitHub Copilot是一款非常好用的代碼生成工具,適合生成通用的工具代碼、leetcode算法、單元測試等場景的高頻代碼,而對業務代碼的生成則依然存在語法錯誤的問題,可惜Copilot只提供了遠程服務模式,并且基于Copilot當前的技術路線也不太可能提供離線模式,這點可能會帶來潛在的隱私及代碼數據的泄露風險,希望以后收費不會太貴。
個人體驗評價
- 語言及IDE支持:?? ?? ☆ ☆ ☆
- 代碼補全:?? ?? ?? ?? ☆
- 代碼搜索:不支持
二、TabNine
安裝方式:IntelliJ IDEA插件市場搜索“TabNine”。
TabNine是一款比較年輕的開發工具,剛發布的時候還是比較驚艷的,那個時候OpenAI剛開源GPT-2模型不久,TabNine基于GPT-2模型在海量代碼數據上進行調優,打造出了一款針對代碼的深度學習引擎,它能智能識別代碼的上文信息,提供長序列的代碼補全結果。目前,已經被Codota公司收購,并主推該工具,宣稱支持所有主流的開發語言。
TabNine提供代碼智能補全功能,支持以下特性:
- 免費版只提供較為基礎的補全功能,收費的Pro版本補全效果更好
- 遠程服務模式,代碼需要上傳到遠程服務器,但是模型更強大,本地內存占用少
- 離線模式,能夠把模型下載到用戶本地,無法聯網也可使用補全,但是本地內存占用高,有時候CPU會飆高
- 針對專業版提供了適配企業/私有代碼的能力,是需要收費的
TabNine能提供長序列的代碼補全,在我體驗過的同類工具中,TabNine是支持的開發語言種類以及IDE平臺最多的工具。但是與其他工具相同,它會推薦出不完整的代碼以及存在語法錯誤的代碼。從部分開發者的反饋了解到,有部分開發者喜歡TabNine即時學習代碼模式的能力,這點是相比其他工具比較不錯的,雖然目前提取代碼模式的能力還存在比較多的缺陷,但是相信未來會逐漸完善。
個人體驗評價
- 語言及IDE支持:?? ?? ?? ?? ??
- 代碼補全:?? ?? ?? ☆ ☆
- 代碼搜索:不支持
三、阿里云Cosy
安裝方式:IntelliJ IDEA插件市場搜索“Cosy”或者“Alibaba Cloud AI Coding Assistant”。
阿里云的智能編碼插件Cosy于2021年10月份發布,到現在才兩個月時間,是個相對年輕的工具。目前僅支持Java語言。通過其幫助文檔了解到,它使用深度學習模型加語法分析結合的技術,通過深度學習模型強力的學習能力生成長序列代碼,同時又通過結合語法分析的能力去糾正模型生成的錯誤。我個人比較喜歡的是Cosy的代碼搜索功能,它從GitHub和StackOverflow中抽取出了常用的代碼片段,讓我能很方便的在IDE中直接搜索需要的信息。
阿里云Cosy提供的代碼智能補全僅提供IntelliJ IDEA插件,支持Java語言,相比于其他工具支持的語言種類比較少,相比于TabNine,在補全效果上有一些優化,減少了補全半截的情況。
- 支持整行的代碼補全結果
- 離線模式,Cosy會在首次啟動時把模型下載到本地,之后便可斷網使用
我個人比較喜歡的是阿里云Cosy的代碼示例搜索功能,支持以下特性:
- 在IDE內支持指定API的代碼示例搜索
- 在IDE內支持通過功能描述搜索StackOverflow、GitHub等來源的開源代碼片段
阿里云Cosy的代碼補全在TabNine的基礎上更進一步的解決了部分生成錯誤代碼的缺陷,但是在細節打磨上還存在一些問題,與TabNine、GitHub Copilot相比各有千秋。Cosy的代碼搜索功能相比其他工具確實是一個比較好的亮點,讓我的日常“抄”代碼輕松很多。
個人體驗評價
- 語言及IDE支持:?? ☆ ☆ ☆ ☆
- 代碼補全:?? ?? ?? ☆ ☆
- 代碼搜索:?? ?? ?? ?? ☆
四、Kite
安裝方式:IntelliJ IDEA插件市場搜索“Kite”。
說到業界在代碼智能補全領域發布最早的工具,Kite便是其中之一,它成立于2014年,在Atom/Vim/Spyder等編輯器發布代碼智能提示插件,初期只面向Python開發者,當前擴展到面向絕大部分主流開發語言。并于2020年初發布JetBrains插件,2021年初發布VSCode插件。Kite支持目前主流的16種開發語言以及16種代碼編輯器,但是從我的使用體驗上來看,其最擅長的還是Python語言,畢竟是Kite最早支持的語言類型。
Kite提供基于機器學習的代碼智能補全功能,支持以下特性:
- 遠程服務模式,代碼需要上傳到遠程服務器
- 離線模式,能夠把模型下載到用戶本地,無法聯網也可使用補全
- 專業版能針對用戶的代碼庫進行訓練
Kite也提供了Python官方文檔搜索功能
- 支持Python API的官方文檔及少量示例
Kite適合Python開發者,畢竟Kite是以Python起家,在Python語言上打磨了很多年,雖然不像其他同類工具一樣,能提供非常驚艷的長序列代碼補全,但是它對IDE自帶補全的排序優化效果還是很不錯的。Kite的API文檔搜索能搜索到常用的Python API官方文檔,但是大部分能在IDE中通過查看API定義查看,代碼的使用示例比較缺乏。
個人體驗評價
- 語言及IDE支持:?? ?? ?? ?? ☆
- 代碼補全:?? ?? ☆ ☆ ☆
- 代碼搜索:?? ?? ☆ ☆ ☆
五、Codota
安裝方式:IntelliJ IDEA插件市場搜索“Codota”。
除了Kite,業界另一個涉足最早涉足該領域的工具是Codota,Codota成立于2013年,在2014年下旬發布第一個Jetbrains插件版本,主要面向Java開發者。但是,目前Codota公司收購TabNine之后,已經放棄了Codota這款插件,并將老產品改名為了TabNine。
Codota提供了代碼補全功能,在Java語言上效果比較好:
- 基于程序分析、統計分析的規則化代碼補全,主要能針對部分類名、常用的代碼模板進行補全
Codota提供了IDE內的代碼示例搜索功能(支持Java、JavaScript)
- 支持搜索引用了指定API的代碼示例
在其他代碼補全工具發布之前,Codota還是一個比較不錯的開發利器,特別是豐富了IDE自帶的代碼模板,可以幫助開發者節省很多低級編碼的時間,Codota也有一些用于生成代碼的小功能,這里就不再擴展。但是在目前AI爆發的時代,Codota的產品演進沒有跟上步伐,所以Codota公司已經放棄該產品的演進,轉而大力發展收購的TabNine。
個人體驗評價
- 語言及IDE支持:?? ?? ☆ ☆ ☆
- 代碼補全:?? ?? ☆ ☆ ☆
- 代碼搜索:?? ?? ?? ☆ ☆
六、AIXcoder
安裝方式:IntelliJ IDEA插件市場搜索“AIXcoder”。
AIXcoder從天眼查了解到其成立于2017年,根據官網主頁的信息,它也采用了深度學習的技術,并且對模型進行了壓縮,以便于提升用戶下載模型的速度,減少用戶本地CPU的開銷。AIXcoder提供了對用戶本地代碼庫學習的工具,但是免費版有次數限制,而且學習本地代碼庫的時候電腦會比較卡。讓我有點疑惑的是,AIXcoder官網主頁視頻中演示了IDE內的代碼搜索功能,但是在實際插件中只提供了一個跳轉到瀏覽器中的按鈕,并不能在IDE內直接搜索(難道是需要付費的?)。目前發布了Jetbrains及VSCode插件,主要支持Java、Python、C/C++、JavaScript、Typescript、Go、PHP等語言。
AIXcoder提供的代碼智能補全與Kite比較相似,都會對IDE自帶的補全結果進行排序優化,只是AIXcoder在Java上效果好一些,支持以下特性:
- 遠程服務模式,代碼需要上傳到遠程服務器,速度更快一點,卡頓感會減少
- 離線模式,會把模型下載到本地
官方主頁的演示視頻說是支持IDE內的代碼搜索,但是我安裝插件后發現只能跳轉到網頁端的搜索頁面上,無法在IDE內搜索,難道這塊功能是需要收費的?總的來說AIXcoder在剛發布的時候還是很不錯的,但是最近發布了太多同類工具,AIXcoder的代碼補全體驗相比其他工具算不上出彩,希望AIXcoder能繼續提升。
個人體驗評價
語言及IDE支持:?? ?? ?? ☆ ☆
代碼補全:?? ?? ☆ ☆ ☆
代碼搜索:IDE內不支持