[發(fā)明專利]用于標(biāo)識(shí)源代碼版本之間的語義區(qū)別的方法和裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201410444102.2 | 申請(qǐng)日: | 2014-09-02 |
| 公開(公告)號(hào): | CN105446723B | 公開(公告)日: | 2018-11-23 |
| 發(fā)明(設(shè)計(jì))人: | 林科文;紀(jì)金松;張青山;張玉珩 | 申請(qǐng)(專利權(quán))人: | 國際商業(yè)機(jī)器公司 |
| 主分類號(hào): | G06F8/41 | 分類號(hào): | G06F8/41 |
| 代理公司: | 北京市金杜律師事務(wù)所 11256 | 代理人: | 酆迅;李崢宇 |
| 地址: | 美國紐*** | 國省代碼: | 美國;US |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 用于 標(biāo)識(shí) 源代碼 版本 之間 語義 區(qū)別 方法 裝置 | ||
本發(fā)明涉及用于標(biāo)識(shí)源代碼版本之間的語義區(qū)別的方法和裝置。在本發(fā)明的一個(gè)實(shí)施方式中,提供了一種用于標(biāo)識(shí)源代碼版本之間的語義區(qū)別的方法,包括:分別獲取第一源代碼版本的第一調(diào)試信息和第二源代碼版本的第二調(diào)試信息;通過比較所述第一調(diào)試信息與所述第二調(diào)試信息,確定在所述第二源代碼版本中是否存在與所述第一源代碼版本中的第一函數(shù)相匹配的第二函數(shù);以及基于所述確定的結(jié)果標(biāo)識(shí)所述語義區(qū)別。在本發(fā)明的一個(gè)實(shí)施方式中,提供了一種用于標(biāo)識(shí)源代碼版本之間的語義區(qū)別的裝置。采用本發(fā)明,可以快速并且準(zhǔn)確地標(biāo)識(shí)各個(gè)源代碼版本之間的語義區(qū)別。
技術(shù)領(lǐng)域
本發(fā)明的各實(shí)施方式涉及軟件開發(fā),更具體地,涉及在軟件開發(fā)期間用于標(biāo)識(shí)源代碼版本之間的語義區(qū)別(semantic difference)的方法和裝置。
背景技術(shù)
隨著用戶需求的增加,計(jì)算機(jī)軟件的功能也日益復(fù)雜。在軟件開發(fā)周期中,需要頻繁地對(duì)各個(gè)開發(fā)階段中的不同的源代碼版本進(jìn)行測(cè)試。回歸測(cè)試(regression testing)指修改了舊代碼后,重新進(jìn)行測(cè)試以確認(rèn)修改沒有引入新的錯(cuò)誤或?qū)е缕渌a出現(xiàn)錯(cuò)誤。作為軟件開發(fā)的一個(gè)重要組成部分,回歸測(cè)試在整個(gè)軟件開發(fā)過程中占有很大的工作量比重。通常而言,開發(fā)人員逐步完成軟件設(shè)計(jì)中的各項(xiàng)功能,并且基于回歸測(cè)試來確保源代碼的正確。
例如,開發(fā)人員編寫了第一源代碼版本,經(jīng)過測(cè)試后發(fā)現(xiàn)該第一源代碼版本可以實(shí)現(xiàn)預(yù)期的設(shè)計(jì)。繼而,開發(fā)人員可以在該第一源代碼版本的基礎(chǔ)上繼續(xù)開發(fā)其他功能并完成第二源代碼版本。在后續(xù)的開發(fā)第二版本源代碼過程期間將會(huì)添加新的代碼,并且還可能會(huì)修改第一源代碼版本中的已經(jīng)通過測(cè)試的已有代碼。
在針對(duì)第二源代碼版本進(jìn)行測(cè)試時(shí),可能會(huì)發(fā)現(xiàn)第二源代碼版本中引入了在第一源代碼版本中不存在的新問題。例如,第一源代碼版本可以通過某些測(cè)試用例(test case)的測(cè)試,然而,第二源代碼版本不能通過這些測(cè)試用例的測(cè)試。此時(shí)則需要比較第一源代碼版本和第二源代碼版本之間的區(qū)別,以便發(fā)現(xiàn)并排除在開發(fā)第二源代碼版本期間引入的錯(cuò)誤。
然而,開發(fā)過程可能會(huì)涉及到復(fù)雜的過程,例如,開發(fā)人員可能會(huì)加入新的代碼行、刪除現(xiàn)有代碼行、修改現(xiàn)有代碼行等,這些修改可能會(huì)在兩個(gè)源代碼版本之間引入語義區(qū)別(即,可能會(huì)導(dǎo)致運(yùn)行結(jié)果的不同)。另外,開發(fā)人員還有可能會(huì)調(diào)整代碼行/函數(shù)在源代碼中的順序(例如,交換兩個(gè)代碼行/函數(shù)的位置)、替換變量(variable)名/函數(shù)名等。盡管從文本角度看來,上述這些修改將會(huì)在兩個(gè)源代碼版本之間引入文本區(qū)別,然而對(duì)于編程語言的編譯和執(zhí)行而言,這些文本區(qū)別并不會(huì)對(duì)運(yùn)行結(jié)果產(chǎn)生影響,因而在查找新引入的錯(cuò)誤時(shí),可以僅關(guān)注于語義區(qū)別而忽略文本區(qū)別。
目前已經(jīng)提出了在回歸測(cè)試中用于輔助查找各個(gè)源代碼版本之間的區(qū)別的技術(shù)方案,然而這些技術(shù)方案主要基于分析各個(gè)版本之間的文本區(qū)別來實(shí)現(xiàn)。這些技術(shù)方案會(huì)將原本不會(huì)對(duì)程序的運(yùn)行結(jié)果產(chǎn)生任何影響的文本修改標(biāo)識(shí)為區(qū)別,造成開發(fā)人員不得不在所標(biāo)識(shí)的大量區(qū)別中人工地尋找真正對(duì)運(yùn)行結(jié)果產(chǎn)生影響的語義區(qū)別。
因而,如何快速并且準(zhǔn)確地標(biāo)識(shí)出各個(gè)源代碼版本之間的語義區(qū)別,成為目前的一個(gè)研究熱點(diǎn)。
發(fā)明內(nèi)容
因而,期望開發(fā)一種能夠標(biāo)識(shí)不同源代碼版本之間的語義區(qū)別的技術(shù)方案。期望該技術(shù)方案可以忽略不同源代碼版本之間的文本區(qū)別,而僅標(biāo)識(shí)各個(gè)版本之間的語義區(qū)別,以便于開發(fā)人員可以快速定位開發(fā)期間被修改的導(dǎo)致程序產(chǎn)生不同運(yùn)行結(jié)果的內(nèi)容,進(jìn)而找到可能引起錯(cuò)誤的代碼行。
在本發(fā)明的一個(gè)實(shí)施方式中,提供了一種用于標(biāo)識(shí)源代碼版本之間的語義區(qū)別的方法,包括:分別獲取第一源代碼版本的第一調(diào)試信息和第二源代碼版本的第二調(diào)試信息;通過比較第一調(diào)試信息與第二調(diào)試信息,確定在第二源代碼版本中是否存在與第一源代碼版本中的第一函數(shù)相匹配的第二函數(shù);以及基于確定的結(jié)果標(biāo)識(shí)語義區(qū)別。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于國際商業(yè)機(jī)器公司,未經(jīng)國際商業(yè)機(jī)器公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410444102.2/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。





