通義靈碼企業程式碼補全增強使用實踐

云效DevOps平台發表於2024-09-13

作者:任婷婷(汐遙)

通義靈碼提供了企業程式碼補全增強的能⼒,在開發者使⽤通義靈碼 IDE 外掛的⾏間程式碼補全時,可以結合企業上傳的程式碼庫作為上下⽂進⾏⾏間程式碼補全,使程式碼補全更加貼合企業程式碼規範、業務特點。本⽂將分享如何構建⾼質量的企業程式碼庫,以及開發者在前端和後端開發場景的使⽤實踐。

管理員如何準備高質量企業程式碼庫

為確保程式碼資料的有效處理,我們建議您遵循以下指導原則來準備程式碼庫。這將有助於提升檢索的效率與準確性。

準備指南

  1. 上傳限制僅適⽤於原始碼⽂件,程式碼庫中應僅上傳實際編寫的原始碼⽂件。例如,對於 Java 應上傳 .java ⽂件,對於 C# 應上傳 .cs ⽂件,對於 JavaScript 應上傳 .js 或 .jsx ⽂件等。

  2. 請避免上傳以下內容。

  • 測試資料與程式碼:請勿上傳測試指令碼、測試⽤例或任何不包含業務邏輯的測試相關程式碼。
  • Mock ⽅法:排除所有由模擬⽅法和⼯具⽣成的程式碼,除非這些程式碼包含對業務邏輯的具體實現。
  • 構建產物:
    • 前端:排除透過構建⼯具(如 Webpack、Gulp 等)⽣成的⽂件,這些⽂件通常位於 dist 或 build ⽬錄下。
    • 後端:排除編譯⽣成的 DLL ⽂件及其他所有編譯輸出。
  1. 註釋要求如下。
  • 對希望被檢索到的函式,在函式頭部應新增詳盡的註釋。
  • 註釋應提供充分的資訊以區分不同的函式,建議參考註釋模板或根據企業規範進⾏相應調整。
/**
* 更新指定訂單狀態。
*
* @param orderId 訂單的唯⼀識別符號。
* @param newStatus 新的訂單狀態。
* @return boolean 表示更新是否成功。
*/
  1. 函式名稱規範要求。
  • 如果函式註釋較為簡單,則函式名稱必須能夠準確描述其功能。
  • 使⽤清晰且具描述性的命名⽅式,例如:exportOrdersToPDF、updateOrderStatus ⽽不是 func1 。

上傳指南

  • 打包壓縮⽂件:將程式碼⽂件打包為 .zip、.gz 或 .tar.gz 格式。
  • 程式碼包⼤⼩限制:每個程式碼包的⼤⼩不得超過 100 MB。

開發者如何使用企業程式碼生成增強

外掛版本要求

僅適⽤於 VSCode 1.3.9 及以上版本,以及 JetBrains 1.3.10 及以上版本。

後端場景使用實踐

  1. 透過⾃然語⾔註釋⽣成程式碼。

步驟一:企業程式碼庫程式碼上傳

上傳包含所需功能程式碼的壓縮包⾄企業程式碼庫,例如雪花演算法的程式碼,並確保⽬標函式遵循註釋規範,註釋位於函式頭部。更詳細程式碼庫準備指南請參⻅上述管理員如何準備⾼質量程式碼庫。

/**
* 使⽤雪花演算法⽣成唯⼀序列號
* @param workerId
* @return
*/
public synchronized Long getSnowFlowerId(long workerId){
long id = -1L;
if (workerId < 0 || workerId > snowFlowerProperties.getMaxWorkerId()) {
throw new IllegalArgumentException(
String.valueOf("workerID must gte 0 and lte " + snowFlowerProperties.getMaxWorkerId()));
}
// ... 演算法實現程式碼 ...
ret

步驟二:輸入註釋

在整合開發環境(IDE)中定位到某 Java 類內,輸入與期望召回的函式相匹配的註釋。註釋格式可以靈活,但應確保含義的準確性和⼀致性。

第一種方式

//請透過雪花演算法⽣成唯⼀編號的程式碼,返回⽣成的id

第二種方式

/**
* 使⽤雪花演算法⽣成唯⼀序列號
* @param wId
* @return
*/

註釋說明:

  • 註釋⻓度要求:在編寫程式碼時,註釋應儘量避免過於簡短,建議⻓度⾄少 15 個字元,過短的註釋將無法觸發召回。
  • 註釋語義要求:確保註釋的語義準確且有意義,最好包含關鍵詞與返回值說明,以便通義靈碼準確地理解和匹配相應的程式碼。
  • 多語⾔⽀持:⽀持中英⽂註釋,程式碼庫中的註釋和實際編碼時的註釋可以使⽤不同的語⾔。
  • 引數名稱靈活性:引數名稱可以靈活處理,通義靈碼會根據提供的引數⾃動調整以匹配召回的程式碼。

步驟三:程式碼⽣成

⾸次回⻋後,靈碼將提供基於註釋⽣成補全建議;再次回⻋後,靈碼將根據企業程式碼庫中的程式碼進⾏補全。

說明:

  • 如果您的註釋中包含引數,靈碼將⾃動調整⽣成程式碼中的引數名,確保命名⼀致性。
  • 如果需要重新整理快取獲取新的補全建議,macOS 可以使⽤ ⌥(option) P ⼿動觸發⾏間補全,windows 可以使⽤ Alt P ⼿動觸發。
  1. 透過函式簽名⽣成程式碼。

步驟一:程式碼庫程式碼上傳

上傳包含所需功能程式碼的壓縮包⾄企業程式碼庫,並確保這些函式具有清晰且獨特的標識,以便於檢索和識別。更詳細程式碼庫準備指南請參⻅上述管理員如何準備⾼質量程式碼庫。

步驟二:輸入函式簽名

在整合開發環境(IDE)中定位到某 Java 類內,鍵入⽬標函式的簽名部分。引數名稱可以靈活處理,通義靈碼會根據提供的引數⾃動調整以匹配召回的程式碼。

public List<Object> nextList(String name, int size)

函式簽名說明:

  • 函式名稱:使⽤較為清晰的函式名稱,需要具備⼀定語義作為相似性依據。
  • 引數和返回值:型別和順序需要與⽬標函式保持⼀致,但引數名稱可以靈活處理,通義靈碼會根據提供的引數⾃動調整以匹配召回的程式碼。

步驟三:程式碼補全

⾸次回⻋後,靈碼將提供程式碼補全建議;再次回⻋後,靈碼將根據企業程式碼庫中的程式碼進⾏⾃動補全。

說明:

  • 靈碼將根據您提供的引數名,⾃動調整⽣成程式碼中的引數名,確保命名⼀致性。
  • 如果需要重新整理快取獲取新的補全建議,macOS 可以使⽤ ⌥(option) P ⼿動觸發⾏間補全,windows 可以使⽤ Alt P ⼿動觸發。

前端場景使用實踐

  1. 透過標籤補全前端⾃研元件程式碼。

步驟一:程式碼庫程式碼上傳

在開始之前,您需要確保所有必要的前端元件程式碼已經上傳到企業程式碼庫中。如下是 React 框架示例。

<LTable
isReady={isReady}
formInitialValues={formInitialValues}
rowKey="key"
tableRef={tableRef}
toolbarLeft={
<Button type="primary">新增</Button>
}
formItems={formItems}
formRef={formRef}
columns={columns}
request={async (params, requestType) => {
const res: Record<string, any> = await apiGetUserList(params);
return {
data: res.data,
total: res.total,
};
}}
/>

步驟二:編寫元件程式碼

在您的 IDE 中開啟相應的 .jsx ⽂件,並開始編寫程式碼。輸入基礎 HTML 標籤或⾃定義元件標籤,例如

步驟三:程式碼⾃動補全

當您輸入的程式碼達到⼀定⻓度,並且能夠與企業元件庫中的程式碼匹配時,IDE 將⾃動觸發程式碼補全功能,為您⽣成完整的元件程式碼。您也可以透過回⻋,主動觸發程式碼補全。

重要: 請在完整的元件標籤內觸發您的補全。

  1. 透過⾃然語⾔註釋⽣成程式碼。

步驟一:程式碼庫程式碼上傳

上傳包含所需功能程式碼的壓縮包⾄企業程式碼庫,並確保每個函式都遵循註釋規範,註釋位於函式頭部。更詳細程式碼庫準備指南⻅管理員如何準備⾼質量企業程式碼庫章節。如下是 JavaScript 示例。

/**
* 根據報錯資訊⽣成,以id為鍵值的物件
* @param {Array<validator,Result>} results
* @return {Record<string,string>}
*/
function getErrObj(results) {
// ... 函式實現程式碼 ...
}

步驟二:輸入註釋在 IDE 中,在 JavaScript ⽂件內輸入特定的註釋內容,如下示例。

//根據報錯資訊⽣成以 id 為鍵值的物件

註釋說明:

  • 註釋⻓度要求:在編寫程式碼時,註釋應儘量避免過於簡短,建議⻓度⾄少 15 個字元,過短的註釋將無法觸發召回。
  • 註釋語義要求:確保註釋的語義準確且有意義,最好包含關鍵詞與返回值說明,以便通義靈碼準確地理解和匹配相應的程式碼。
  • 多語⾔⽀持:⽀持中英⽂註釋,程式碼庫中的註釋和實際編碼時的註釋可以使⽤不同的語⾔。
  • 引數名稱靈活性:引數名稱可以靈活處理,通義靈碼會根據提供的引數⾃動調整以匹配召回的程式碼。

步驟三:程式碼⽣成

⾸次回⻋後,靈碼將提供基於註釋⽣成補全建議;再次回⻋後,靈碼將根據企業程式碼庫中的程式碼進⾏補全。

說明:

  • 如果您的註釋中包含引數,靈碼將⾃動調整⽣成程式碼中的引數名,確保命名⼀致性。
  • 如果需要重新整理快取獲取新的補全建議,macOS 可以使⽤ ⌥(option) P ⼿動觸發⾏間補全,windows 可以使⽤ Alt P ⼿動觸發。

常見問題:在重新安裝外掛後,即便重啟 IDE 或重新登入,仍無法成功召回知識庫中的程式碼

解決⽅案:

  • 在 macOS 系統中,請執⾏以下命令以重啟程序並清除快取。
ps -ef|grep lingma|grep start|awk '{print $2}'|xargs -I {} kill -9 {}
  • 如果是 Windows 系統,請在程序管理器中結束 Lingma 程序。

推薦閱讀:《5 大場景上手通義靈碼企業知識庫 RAG》

點選此處,立即體驗通義靈碼企業程式碼生成增強。

相關文章