[發明專利]一種自動檢測注釋和代碼一致性的方法及其系統有效
| 申請號: | 201711456698.8 | 申請日: | 2017-12-28 |
| 公開(公告)號: | CN108170468B | 公開(公告)日: | 2021-04-20 |
| 發明(設計)人: | 劉志勇;陳湘萍;林格 | 申請(專利權)人: | 中山大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75;G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 510006 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 自動檢測 注釋 代碼 一致性 方法 及其 系統 | ||
本發明實施例公開了一種自動檢測注釋和代碼一致性的方法及其系統,所述方法包括:提取海量代碼,進行分塊處理,并對變化前后的代碼塊一一對應,獲得代碼數據集;獲取代碼數據集,進行特征提取處理,獲得代碼數據集中的代碼文本特征、代碼片段的變化特征、注釋特征、注釋與代碼關聯特征的特征向量集;對所述特征向量集進行分類處理,獲得的分類結果即為注釋和代碼的檢測結果。在實施本發明實施例中,通過對注釋和代碼片段的文本信息進行交叉融合,計算注釋和代碼的語義相似度;使用啟發式規則,對代碼進行分塊,以更小的粒度檢測注釋和代碼的一致性,能夠使檢測結果具有更高的準確率和更精確的檢測范圍,更便捷、且適用性極高。
技術領域
本發明涉及程序理解、代碼分析、機器學習技術領域,尤其涉及一種自動檢測注釋和代碼一致性的方法及其系統。
背景技術
近年來,隨著軟件產業的發展,軟件的規模和復雜性在不斷提高,軟件的生命周期也越來越長。在軟件生命周期中,軟件維護的工作量占據了整個生命周期的70%以上。如何減少軟件維護的工作量,降低軟件維護成本,提高軟件的可維護性就成了提高軟件生產效率和軟件質量的關鍵,而在軟件維護的過程中,軟件維護人員主要依賴源代碼及其相關代碼注釋以理解軟件的設計及實現,從而對軟件進行維護。其中,代碼注釋包括軟件API文檔、源代碼中的注釋信息、版本庫中的提交注釋信息等,這些代碼注釋在軟件維護和程序理解中扮演了重要的角色,有研究表明,質量良好的代碼注釋可以顯著提高開發和維護人員對程序理解的效率。因此,提高代碼注釋的質量將有效提高軟件的可維護性,進而提高軟件的質量。
代碼注釋的質量對軟件的可維護性具有顯著影響,一段與程序行為不符的注釋將誤導開發和維護人員,并對程序進行錯誤的理解和使用。而一段無意義的注釋或者注釋掉代碼行的注釋則會影響開發和維護人員的閱讀,其非但沒有提供有用的信息,反而增加了額外的閱讀工作。對代碼注釋進行檢查,過濾掉那些“壞”注釋,可以有效的提高源代碼的質量。傳統的代碼注釋檢查主要關注注釋的長度和注釋中是否包含代碼兩方面,這可以在一定程度上檢查出質量低的注釋,其問題在于沒有檢查出那些與程序行為不符的注釋,而這種注釋往往對軟件的可維護性造成很大影響。
常見的注釋和代碼的一致性檢測方法,主要分為以下三類:測試驅動的檢測、基于自然語言處理的檢測以及基于機器學習的檢測。測試驅動的檢測比較局限,只能檢測特定類型和格式的注釋和代碼的一致性。基于自然語言處理的檢測不能很好的處理自然語言和編程語言之間語義鴻溝的問題。基于機器學習的檢測可以處理不同類型和不同格式的注釋和代碼,但其比較依賴于模型的特征選擇。
測試驅動的檢測方法通過分析注釋和代碼的結構,然后根據這些結構特征動態生成測試用例并運行,將通過測試的注釋和代碼認為是一致的,未通過測試的注釋和代碼認為是不一致的。其中,利用一個名為@tComment的工具進行檢測Javadoc類型的注釋與代碼的一致性。其使用Randoop工具,根據方法的參數和返回值以及注釋中的@return和@Exception標簽動態生成測試用例,檢測該方法是否滿足注釋中的@return和@Exception標簽所描述的約束條件。如果滿足,則認為注釋和代碼是一致的。反之則為不一致。
基于自然語言處理的方法是通過自然語言處理的技術,首先對注釋和代碼做預處理,然后從中提取用于驗證注釋和代碼一致性的規則,最后通過這些規則來驗證注釋和代碼的一致性。如一種面向對象程序的注釋質量評價和注釋建議方法,該方法首先從類和方法中提取類和方法的信息以及與之相關聯的注釋信息,然后根據制定的分析規則對不滿足規則的注釋給出相應的建議。另外還有利用一個名為iComment的工具檢測特定主題的注釋和代碼的一致性。該工具首先通過自然語言處理的技術,從注釋中提取與代碼編寫者的意圖或需求相關的規則,然后驗證代碼是否滿足這些規則,滿足則認為是一致的,不滿足則認為注釋是“壞注釋”或者“bug”。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中山大學,未經中山大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711456698.8/2.html,轉載請聲明來源鉆瓜專利網。





