[發明專利]一種基于邊不穩定性的軟件函數變更預測系統及方法有效
| 申請號: | 201611122380.1 | 申請日: | 2016-12-08 |
| 公開(公告)號: | CN106775695B | 公開(公告)日: | 2020-11-10 |
| 發明(設計)人: | 王雷;王新晨;李涵 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F8/71 | 分類號: | G06F8/71;G06F8/73 |
| 代理公司: | 北京科迪生專利代理有限責任公司 11251 | 代理人: | 楊學明;顧煒 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 不穩定性 軟件 函數 變更 預測 系統 方法 | ||
1.一種基于邊不穩定度的軟件函數變更預測系統,其特征在于包括:函數調用關系圖生成模塊、變更函數調用關系圖獲取模塊和邊的不穩定度生成及函數變更預測模塊,其中:
函數調用關系圖生成模塊:根據需要處理相應的軟件網絡,生成相應軟件網絡的函數調用關系圖;
變更函數調用關系圖獲取模塊:對相鄰版本的函數源碼比較,得到變更函數,在已生成的函數調用關系圖中,去掉沒有變更的函數,得到每個相鄰版本源代碼的變更函數調用關系圖;
邊的不穩定度生成及函數變更預測模塊:根據已生成的變更函數調用關系圖,得到每條邊的邊的不穩定度,對所有邊按照邊的不穩定度進行排序,根據輸入的閾值,去掉不穩定度低于閾值的邊,剩下的邊所連接的函數節點作為預測結果進行輸出;
所述邊的不穩定度生成及函數變更預測模塊實現過程如下:
(1)逐行錄入變更函數調用關系圖,每行分為調用函數(call function)和被調用函數(called function),每行錄入的時候,調用函數的出度加1,被調用函數入度加1;
(2)變更函數調用關系圖錄入完畢之后,根據公式:
計算出函數節點的不穩定度Si,是該節點的入度,是該節點的出度;
然后,根據公式Iij=Si-Sj計算出各條邊的不穩定度;Iij是邊的不穩定度,Si是調用函數節點的穩定度,Sj是被調用函數節點的穩定度;
(3)采用的是快速排序算法,對所有邊按照邊的不穩定度由高到低排序;
(4)輸入閾值,所述閾值在(-1,1)之間,去掉邊的不穩定度低于所述閾值的邊,剩下的邊所連接的函數節點作為預測結果進行輸出。
2.根據權利要求1所述的基于邊不穩定度的軟件函數變更預測系統,其特征在于:所述函數調用關系圖生成模塊實現過程如下:
(1)選擇需要處理相應的軟件網絡,包括操作系統軟件源代碼,然后調用外部工具cdepn,對于所有.c文件,生成相應的cdepn文件;
(2)對于生成的.cdepn文件,逐行讀取文件,當每一行第一個字符為F時,表示該行函數為call函數,之后的所有開頭第一個字符為C的行的直到文件尾或者下一個開頭第一個字符為F的行為止,包含在里面的函數都被該函數調用,按照此方法則生成相應整個軟件網絡的函數調用關系圖。
3.根據權利要求1所述的一種基于邊不穩定度的軟件函數變更預測系統,其特征在于:所述變更函數調用關系圖獲取模塊實現過程如下:
(1)利用ctags獲取每個函數在相鄰版本中的被定義位置,函數定義總是以‘{’開始,最終以‘}’結束,利用此原理,從函數開始行開始,利用棧的數據結構,去掉注釋語句,每讀到‘{’入棧,讀到‘}’出棧,直到棧為空,這時候的行數為該函數的結束行,按照此方法得到函數被定義的結束行,然后提取各函數在相鄰版本的源代碼,利用diff命令,比較代碼是否發生改變,如果是則是變更函數;
(2)得到變更函數后,利用變更函數,對源代碼的函數調用關系圖進行篩選,去掉沒有變更過的函數,剩下的就是變更函數調用關系圖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611122380.1/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種軟件配置代碼制品的層次分類方法
- 下一篇:數據處理方法及裝置





