作者 | airmelt
活動推薦: #生成式 AI 先鋒開發者集結令 #
免費體驗編程神器,豐厚大獎等你來拿!https://jinshuju.net/f/rVuKYa
隨著 Github Copilot 在程式設計師中流行,越來越多的開源項目和大型公司也在代碼生成這一領域發力。最近亞馬遜就宣布了自家基於亞馬遜雲科技的代碼生成項目 CodeWhisperer 開放測試,由於還在測試階段,大家可以在各種 IDE 上免費體驗,享受 AI 帶來的效率提升。
安裝
安裝 CodeWhisperer 非常簡單,只需要在插件市場搜索 AWS Tookit 即可。以 VS Code 為例:
安裝完成之後側邊欄就會出現一個 AWS 的圖標,點擊最下面的 DEVELOPER TOOLS 登陸,登陸完成之後點擊 CodeWhisperer,選擇開始就可以體驗了。
代碼補全體驗
獲取當前時間
首先我們嘗試一個非常簡單的例子,用 Python 獲取當前時間:
# get current time
import time
def get_current_time():
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
複製代碼
實際上我們輸入第一行的注釋,代碼助手就會提示我們輸入import time,然後我們可以輸入函數的定義def,剩下的都可以自動補充完整:
網頁代碼修改
首先我們搭了一個簡單的網頁,網頁上面有兩個正方形,分別是橘色和紅色的,裡面還有一些文字,像是 Test 和 Hello World:
.test {
width: 100px;
height: 100px;
background-color: orange;
}
.hello {
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
複製代碼
現在,我們需要給 Test 這個正方形加上陰影,將*Hello World!*這個較長的字符串省略並在後面加上省略號。嘗試給出注釋:
這次它生成代碼的時間比較長,不過還好最後還是順利的生成了我們想要的格式:
算法應用
首先我們嘗試一下經典的快速排序算法,它很順利的生成出來了:
基本上是滿足了快速排序算法的要求。
接著我們挑戰一個難一點的,在字符串中找到最長的迴文子串。這個問題可以用中心擴展法在O(n ^ 2)的時間複雜度完成,最優的算法是使用馬拉車算法(Manacher's Algorithm),其時間複雜度僅為O(n):
它也很快得到了,不過實踐是檢驗真理的唯一標準,我們來看看它能不能通過 LeetCode:
一次通過!代碼補全還是很強大的,我自己寫的時候在循環的部分很容易就寫錯了。
單元測試
在日常工作時,我們需要編寫單元測試可以在一定程度上保證我們對代碼的修改的把握。我們可以對上面的馬拉車算法進行單元測試的編寫:
在Python中我們一般用斷言可以完成一些簡單的單元測試,這裡它給出了一些測試用例。不過我覺得還不夠完善,因為s有可能為空或者None,它並沒有測試到這些用例。
安全掃描
安全掃描(Security Scan) 是 Amazon CodeWhisperer 推出的一項嶄新的功能。在測試階段,我們每個月可以使用 50 次掃描。首先我們可以嘗試一下官網的例子:
直接報錯了。從提示來看,應該是因為在一個大的文件夾進行了安全掃描。所以新建一個文件夾再嘗試:
這次順利地得到了結果。不過其實這裡面應該有兩個安全問題,它只能檢測到第一個。這是刪除之後的掃描結果這時它才能檢測到下一個安全問題:
這個功能確實能夠檢測出一定的安全問題,嘗試使用 Copilot Chat,它只能傻乎乎的回覆一些車軲轆話:
結語
總的來說,CodeWhisperer 還是有不少亮點。在代碼生成方面幾乎不遜色於 Copilot,生成的速度可能稍微慢點,質量還是比較優秀。安全檢查是這次最與眾不同的地方,需要注意的是掃描的文件長度應該有限制,但是官網中沒有提到,稍顯不足,但是整個功能還是非常有自己的特色的。除了這些,CodeWhisperer 比起 Copilot 還有一個不足是,沒有一個理解代碼,解釋代碼的工具。期待後續的功能更新和疊代。
版權聲明: 本文源自微信公眾號【air 的代碼小屋】未經授權禁止轉載,文章轉載請聯繫作者。