研發效能提升利器:五個AI編程助手
一年前寫了一篇文章 2021年,必須知道/采用的七大AI 軟件開發/測試工具,就介紹了基于OpenAI CodeX的GitHub Copilot、自動補全代碼工具Codota等,上一周介紹了阿里和北京大學合作開發的 BizCook 系統:首個用于工業開發的自動代碼生成系統 。的確是未來已來,智能編程助手就在身邊,我們是時候考慮引入這樣的編程機器人作為程序員的助手,幫他生成代碼、補全代碼、檢查代碼,從而極大地提高軟件研發的效能。
今天我們再給大家5款實用的智能編程工具,讓大家更好地了解他們究竟能干什么。也許看完這篇文章,你就迫不及待想下載一個工具開始試用。
1. Jedi
Jedi是一個專注于代碼自動補全、代碼重構、代碼搜索和查找引用等功能,而且還是一個用于Python的靜態分析工具,通常以IDE /編輯器的插件形式存在。
Jedi 通過一套簡單的API 和REPL (Read-Evaluation-Print-Loop,交互式的編程環境,像Python就是天生具備REPL這樣的運行環境)來實現上述功能。
- Autocompletion(自動補全): Script.complete();
- Goto/Type Inference: Script.goto() 、Script.infer()
- Static Analysis: Script.get_names() 、Script.get_syntax_errors()
- Refactorings(重構): Script.rename(), Script.inline(), Script.extract_variable() 、Script.extract_function()
- Code Search: Script.search() and Project.search()
Jedi 的一些基本特性:
- 能處理復雜的模塊/函數/類結構
- 很好地支持 virtualenv / venv
- 對Python的類型提示非常有效
- 理解stub(樁程序)文件
- 可以為sphinx、epydoc和基本numpydoc等Docstring推斷函數參數
- 支持絕大多數常用的Python特性
- 總的來說是一個非??煽康能浖?,經過了很長時間的改進。
2. Wing Pro
Wing的智能編輯器使Python編碼變得又快又簡單。在編寫代碼過程中,Wing 強大的靜態和實時的動態代碼分析能向開發人員提供適合上下文的幫助、代碼補全和智能錯誤檢查,而且可以快速地在一個塊、范圍或文件中對同一個字符串進行多次選擇,或者通過單擊編輯器進行多次選擇,以便一次性對所有選擇進行統一的編輯。編輯器的自動補全程序中提供的代碼片段允許快速輸入標準代碼模板和常用結構。代碼段中的字段是通過tab鍵輸入的。相同的代碼片段可以采用不同的形式,這取決于調用它的上下文。
Wing的代碼警告系統提供了編碼錯誤的早期識別,例如語法錯誤、未定義的變量和屬性、不可解析的導入、縮進錯誤和不可訪問的代碼,而Wing的Source Assistant不斷更新,以顯示類型信息、內聯文檔、調用提示,并鏈接到Python文檔中,用于編寫或訪問的代碼。Wing可以模擬vi、emacs、Visual Studio、Eclipse、MATLAB和XCode,從而使用戶很容易上手。
Wing Auto-editing:在編寫代碼時,調用輔助自動輸入函數和方法參數,允許以tab鍵切換調用,以便快速、正確地放置參數。將自動刪除未更改的默認參數,并相應地重新包裝調用。其他可配置的自動編輯操作包括自動關閉圓括號和引號、使用PEP8樣式可選的自動間隔、無序輸入的自動修復以及在輸入新代碼時管理塊。
重構是一種快速重組代碼而不影響其功能的方法。Wing支持重命名和移動符號定義點,從現有代碼中提取新的函數或方法、為現有表達式引入變量以及更改符號命名風格。
3. Tabnine AI
Tabnine AI 是自動補全代碼工具,借助先進的公共代碼模型與精確的定制算法,不斷學習團隊已有的代碼、模式和偏好,從而在你寫代碼過程中,及時、精確地推薦代碼、補全代碼,幫助你快速地完成編程任務。此外,開發人員團隊可以使用該工具獲得標準化的、一致性的代碼,代碼的質量也得到保障,這樣可以降低測試的成本,更快地交付代碼。
Tabnine根據上下文和語法預測并建議下一行代碼,在編輯器中可以完成整行代碼,甚至完成全功能的代碼,讓程序員成為超級10倍的開發人員。
Tabnine支持不同的IDE和多種編程語言,從JavaScript、Python和TypeScript等最流行的語言到Rust、Go和Bash等小眾的語言。
4. Amazon CodeWhisperer
使用CodeWhisperer構建和訓練代碼生成的ML模型,從而向開發人員自動推薦代碼,節省開發的時間和精力,以加速前端和后端開發。
通過在最流行的服務(包括Amazon EC2、AWS Lambda和Amazon S3)上提供AWS API的代碼建議,加快開發過程。
自動化單元測試生成。不再編寫重復的單元測試代碼。基于自然語言注釋,CodeWhisperer自動推薦與實現代碼匹配的單元測試代碼。
CodeWhisperer接受了各種數據源(如開源代碼)的訓練,理解用普通自然語言編寫的注釋,根據開發人員的意圖生成代碼,并匹配開發人員的模式和風格,所以生成的代碼類似于開發人員編寫代碼的方式。當程序員輸入時,CodeWhisperer甚至提供了完成注釋本身的建議。程序員可以接受CodeWhisperer的推薦,查看更多的推薦,或者只是繼續編寫自己的代碼。
我們還可以輕松地查找和檢查引用代碼,以及它在另一個項目中有什么不同的上下文、又是如何使用的。CodeWhisperer提供了安全掃描,以檢測Java和Python代碼中的安全漏洞,還給開發人員建議:刪除那些可能被認為有偏見和不公平的代碼。
5. Kite
Kite的表現也不錯,可以快速地向程序員推薦上下文感知代碼。根據過去使用的數據統計,開發人員在編程中使用它時,可以減少47%的擊鍵次數。通過超過2500萬個文件的數據訓練,Kite使用的模型挺強大,一次可以推薦多行代碼。
Kite還可以幫助我們從代碼庫中快速找到與當前編碼文件相關的文件,還可以使用它通過鼠標懸停來查看Python文檔,并查找how-to和示例。
其實這類工具還比較多,例如:AlphaCode、DeepCode、SourceAI、Bayou、Clever-Commit、Embold、mabl、PyCharm、Pylint......