• <xmp id="y4ogs"><nav id="y4ogs"></nav>
    <nav id="y4ogs"></nav>
    <nav id="y4ogs"><code id="y4ogs"></code></nav><dd id="y4ogs"></dd>
  • <xmp id="y4ogs"><nav id="y4ogs"></nav>
    《電子技術應用》
    您所在的位置:首頁 > 其他 > 設計應用 > 基于改進WL圖核的代碼克隆檢測方法
    基于改進WL圖核的代碼克隆檢測方法
    網絡安全與數據治理 3期
    班必奐1,2,徐 云2,3
    (1.中國科學技術大學 大數據學院,安徽 合肥230026; 2.安徽省高性能計算重點實驗室,安徽 合肥230026; 3.中國科學技術大學 計算機科學與技術學院,安徽 合肥230026)
    摘要: 基于程序依賴圖(Program Dependency Graph,PDG)的代碼克隆檢測方法是檢測代碼克隆的重要方法之一,近年來提出的基于Weisfeiler-Lehman(WL)圖核迭代的近似圖匹配方法在克隆檢測中取得了較好的效果,但PDG中少量頂點的差異會隨著圖核迭代傳播到越來越多的頂點,從而導致算法召回率的下降。為此,針對WL圖核在克隆檢測應用中存在的問題,提出了一種基于改進WL圖核的代碼克隆檢測方法,將WL圖核迭代過程中采用的普通哈希算法替換為局部敏感哈希,同時引入向量的相似性度量方法,進一步提升了對PDG近似子結構的識別能力。實驗結果表明,改進后的方法不僅可以檢測出更多的差異克隆對,同時還保持了良好的精度和時間性能。
    中圖分類號: TP311.5
    文獻標識碼: A
    DOI: 10.20044/j.csdg.2097-1788.2022.03.010
    引用格式: 班必奐,徐云. 基于改進WL圖核的代碼克隆檢測方法[J].網絡安全與數據治理,2022,41(3):60-66.
    An improved WL graph kernel-based code clone detection method
    Ban Bihuan1,2,Xu Yun2,3
    (1.School of Data Science,University of Science and Technology of China,Hefei 230026,China; 2.Key Laboratory of High Performance Computing of Anhui Province,Hefei 230026,China; 3.School of Computer Science and Technology,University of Science and Technology of China,Hefei 230026,China)
    Abstract: Code clone detection based on Program Dependency Graph(PDG) is one of the important methods in code clone detection domain. In recent years, a code clone detector that based on Weisfeiler-Lehman(WL) graph kernel has achieved success in detecting code clones. However, several different vertices in the PDG will ″spread″ to the whole PDG with iterations and finally results in a decline in recall rate. Therefore, an improved WL kernel-based clone detector is proposed to address the problem of the WL kernel when applied in clone detections. The ordinary hash algorithm used in the iterations of WL kernel is replaced with the local sensitive hash algorithm, and the vector similarity measure approach is employed, which enhances the ability to identify the similar PDG sub-structures. The experimental results show that compared to the original WL graph kernel-based detector, the improved method can not only detect more clones but also keep good accuracy and a low computing time.
    Key words : code clone detection;program dependency graph;Weisfeiler-Lehman kernel

    0 引言

    在實際的軟件系統開發過程中,開發人員出于提高開發效率或者降低軟件錯誤風險的原因,通常會將其他模塊中功能相同或者相近的代碼片段通過復制—修改(或不修改)—粘貼的模式引入到當前正在開發的模塊中,這些粘貼而來的功能相同或相似的代碼片段在學術界通常被稱為克隆代碼[1]。大量的研究表明,過多的克隆代碼會給軟件系統帶來維護成本提高[2]和Bug蔓延[3]等問題。例如,假設某一段代碼中存在Bug并且這段代碼被復制粘貼在不同的位置,那么這個Bug將會隨著這些克隆代碼在整個軟件中傳播,進而增加了維護的難度。因此,檢測出軟件系統中的克隆代碼并對其進行統一管理是非常有必要的。

    隨著代碼克隆檢測技術的不斷發展,高級別代碼克隆(即Type-3和Type-4克隆)的檢測成為當前的研究熱點之一。由于高級別克隆代碼往往在復制粘貼之后還進行了一些修改,因此也更有可能存在Bug[4]。另外,修改所導致的差異性也使得這一類型的克隆更加難以被檢測。

    得益于程序依賴圖(Program Dependency Graph,PDG)中所包含的大量語法結構信息和語義信息,基于PDG的克隆檢測方法在檢測高級別克隆上更具優勢,能夠檢測出更多的結構相似但文本差異較大的高級別克隆代碼。但在已有的方法中,采用精確圖匹配算法的CCSharp[5]、GPLAG[6]等克隆檢測方法存在時間性能差和召回率低的缺點,而采用Weisfeiler-Lehman(WL)圖核進行近似圖匹配計算的CCGraph[7],受限于節點初始標簽的單一性和WL圖核迭代過程中對近似子結構識別能力的缺失,召回率也相對較低。為此,本文針對WL圖核算法在PDG克隆檢測應用中存在的缺陷,提出了一種改進思路:首先利用語法分析技術將PDG節點所包含的源代碼信息解析為特征向量的形式來作為該節點的初始標簽,使其能夠保留更多的語義信息;然后通過引入局部敏感哈希技術提升PDG中近似子結構的識別能力,進而提升高級別克隆的召回率。





    本文詳細內容請下載http://www.infiniterotclothing.com/resource/share/2000004907





    作者信息:

    班必奐1,2,徐  云2,3

    (1.中國科學技術大學 大數據學院,安徽 合肥230026;

    2.安徽省高性能計算重點實驗室,安徽 合肥230026;

    3.中國科學技術大學 計算機科學與技術學院,安徽 合肥230026)


    微信圖片_20210517164139.jpg

    此內容為AET網站原創,未經授權禁止轉載。
    日本一级婬片免费看
  • <xmp id="y4ogs"><nav id="y4ogs"></nav>
    <nav id="y4ogs"></nav>
    <nav id="y4ogs"><code id="y4ogs"></code></nav><dd id="y4ogs"></dd>
  • <xmp id="y4ogs"><nav id="y4ogs"></nav>