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