《A3--成海霞--AI輔助編程—Github Copilot實戰.pdf》由會員分享,可在線閱讀,更多相關《A3--成海霞--AI輔助編程—Github Copilot實戰.pdf(36頁珍藏版)》請在三個皮匠報告上搜索。
1、AI輔助編程GitHub Copilot實戰成海霞微軟 軟件研發工程師成海霞微軟亞太研發中心 軟件研發工程師目前主要負責Java on Azure面向傳統應用服務器的云原生解決方案的設計和研發,助力企業客戶將Java遺留系統成功轉型并無縫遷移至Azure容器平臺,實現技術現代化的飛躍。曾就職于甲骨文上海研發中心,從事自動化測試產品以及PAAS平臺現代化DevOps系統的研發。AI輔助編程實戰等技術書籍譯者,Microsoft Azure for Java Developers圖書技術評審。目錄C O N T E N T S1.AI輔助編程簡介2.GitHub Copilot概覽3.GitHub
2、 Copilot實戰4.局限性與挑戰5.總結與展望AI輔助編程簡介01AI輔助編程常見功能與AI能力層級常規任務自動化代碼分析自動生成測試支持用戶與IDE交互上下文感知的代碼補全API和SDK用法優化缺陷檢測和修復開源項目發現和歸因自動生成代碼文檔0:無AI輔助1:代碼補全2:代碼創建3:受監督的自動化4:完全自動化5:AI主導的完全自洽人類發起的AI發起的AI主導的代碼提示AI輔助編程工具/LLM及其評估GH COPILOT概覽02GitHub CopilotAI-pair programmerOpenAI CodexGPT-3.5 Turbo2023:Copilot Business GA
3、2024:Copilot Enterprise GAGitHub Copilot X GPT-4個性化的開發者體驗GitHub Copilot WorkspaceGPT-4 Turbo All About Github Copilot|by Rishikesh Chandra|Medium常用功能快速入門掌握新技能快速融入現有項目代碼解析理解應用遷移中的遺留代碼掌握長期維護項目的代碼熟悉從其他代碼庫復制的代碼代碼生成編寫新代碼更新現有代碼庫推動代碼一致性編程語言轉換代碼重構代碼文檔編寫函數摘要優化類和變量的命名單元測試與安全增加單元測試覆蓋率編寫高質量測試用例測試數據生成報告代碼中的安全漏洞基
4、于AI的漏洞預防系統代碼審查執行初步的PR審查,確保代碼質量通過提供詳盡的提交注釋,優化代碼提交的標準主要功能:代碼補全頂層注釋代碼中的具體注釋文件命名和文件類型有具體意義的命名(類、函數、變量)打開的標簽頁VS Code代碼補全工具欄VS Code代碼補全面板主要功能:聊天聊天窗口內聯聊天效能提升95%85%55%對代碼質量對代碼質量更有信心更有信心表示表示更喜歡更喜歡編寫代碼編寫代碼編寫代碼編寫代碼更快更快GH COPILOT實戰03學習新編程語言獲取開發環境配置向導巧用提示學習編程語言創建腳手架解析代碼編寫新代碼編寫測試提示:請幫我配置運行C#的環境。提示:請以海盜為主題教我C#語言基礎
5、。提示:workspace/new 使用net8 C#創建控制臺應用PiratesExample,用NUnit創建測試項目。提示:創建一個 C#Pirate類,包含屬性姓名、年齡和船只。提示:workspace 如何在 dotnet CLI 中生成單元測試報告?60.80%70.80%專業開發者學習編程的開發者SO2024調查:AI工具加速學習編寫測試使用內聯注釋編寫單元測試使用內聯聊天生成單元測試使用聊天窗口生成單元測試生成樣本數據提供學習樣本提高UT準確性測試驅動開發(TDD)行為驅動開發(BDD)用Gherkin等自然語言定義需求借助Copilot定義場景使用Copilot生成測試編寫(
6、更新)應用代碼運行測試,測試失敗運行測試,測試成功診斷和解決問題修復語法錯誤解決運行時異常修復命令行錯誤日志分析GitHub Copilot chat for Visual Studio 2022:智能CPU監控與分析異常處理助手Rubber Ducking debuggerSimplified Code Refinement and Debugging with GitHub Copilot Chat-Visual Studio Blog()代碼重構代碼文檔和注釋提煉函數簡化復雜代碼分解條件表達式模塊化優化命名檢測和刪除無用代碼提示:根據最佳編程實踐添加清晰的注釋。提示:以一種更簡單、更易于
7、維護的方式重構這段代碼?提示:#file:todo.controller.ts 請建議哪些部分適合使用提煉函數進行重構?提示:#file:todo.controller.ts 使用分解條件表達式技術分解復雜的 if-then-else 語句。提示:#file:todo.controller.ts 請檢查變量名和方法名,并提出改進建議.提示:識別#file:file1#file:file2中重復的代碼。提示:就#file:file1#file:file2文件中代碼提供模塊化建議。提示:#file:todo.controller.ts 你能幫我識別代碼中潛在的無用代碼嗎?增強代碼安全獲取編寫安全A
8、PI的優秀設計輸入驗證發現和修復安全問題弱密碼哈希漏洞SQL注入漏洞提示:確保 NestJS API 安全的最佳實踐有哪些?提示:如何在 NestJS API 中進行輸入驗證?提示:這段代碼中存在哪些安全問題?#file:user.service.ts代碼通用轉換自然語言到編程語言的轉換Gherkin JavaScriptJavaScript組件之間轉換React.js 組件 Angular 組件React.js 組件 Vue.js 組件簡化CSSCSS框架之間轉換HTML Tailwind CSS框架/庫之間的轉換Pandas PolarsExpress.js Koa.jsCSV-XML用類
9、型強化非類型語言JavaScript TypeScriptPython CythonRuby CrystalPHP HackClojure ClojureScriptErlang AlpacaLua Typed LuaR SlangPerl RakuGroovy Java面向對象編程語言之間的轉換Objective-C Swift數據庫遷移SQL Server PostgreSQLCI/CD平臺之間的轉換Azure DevOps-GitHub Actions現代化遺留系統COBAL 項目的現代化擴展GitHub Copilot在VS Code中擴展GitHub CopilotChat 和 LL
10、M APIsGitHub Copilot Extensions使用擴展將外部工具與 Copilot Chat 集成Copilot 合作伙伴計劃在有限的公共 beta 版本中注冊定制Context與外部工具集成與知識庫集成解決垂直場景問題擴展GitHub CopilotChatGPT Over Your Data(langchain.dev)聊天歷史新問題獨立問題向量存儲外部工具回答相似性搜索RAG(檢索增強生成)商業版和企業版功能功能個人版個人版商業版商業版企業版企業版代碼補全部分部分聊天(Chat)部分部分CLIPR摘要文本補全創建/管理知識庫管理員功能GitHub Copilot feat
11、ures-GitHub Enterprise Cloud Docs企業版:索引代碼庫 RAG in Copilot Enterprise提出特定于代碼庫的問題在Copilot的協助下完成特定任務知識庫記錄項目細節分享FAQ培訓新成員提升代碼可維護性減少重復性的溝通PR摘要小結加速學習新編程語言和框架??焖偕蓽y試數據,提供學習樣本提高單元測試準確性,并與TDD/BDD集成。診斷和解決問題,節省搜索時間,提升問題解決效率。高效重構代碼。設計和編寫更安全的API和代碼。實現通用轉換,批量轉換是一大挑戰。擴展Copilot,與langchain等其他工具/框架集成,解決特定場景問題。構建企業內部知識
12、庫,減少溝通成本。局限性與挑戰04AI輔助編程的缺點幻覺依賴訓練數據隱私安全知識產權偏見訓練數據:訓練數據:數據表征差異導致建議不準確LLM 中的開源代碼質量參差不齊,導致建議不穩定受限于知識截止日期,無法體現新知識泛化差距,即模型在訓練數據與未見數據上的表現差異上下文理解,需要更細致的上下文環境總結與展望05總結與展望總結:AI輔助編程已經成為現實,它通過LLM技術,分析大量代碼數據,為開發者提供代碼建議和自動補全。GitHub Copilot,作為AI輔助編程的代表工具,已經在軟件開發周期的各個階段(需求、設計、編寫代碼、測試、部署、維護)展現出其強大的能力。展望:隨著AI技術的不斷進步,我們期待Copilot能夠提供更準確、更智能的代碼建議,減少開發者的認知負擔。未來Copilot可能會與更多的開發工具和平臺集成,提供更全面的開發支持。隨著用戶數據的積累,Copilot可能會提供更加個性化和定制化的編程輔助服務參考資料:https:/ Taulli.(2024).AI輔助編程實戰.人民郵電出版社.Kurt Dowswell.(2024).Programming with GitHub Copilot.Wiley.感謝聆聽關注公眾號軟件開發效率提升利器助力軟件開發全生命周期宣傳圖片新書發布