去年年初,我們開源 AutoDev 的初衷是:
AutoDev 是一款基于 JetBrains IDE 的開源 AI 輔助編程插件。AutoDev 能夠與您的需求管理系統(tǒng)(例如 Jira、Trello、Github Issue 等)直接對接。在 IDE 中,您只需簡單點(diǎn)擊,AutoDev 會根據(jù)您的需求自動為您生成代碼。您所需做的,僅僅是對生成的代碼進(jìn)行質(zhì)量檢查。
而今我們在朝這一目標(biāo)的努力又更進(jìn)一步了:一鍵生成精準(zhǔn)的單元測試。在這篇文章中,我們將介紹從 1.4 版本(適用于團(tuán)隊的 Team AI)到 1.5.3 版本的一些特性:
精準(zhǔn)的自動化測試生成。增強(qiáng)了靜態(tài)代碼分析能力,使得生成的構(gòu)造函數(shù)更加準(zhǔn)確;優(yōu)化針對于 Spring 項(xiàng)目區(qū)分如何測試 Controller、Service 的 prompt;提供不同類型的測試模板能力。
本地模型強(qiáng)化。提供了適合于 AutoDev 的 AutoDev Coder 數(shù)據(jù)集與模型;支持本地的數(shù)據(jù)記錄功能,方便于進(jìn)行數(shù)據(jù)蒸餾;支持部分的系統(tǒng) prompt 覆蓋,即你可以更好的使用自己的模型。
多語言注釋文檔。新增 JavaScript、Rust、 Python 語言的支持,并且優(yōu)化了 Kotlin 的文檔生成邏輯。
自動流程優(yōu)化。添加了 PrePush Review,即在 commit 之前,你可以使用 AI 來 review;大大簡化提交信息生成的上下文,區(qū)分文件變更、依賴變更等場景,使生成的 token 更少。
歡迎來加入我們:https://github.com/unit-mesh/auto-dev/,構(gòu)建自己的 AI 輔助全流程編碼助手。
在開發(fā)的過程中,我們選取了 ArchGuard 作為 AutoDev 全流程 AI 輔助的試點(diǎn),ArchGuard 是一個使用 Kotlin 編寫的開源架構(gòu)治理平臺。在過程中持續(xù)積累數(shù)據(jù)和經(jīng)驗(yàn),以更好地支撐 Kotlin 語言的使用體驗(yàn)。
精準(zhǔn)測試生成
結(jié)合在 ArchGuard 項(xiàng)目中生成了 90 個測試類 200+ 測試的用例經(jīng)驗(yàn),我們持續(xù)優(yōu)化了的測試生成邏輯(估計還有一些 bug)。
因此,在 AutoDev 中有概率直接生成直接可用的單元測試。
精準(zhǔn)上下文
在當(dāng)前的版本里,測試的上下文除了會包含相關(guān)的類信息,還有完整的輸入和輸出類信息。即通過靜態(tài)代碼分析,獲取 Service 相關(guān)的信息,也會獲取每個函數(shù)的輸入和輸出等等信息。當(dāng)一個被測試類是一個 Spring 相關(guān)的類,會判斷是否是 Controller 和 Service,再給定一些測試規(guī)則。
代碼實(shí)現(xiàn)參考?JavaTestContextProvider
、?KotlinTestContextProvider
?的實(shí)現(xiàn)。
單元測試模板:團(tuán)隊 AI
在 ArchGuard 中,由于不可知的歷史原因,需要編寫一些特殊的注解 —— 而模型并非每次都能生成想要的??紤]到,這樣的情況也會出現(xiàn)在大部分的項(xiàng)目中。因此,針對于 Controller 和 Service 與其它測試,你可以自定義單元測試的模板。
每個項(xiàng)目的測試邏輯是不一樣的,加上我們推薦采用 prompt 即代碼的方式來管理,你更可以將它分享給你的團(tuán)隊。
相關(guān)文檔:https://ide.unitmesh.cc/customize/custom-test-template.html 。
API 測試數(shù)據(jù)精準(zhǔn)生成
相似的,在使用 AutoDev 的 API 測試數(shù)據(jù)生成功能時,我們也結(jié)合靜態(tài)代碼分析優(yōu)化了對應(yīng)的上下文能力,可以直接生成可用的測試數(shù)據(jù)。
詳細(xì)見:?JavaTestDataBuilder
?和?KotlinTestDataBuilder
?相關(guān)實(shí)現(xiàn)。
2. 針對本地模型優(yōu)化
現(xiàn)在,只需要通過打開 AutoDev 配置頁的?AutoDev?Coder
?,你可以針對私有化的模型做更多的配置。
公開模型數(shù)據(jù)的蒸餾
為了更好的測試公開的大語言模型,以及進(jìn)行內(nèi)部模型與工具的適配。我們在新版本中添加了?Recording?Instruction?In?Local
?的功能,即您可以記錄與 AI 交互的數(shù)據(jù),并以此作為內(nèi)部模型微調(diào)與評估的樣本。
同時,還方便于進(jìn)行對應(yīng)的 AutoDev Debug。
插件 prompt 覆蓋
通過配置頁,同樣可以配置諸如?Explain?code
、?Refactor?code
、?Fix?issue
、?Generate?test
四個基本的 AutoDev Chat 相關(guān)的 prompt。
在進(jìn)一步優(yōu)化和構(gòu)建內(nèi)部的上下文之后,也將使用模板的方式釋放出更多上下文接口。
3. 多語言文檔
在文檔上,現(xiàn)在可以支持 Python、 Rust、 JavaScript 語言的注釋文檔生成。同時,由于 OpenAI 經(jīng)常為 Kotlin 類生成無用的函數(shù)注釋,我們也針對這個功能進(jìn)行了優(yōu)化,只選取類前的注釋代碼。
4. 自動流程優(yōu)化
自動化是 AutoDev 追求的主要特性,我們也在今年針對于日常開發(fā)流程初了更多的設(shè)計。在這個版本里,主要提供兩個新特性。
PrePush 檢視
即在代碼提交前,你可以讓 AI 來輔助你進(jìn)行一些初步的 review,以避免出現(xiàn)一些不必要的錯誤。
更流暢的提交信息生成
在 ArchGuard 項(xiàng)目中使用 AutoDev 重構(gòu)時,我們生成了 167 次的提交信息,占所有功能的 1/3 。也因此,我們花了更多的時間在生成更好的提交信息上 —— 如何更好地控制 token。
其它
未來我們還將關(guān)注于:
流程自動化的強(qiáng)化。即支持更好的向前和向后流程接入,加速開發(fā)人員的編碼速度。
交互體驗(yàn)優(yōu)化。我們已經(jīng)在代碼庫中引入了更好的加載和出錯顯示,未來也將持續(xù)豐富,畢竟沒有 UX,交互上都是靠抄。
測試覆蓋率的提升。在過去的一段時間里,由于 UI 測試速度緩慢,并且在 IDE 架構(gòu)復(fù)雜,AutoDev 的測試覆蓋率是相對較低。而在靜態(tài)分析相關(guān)的場景,則需要進(jìn)行充分的測試,所以我們在為 AutoDev 添加更多的單元測試,以使得它更加穩(wěn)定。文章來源:http://www.zghlxwxcb.cn/news/detail-792974.html
如果你也有興趣,歡迎來挖坑:https://github.com/unit-mesh/auto-dev/ 。文章來源地址http://www.zghlxwxcb.cn/news/detail-792974.html
到了這里,關(guān)于AutoDev 1.5.3:精準(zhǔn)的自動化測試生成、本地模型強(qiáng)化與流程自動化優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!