目錄
1.前言
2.下載安裝
3.解釋代碼
4.生成單元測試
5.生成注釋
6.智能補全
1.前言
大模型到底該以一種什么方式落地,從而嵌入我們的工作當中,助力我們工作效率的提升,其實最好的方式也許就是虛擬助手的方式,就像鋼鐵俠的"賈維斯"一樣,隨叫隨到能回答問題,能自動的解決一些問題。
阿里開源出了自己的編程大模型“通義靈碼”之后,我們可以通過IDEA插件的方式輕松打造一個自己的編程“賈維斯”。
2.下載安裝
直接去插件市場里面搜索TONGYI Lingma就可以搜索出對應插件:
安裝好之后需要我們用自己的阿里云賬號來登錄,點擊登錄會轉跳登陸界面,用支付寶或者淘寶掃碼即可:
登錄完成后IDEA的面板會變成這樣:
這樣我們就有了自己的編程“賈維斯”。
它具體能做什么?已經寫的很清楚了:
接下來我們就來感受一下這些功能。
3.解釋代碼
解釋代碼,這功能就太好用了。我說幾種情況,大家要是中招的,可以把"真實"二字打在評論區里。
情況一:
祖傳代碼我相信大家目前所在的團隊都會是有的,目前博主所在的團隊手里就有大量的祖傳代碼,其中一個后端的controller類有接近一萬行代碼。這些沉重的“歷史包袱”往往是阻礙我們開發的罪魁禍首。真不是寫不出來,而是讀不懂。
情況二:
作為后端的我們對前端代碼其實沒有那么熟悉,但有些時候我們是需要去碰一下前端代碼做一些小修小改的。這種時候代碼讀起來真的是連蒙帶猜。
情況三:
一些開源組件或框架的底層源碼其實寫的不一定就是很規范的,源碼簡直就是一片汪洋大海,很容易在里面迷路。
真實吧?ok,那找個幫手來幫我們一下就行了,交給通義靈碼給我們翻譯成人話就行了。
選中要翻譯的代碼,解釋代碼即可。
可以看到解釋的非常準確:
當然你要是覺得它解釋的不夠清楚,還可以點擊更詳細,讓它解釋的更詳細一點:
4.生成單元測試
但凡是對質量有一定要求的團隊,在實際的生產中,單元測試是必然逃不過的一環,并且還會要求很高的覆蓋率。關于單元測試博主前面有專門的文章講解,有需要的話可以移步:
關于單元測試,是既重要又繁瑣,它需要自己去手動寫代碼來構建測試用例,但既然是手動的活兒就有幾率寫的不好,覆蓋不全面的情況發生。交給通義靈碼,它可以自動幫我們生成單元測試。
選中我們想要生成單元測試的方法:
通義靈碼會自動生成單元測試:
可以看到它生成的是junit的單元測試,同時它也提供了讓我們選擇其它諸如mockito之類的測試框架。
注意頭上右上角的選項哈,它是可以自動幫我們生成類文件的:
來看一下它生成的單元測試對不對:
可以看到是很正確的,該用mock的方式注入JDBC,它是注入了的,改聲明主啟動類從而給出一個IOC環境,它也是正確聲明了的。
package com.eryi.service; ? import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.junit.jupiter.SpringExtension; ? import static org.mockito.Mockito.*; import static org.junit.jupiter.api.Assertions.*; ? @ExtendWith(MockitoExtension.class) @ExtendWith(SpringExtension.class) public class UserServiceTest { ?@Mockprivate JdbcTemplate jdbcTemplate; ?@InjectMocksprivate UserService userService; ?@BeforeEachpublic void setUp() {// 初始化測試環境} ?@Testpublic void testTransfer() {// 設置預期行為when(jdbcTemplate.update(anyString(), anyVararg())).thenReturn(1); ?// 調用待測試的方法userService.transfer(); ?// 驗證方法調用verify(jdbcTemplate, times(1)).update("update user set balance = balance - ? where id = ?", 100, 1);verify(jdbcTemplate, times(1)).update("update user set balance = balance + ? where id = ?", 100, 2); ?// 驗證事務是否回滾try {userService.transfer();fail("Expected an exception to be thrown");} catch (RuntimeException e) {// 異常應該被拋出}} }
5.生成注釋
6.智能補全
寫代碼寫一半補全另一半已經很強了是吧?
通義靈碼還能通過注釋直接生成代碼,寫完注釋后回車,然后會智能提示出可補全的內容,按tab鍵可以采納智能補全。