[發明專利]一種代碼段注釋生成方法、系統及可讀存儲介質有效
| 申請號: | 202110368963.7 | 申請日: | 2021-04-06 | 
| 公開(公告)號: | CN113065322B | 公開(公告)日: | 2022-02-08 | 
| 發明(設計)人: | 黃袁;黃少豪;陳湘萍;周曉聰;鄭子彬 | 申請(專利權)人: | 中山大學 | 
| 主分類號: | G06F40/169 | 分類號: | G06F40/169;G06F8/41;G06F8/73;G06N3/04;G06N3/08 | 
| 代理公司: | 北京集佳知識產權代理有限公司 11227 | 代理人: | 楊小紅 | 
| 地址: | 510275 *** | 國省代碼: | 廣東;44 | 
| 權利要求書: | 查看更多 | 說明書: | 查看更多 | 
| 摘要: | |||
| 搜索關鍵詞: | 一種 代碼 注釋 生成 方法 系統 可讀 存儲 介質 | ||
本申請一種代碼段注釋生成方法、系統及可讀存儲介質,獲取代碼段的文本內容和抽象語法樹,在抽象語法樹中確定待注釋代碼段的外部依賴對應的子樹,并將外部依賴對應的子樹加入待注釋代碼段的子樹集合,以子樹集合中各子樹的父節點作為連接點,形成擴展抽象語法樹,基于代碼文本內容和擴展抽象語法樹,生成待注釋代碼段對應的注釋。擴展抽象語法樹的構建使得代碼段的外部依賴也參與了注釋生成的過程,將代碼段的外部依賴也考慮在內可以為模型提供更多的有效信息,生成的代碼注釋質量更高。
技術領域
本發明屬于代碼注釋分析工具,具體涉及一種代碼段注釋生成方法系統及可讀存儲介質。
背景技術
代碼注釋是用自然語言的形式闡述代碼背后實現的邏輯或功能,能夠幫助開發者閱讀與理解代碼,提升項目的維護與迭代效率,隨著機器學習和深度學習的應用,對代碼注釋進行自動生成是未來的發展趨勢。
代碼注釋可以分為類注釋、函數注釋和代碼段注釋。類注釋用于說明類的定位和作用,函數注釋一般用于描述全局的函數功能,幫助開發者從全局功能角度理解代碼;而代碼段注釋一般用于描述局部代碼塊的功能和實現邏輯,幫助開發者從細節層面理解代碼功能如何實現。目前已有的代碼注釋自動生成方法主要著眼于函數注釋的生成,少量關于代碼段注釋自動生成的研究工作也僅僅是直接套用函數注釋生成方法,并沒有針對代碼段的特性進行設計。
代碼段中常常含有外部依賴,當外部依賴也參與了注釋所描述的局部實現邏輯與功能時,例如一段代碼由若干個語句組成,并存在一些變量是在代碼段范圍以外定義的,而該段代碼的注釋包含了這些變量的信息,這時代碼本身可能無法獨立支撐起對應注釋的功能描述,從而導致代碼段與注釋不能對應,生成的代碼注釋質量不高。
發明內容
基于此,本發明旨在提供一種代碼段注釋生成方法、系統及可讀存儲介質,以克服現有技術的代碼注釋生成方法沒有考慮到代碼段的外部依賴導致代碼注釋質量不高的問題。
第一方面,本發明提供一種代碼段注釋生成方法,包括:
獲取待注釋代碼段的代碼文本內容和抽象語法樹;
在抽象語法樹中確定待注釋代碼段的外部依賴對應的子樹,并將外部依賴對應的子樹加入待注釋代碼段的子樹集合;
以子樹集合中各子樹的父節點作為連接點,形成擴展抽象語法樹;
基于代碼文本內容和擴展抽象語法樹,生成待注釋代碼段對應的注釋。
優選地,在抽象語法樹中確定待注釋代碼段的外部依賴對應的子樹包括:
在抽象語法樹中確定待注釋代碼段所包含的所有變量名及變量名的作用范圍,在抽象語法樹中定位變量名在作用范圍內出現的所有位置,根據變量名出現的位置確定若干個子樹。
優選地,基于代碼文本內容和擴展抽象語法樹,生成待注釋代碼段對應的注釋包括:
將代碼文本內容和擴展抽象語法樹均處理成序列輸入至訓練后的注釋生成模型,生成待注釋代碼段對應的注釋。
優選地,注釋生成模型的訓練包括:
將訓練數據輸入Actor-Critic神經網絡,Actor網絡輸出注釋序列,Critic網絡輸出各個階段的BLEU期望值,訓練數據包括代碼段的代碼文本序列、擴展抽象語法樹序列及參考注釋;
計算注釋序列與參考注釋的BLEU實際值,將BLEU實際值與Critic網絡輸出的各個階段BLEU期望值進行比較,根據比較結果調整Actor網絡和Critic網絡的參數對Actor-Critic神經網絡進行更新。
優選地,將訓練數據輸入Actor-Critic神經網絡,Actor網絡輸出注釋序列,Critic網絡輸出各個階段的BLEU期望值包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中山大學,未經中山大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110368963.7/2.html,轉載請聲明來源鉆瓜專利網。





