計算機代碼的基于隱喻的語言模糊測試的制作方法
【專利摘要】本發(fā)明提供一種計算機代碼的基于隱喻的語言模糊測試?;陔[喻的語言模糊測試可以將代碼段分解為表示代碼段的隱喻。隱喻可以根據(jù)隱喻的任何元素的確定的邏輯擾動而進行變異。隱喻的變異可以作為代碼段的替代的變異。相比代碼段,可分析變異的隱喻以揭示性能差異。這些性能差異可關(guān)聯(lián)隱喻的變異,使得代碼段的對應(yīng)變異可以通過外推法關(guān)聯(lián)。此外,變異可存儲和重新使用在其他的隱喻。此外,相較于直接變異在多個計算機語言的代碼段,采用隱喻作為根語言替代可幫助生成減量的變異。
【專利說明】計算機代碼的基于隱喻的語言模糊測試
[0001] 本申請案系主張于2013年7月17日向美國所提出申請之美國臨時專利申請案第 61/847, 514號「語言架構(gòu)、分析器和/或運行時間的模糊測試」的優(yōu)先權(quán),于此并入該專利 申請案所揭露之內(nèi)容以供參考。
【技術(shù)領(lǐng)域】
[0002] 總的來說,本發(fā)明是有關(guān)一種軟件測試,尤其是有關(guān)一種測試下軟件的元素的表 示的擾動的分析。
【背景技術(shù)】
[0003] 通過簡短的背景,代碼測試通??梢员挥脕泶_定測試下代碼或代碼段的方面的特 點。例如,代碼測試的一個用途是確定測試下代碼的潛在安全問題。另例如,代碼測試可以 檢查崩潰(crashes)、失敗宣稱(failing assertions)、存儲器泄漏或其他缺陷。代碼測試 可以采取多種形式。這些代碼測試形式可以包括數(shù)據(jù)傳入測試下代碼的人工擾動。例如, 測試下代碼訪問變數(shù)并期望16位值被傳入測試下代碼,變數(shù)的人工擾動可以提供測試下 代碼8位或32位值。測試下代碼上的數(shù)據(jù)變數(shù)擾動的結(jié)果可以進行監(jiān)測,以確定是否測試 下代碼以預(yù)期的或意外的方式響應(yīng)擾動數(shù)據(jù)變數(shù)。測試下代碼的行為洞察可以提供測試下 代碼的改善以考慮提供給輸入至測試下代碼的擾動的類型。值得注意的是,數(shù)據(jù)變數(shù)的人 工擾動可以是費力的和緩慢的。因此,已開發(fā)自動化數(shù)據(jù)輸入擾動技術(shù)并作為可以被稱為 "模糊化技術(shù)"的一類,其中輸入變數(shù)可被干擾或"模糊化"。
[0004] 本發(fā)明是針對可避免或至少減少以上所指出的一個或多個問題的影響的各種方 法。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供一種系統(tǒng),包括:處理器;以及存儲器,存儲可執(zhí)行指令,當(dāng)通過該處 理器執(zhí)行時幫助操作的性能,包括:接收在第一計算機語言的代碼段;將該代碼段分解為 構(gòu)成代碼元素;確定對應(yīng)于該構(gòu)成代碼元素的隱喻元素;根據(jù)該隱喻元素確定對應(yīng)于該代 碼段的在第二計算機語言的表示隱喻的隱喻數(shù)據(jù);以及幫助訪問該隱喻數(shù)據(jù)。
[0006] 本發(fā)明還提供一種方法,包括:通過包含處理器的系統(tǒng),接收在第一語言的代碼 段;通過該系統(tǒng),識別該代碼段的特征;通過該系統(tǒng),確定對應(yīng)于該代碼段的該特征的隱喻 元素;通過該系統(tǒng),根據(jù)該隱喻元素,在第二語言生成表示該代碼段的隱喻;和通過該系 統(tǒng),幫助訪問該隱喻。
[0007] 本發(fā)明還提供一種非暫態(tài)計算機可讀介質(zhì),具有指令存儲其上,響應(yīng)于執(zhí)行,使包 括處理器的系統(tǒng)執(zhí)行操作,包括:接收在第一語言的代碼段;識別該代碼段的功能態(tài)樣;確 定對應(yīng)于該代碼段的該功能態(tài)樣的隱喻元素;根據(jù)該隱喻元素,在與該第一語言不同的第 二語言生成表示該代碼段的隱喻;和致使訪問該隱喻。
【專利附圖】
【附圖說明】
[0008] 本發(fā)明可參考以下結(jié)合附加圖式的說明而理解,該附圖中,同樣的附圖標(biāo)記表示 同樣的組件,且其中:
[0009] 圖1是根據(jù)本申請通過幫助訪問相關(guān)代碼段的隱喻信息而幫助代碼段分析的系 統(tǒng)。
[0010] 圖2是根據(jù)本申請通過幫助訪問相關(guān)代碼段的包括范圍和相關(guān)性信息的隱喻信 息而幫助代碼段分析的系統(tǒng)。
[0011] 圖3是根據(jù)本申請通過幫助訪問相關(guān)代碼段和模糊化代碼段的隱喻信息而幫助 代碼段分析的系統(tǒng)。
[0012] 圖4是根據(jù)本申請通過幫助訪問在選擇的輸出語言的模糊化代碼段而幫助代碼 段分析的系統(tǒng)。
[0013] 圖5是根據(jù)本申請根據(jù)模糊化代碼段通過便利訪問模糊化語言分析便利代碼段 分析的系統(tǒng)。
[0014] 圖6是根據(jù)本申請根據(jù)模糊化代碼段通過便利訪問模糊化語言和模糊化數(shù)據(jù)分 析便利代碼段分析的系統(tǒng)。
[0015] 圖7是根據(jù)本申請通過確定代碼段的隱喻表示便利代碼段分析的方法。
[0016] 圖8是根據(jù)本申請根據(jù)代碼段的變異的隱喻通過生成模糊化代碼段便利代碼段 分析的方法。
[0017] 圖9是根據(jù)本申請通過生成相關(guān)代碼段的變異的隱喻表示的模糊化報告便利代 碼段分析的方法。
[0018] 圖10是根據(jù)本申請根據(jù)代碼段的變異的隱喻表示,并進一步根據(jù)模糊化數(shù)據(jù)傳 入模糊化代碼段通過生成相關(guān)模糊化代碼段的模糊化報告便利代碼段分析的方法。
[0019] 圖11是交互的示例計算環(huán)境的示意方塊圖。
[0020] 圖12是根據(jù)實施例可操作以執(zhí)行所公開的系統(tǒng)和方法的計算系統(tǒng)的方塊圖。
[0021] 雖然本文所披露的標(biāo)的容許各種的修改及替代形式,但其特定的實施例已通過附 圖中的例子來顯示,并在本文中詳細(xì)描述。然而,應(yīng)該了解的是,本文中特定實施例的描述 不是為了要限制本發(fā)明所披露的特定形式,相反地,本發(fā)明欲涵蓋落入本發(fā)明的精神與范 疇內(nèi)的所有修改物、相等物、以及替代物,其將如附加的權(quán)利要求書所定義。
【具體實施方式】
[0022] 現(xiàn)參照圖式描述本發(fā)明,其中相同的附圖標(biāo)記用來指代全文中相似的組件。在下 列敘述中,為了說明,系提出許多細(xì)節(jié)以提供完整了解本發(fā)明。然而,顯然也可不需這些細(xì) 節(jié)來實施本發(fā)明。在其他例子中,已知結(jié)構(gòu)和器件系顯示在方塊圖中以幫助描述本發(fā)明。
[0023] 可采用軟件測試以確定測試下軟件的特性。軟件測試的常見用途包括確定潛在的 安全問題,檢查崩潰,失敗宣稱或存儲器遺漏,或其他的在測試下軟件(SUT)中的缺陷。一 種軟件測試技術(shù)可以"模糊化"(或"模糊測試"),其可以包括自動化或半自動化輸入的擾 動至SUT,例如提供無效的,無預(yù)期的,或隨機數(shù)據(jù)作為到SUT的輸入。除了傳入SUT的模糊 化數(shù)據(jù)以外,本文下面所公開傳統(tǒng)的模糊化可以擴展到包括代碼或部分的代碼(例如,代 碼段)的模糊化。例如,產(chǎn)生變數(shù)、訪問一值、然后將該值分配給該變數(shù)、然后印出該變數(shù)的 代碼段可以通過模糊化該值及/或模糊化代碼段本身而被模糊化。模糊化被訪問并被分配 給變數(shù)的該值,如在更傳統(tǒng)的模糊化中,可以,例如,傳入字符串、雙、整數(shù)、存儲器位置等, 而對于代碼段本身沒有任何模糊化。相應(yīng)的,如本文披露者,模糊化可以擴展到包括代碼段 本身的變異、獨立于模糊化數(shù)據(jù)、結(jié)合模糊化數(shù)據(jù)、或包括模糊化數(shù)據(jù)。例如,模糊化代碼段 可以包括將打印功能更改為顯示功能、指定變數(shù)類型為指標(biāo)、指定多個變數(shù)而不是只有一 個等等。幾乎無限數(shù)量的變異可施加于該代碼段本身,相反于原代碼段,這可以影響代碼段 的執(zhí)行。模糊化代碼段能幫助識別問題,例如,在解釋語言運行時間、堆積損壞、使用后無錯 誤、存儲器披露等等。軟件測試人員可以根據(jù)擴展的模糊化范式將傳入代碼的數(shù)據(jù)和代碼 本身兩者變異化。
[0024] 模糊化測試可以通過"模糊器(fuzzers) "來執(zhí)行。模糊器可以模糊化包括SUT本 身的代碼的SUT的輸入。"模糊器"可以是與模糊化相關(guān)的系統(tǒng)、方法、器件等。"模糊化"可 以包括到SUT的擾動輸入,包括一組輸入數(shù)據(jù)的擾動,例如,包括擾動輸入的確定的數(shù)據(jù)組 可被稱為"模糊化數(shù)據(jù)","模糊化數(shù)據(jù)文件',或類似的語言。"模糊化"可以進一步包括包 括在SUT的代碼或者代碼段的擾動。除了傳入原始代碼段和/或擾動的代碼段的數(shù)據(jù)的較 傳統(tǒng)的模糊化之外,期望根據(jù)代碼或代碼段的模糊化測試而捕獲代碼或代碼段的執(zhí)行中的 差異。
[0025] 模糊化代碼段可以被自動化,如本發(fā)明公開的,以允許確定的變異技術(shù)應(yīng)用 至代碼段的元素。代碼段的元素通常以多個代碼語言表示,如"打印"型元素存在于 BASIC,C++,PEARL,VISUAL BASIC,JAVA等語言。語言模糊測試,例如,代碼段本身的模糊化, 可以有橫跨多個代碼語言的元素類型的存在的優(yōu)勢。語言模糊測試可以采用隱喻生成元件 (MGC),例如,MGC110, 210等等,如本文披露者,將在第一語言的代碼段分解為在第二語言的 代碼段的隱喻表示,例如,可以將在JavaScript中的代碼段分解為在JSON中的隱喻表示。 該隱喻表示可以被稱為是代碼段的"隱喻",或者其他的類似術(shù)語。隱喻可以與代碼語法、 抽象語法樹(AST)和共同代碼段元素之間的連接相關(guān)。在第二語言的隱喻可以根據(jù)指定的 擾動再進行變異。該變異的隱喻可以保持在第二語言。該變異的隱喻然后可以組成在第三 語言。在一些情況下,第三語言可以與第一語言相同。在其他的示例中,第三語言可以與第 一語言或第二語言不同。例如,可以將在JavaScript中的代碼段分解為在JSON的隱喻、在 JSON變異、然后組合為JavaScript。另例如,可以將在JavaScript中代碼段分解成在JSON 的隱喻、在JSON變異、然后組合成FLASH。為簡單起見,本發(fā)明通常限制于變異的隱喻構(gòu)成 與代碼段相同的語言的討論,但是本
【發(fā)明內(nèi)容】
并不局限于此。
[0026] 代碼段分解成在第二語言的隱喻可以是有益的,因為可以將多個第一語言分解為 第二語言,從而克服在多個第一語言的類似的元素之間的語法差異。因此,代碼段的元素 和第二代碼段的元素的類似功能,可以由在第二語言相同的隱喻來表示。例如,可以將在 JavaScript中的代碼段分解成在JSON的隱喻和可以將在PEARL的第二代碼段分解為JSON 中的另一隱喻。例示代碼段在JavaScript是"打印"功能和第二代碼段在PEARL是"打印" 功能,JSON中的"打印"隱喻同樣可以表示JavaScript或PEARL "打印"功能。這個示例 說明在第二語言可以作為翻譯層來表示寫在不同的語言中的類似的元素。這可以幫助變異 的開發(fā),用來只是擾動隱喻,而不是開發(fā)多個變異,每個變異用以擾動在不同的語言中的元 素,例如,而不是開發(fā)JavaScript和PEARL中的打印元素變異,可以開發(fā)單一 JSON打印-元 素隱喻變異。正如將要提到的,例示JSON打印-元素隱喻變異可以被施加到從在另一語言 的C++打印元素、C#打印元素、FLASH打印元素、AIR打印元素、或幾乎任何其他的打印元 素分解的打印元素隱喻。在一態(tài)樣中,變異可以在第二語言開發(fā),以使它們能夠被施加到隱 喻表示,例如,在幾乎任何第一語言中的代碼元素的隱喻。代碼段元素的其他的示例可以包 括,但明確地不限于示例化物件,調(diào)用方法,設(shè)置屬性等。
[0027] 變異可以施加于代碼段的隱喻表示的幾乎任何態(tài)樣。這些態(tài)樣可以包括代碼段功 能、范圍、狀態(tài)、表達式表示、語句、參數(shù)、名稱、值等。應(yīng)當(dāng)注意的是,隱喻的擾動,例如隱喻 的變異,可施加于體現(xiàn)在隱喻的代碼段的任何態(tài)樣。因此,體現(xiàn)在隱喻的代碼段的表示態(tài)樣 的粒子越細(xì)微,可被施加的變異的粒子也就越細(xì)微。
[0028] 變異的隱喻可以被組合成輸出語言,例如,第三語言。如本文中所討論的,為了簡 單和清楚,本發(fā)明一般限制于輸入和輸出語言相同的討論。例如,可以將在JavaScript中 的代碼段分解成JSON中的隱喻,可以進行變異,然后組合成JavaScript中的變異的代碼 段。這可以允許在JavaScript的代碼段和變異的代碼段的測試,從而降低了在不同語言的 輸出代碼的輸入代碼測試相關(guān)的錯誤的引入。值得注意的是,變異的代碼段也可以在本文 中以模糊化代碼段或類似語言稱之。
[0029] 變異策略或模糊化策略可以表示為邏輯規(guī)則描述信息的擾動,例如,隱喻。在一態(tài) 樣,隱喻變異庫可以被用來提供訪問多個預(yù)定的模糊化策略。在一些實施例中,變異可以 被限制在變異的單一類型。在其他的實施例中,變異可以包括多個變異以致使多種類型的 隱喻擾動。在某些情況下,語言模糊測試可以幫助開發(fā)工具至目標(biāo)語言翻譯,例如,通過在 CHROME中的JavaScript解釋器的瀏覽器、通過在RUBY ON RAILS中的RUBY解釋器的web 應(yīng)用、通過用于在MICROSOFT OFFICE中的應(yīng)用的VISUAL BASIC的大型應(yīng)用程序套件、在 LANDIS和GYR系統(tǒng)的嵌入式控制器BASIC解釋器等。其他的可能的運行時間也可以被語言 模糊化。
[0030] 下面呈現(xiàn)本發(fā)明的實施例其他的簡化示例,提供的各種實施例的一些態(tài)樣的基本 理解。這不是各種實施例的廣泛綜述。既不旨在標(biāo)識各種實施例的關(guān)鍵或關(guān)鍵元素,也不 是界定各種實施例的范圍。其唯一的目的是以簡化的形式為序言提出本發(fā)明的一些概念, 稍后呈現(xiàn)更詳細(xì)的描述。
[0031] 在一實施例中,系統(tǒng)可以包括處理器和存儲器。該處理器可以幫助存儲在存儲器 的指令的執(zhí)行。指令的執(zhí)行可使處理器執(zhí)行包括在第一計算機語言接收代碼段和將代碼段 分解為構(gòu)成代碼元素的操作。然后可以確定對應(yīng)于構(gòu)成代碼元素的隱喻元素。根據(jù)這些隱 喻元素,在第二計算機語言的隱喻可以被確定對應(yīng)于代碼段。通過系統(tǒng)可以方便訪問隱喻。
[0032] 在另一實施例中,方法可包括通過包括處理器的系統(tǒng)接收第一語言中的代碼段, 其中可以識別代碼段的特征。該方法可以進一步包括通過系統(tǒng)確定對應(yīng)于代碼段的特征的 隱喻元素和根據(jù)隱喻元素通過系統(tǒng)生成在第二語言表示該代碼段的隱喻。然后該方法可以 幫助訪問隱喻。
[0033] 在進一步的實施例中,在其上存儲有指令的非臨時性計算機可讀存儲介質(zhì)可響應(yīng) 于執(zhí)行使包括處理器的系統(tǒng)執(zhí)行操作。這些操作可以包括在第一語言接收代碼段。還可以 包括識別代碼段的功能態(tài)樣。該操作可以進一步確定對應(yīng)于代碼段的功能態(tài)樣的隱喻元 素,和在與第一語言不同的第二語言中,根據(jù)隱喻元素生成表示代碼段的隱喻。通過操作可 以進一步幫助訪問隱喻。
[0034] 為了實現(xiàn)前述和相關(guān)目的,以下更全面地描述本發(fā)明的一個或多個特征。下面的 描述和附圖詳細(xì)闡述某些說明態(tài)樣。然而,這些態(tài)樣是指示性的,可以采用各種方式。當(dāng)下 面的詳細(xì)描述在與所提供的附圖考慮其他的態(tài)樣,優(yōu)點和新穎的特征將會變得顯而易見。
[0035] 圖1是系統(tǒng)100的示意圖,其根據(jù)本申請的態(tài)樣通過幫助訪問與代碼段相關(guān)的隱 喻信息而幫助代碼段分析。系統(tǒng)100可包括隱喻生成元件(MGC) 110。MGCllO可以幫助訪 問隱喻信息104。隱喻信息104可以對應(yīng)于代碼段102,在一態(tài)樣中,MGCllO可接收代碼段 102,確定代碼段102的隱喻和幫助訪問有關(guān)隱喻或代碼段102的隱喻信息104。在一態(tài)樣 中,系統(tǒng)100可以幫助模糊化語言架構(gòu)、解析器和運行時間。
[0036] 在實施例中,代碼段102可以在第一計算機代碼語言,例如,JAVASCRIPT、Adobe AIR、C++等。隱喻信息104可以與在第二語言中的代碼段102的隱喻表示有關(guān),如JSON, C#,XML,BASIC等。在一些情況下,隱喻表示可以是在與計算機代碼102相同的語言。系統(tǒng) 100可以通過定義語言模糊測試的通用方法而幫助語言的半自動負(fù)測試,因為隱喻的執(zhí)行 是語言模糊測試不可知的而且又不需要目標(biāo)運行時間或目標(biāo)語言的源代碼,以產(chǎn)生模糊化 定義,例如,變異。此外,系統(tǒng)100示出了代碼段102上的操作,其可以是較大的代碼文件的 一部分。這說明了可以對代碼段水平執(zhí)行確定隱喻和幫助訪問隱喻信息104從而允許不需 分析目標(biāo)的程序流程的操作或解決符號限制。應(yīng)注意到,由MGCllO執(zhí)行的系統(tǒng)100的隱喻 層是可擴展的,因此,如果語言具有獨特的特征,獨特的隱喻可以與它相關(guān)聯(lián)。
[0037] 作為非限制性的示例,代碼段102可包括下面的JavaScript代碼段:
[0038]
【權(quán)利要求】
1. 一種系統(tǒng),包括: 處理器;W及 存儲器,存儲可執(zhí)行指令,當(dāng)通過該處理器執(zhí)行時幫助操作的性能,包括: 接收在第一計算機語言的代碼段; 將該代碼段分解為構(gòu)成代碼元素; 確定對應(yīng)于該構(gòu)成代碼元素的隱喻元素; 根據(jù)該隱喻元素確定對應(yīng)于該代碼段的在第二計算機語言的表示隱喻的隱喻數(shù)據(jù);W 及幫助訪問該隱喻數(shù)據(jù)。
2. 如權(quán)利要求1所述的系統(tǒng),其中,該第一計算機語言與該第二計算機語言不同。
3. 如權(quán)利要求1所述的系統(tǒng),其中,該確定該隱喻數(shù)據(jù)包括對應(yīng)于該隱喻元素確定包 括還沒有定義的關(guān)系的初始隱喻架構(gòu)。
4. 如權(quán)利要求3所述的系統(tǒng),其中,該確定該隱喻數(shù)據(jù)還包括根據(jù)該初始隱喻架構(gòu)確 定包含確定的關(guān)系的中間隱喻,其中,該定義的關(guān)系取代還沒有定義的關(guān)系作為在該初始 隱喻架構(gòu)中還沒有定義的關(guān)系的分析的結(jié)果。
5. 如權(quán)利要求4所述的系統(tǒng),其中,該確定的關(guān)系是與變數(shù)相關(guān)的范圍,該范圍被確定 作為在該初始隱喻架構(gòu)中包括的該變數(shù)的分析的結(jié)果。
6. 如權(quán)利要求4所述的系統(tǒng),其中,該確定該隱喻數(shù)據(jù)還包括用根據(jù)該中間隱喻的固 有的相關(guān)性的外顯相關(guān)性更新該中間隱喻。
7. 如權(quán)利要求1所述的系統(tǒng),還包括: 確定表示變異的隱喻的變異的隱喻數(shù)據(jù)作為表示變異的變異數(shù)據(jù)施加至該隱喻數(shù)據(jù) 的結(jié)果; 生成對應(yīng)于該變異的隱喻數(shù)據(jù)的模糊化代碼段;和 幫助訪問該模糊化代碼段。
8. 如權(quán)利要求7所述的系統(tǒng),其中,該確定該變異的隱喻數(shù)據(jù)是施加該變異數(shù)據(jù)到該 隱喻數(shù)據(jù)的結(jié)果,引起語言變異或數(shù)據(jù)變異的至少一者。
9. 如權(quán)利要求7所述的系統(tǒng),其中,該變異數(shù)據(jù)被存儲在數(shù)據(jù)存儲器件上。
10. 如權(quán)利要求9所述的系統(tǒng),其中,該數(shù)據(jù)存儲器件包括變異庫,該變異庫包括該變 異數(shù)據(jù),該數(shù)據(jù)存儲器件位于該處理器遠(yuǎn)處。
11. 如權(quán)利要求7所述的系統(tǒng),還包括: 確定在該代碼段的執(zhí)行和該模糊化代碼段的執(zhí)行之間的性能的偏離;和 幫助訪問與性能的該偏離相關(guān)的信息。
12. 如權(quán)利要求11所述的系統(tǒng),還包括: 在執(zhí)行該模糊化代碼段時傳遞模糊化數(shù)據(jù)到該模糊化代碼段; 確定無該模糊化數(shù)據(jù)的該模糊化代碼段的該執(zhí)行和與該模糊化數(shù)據(jù)的該模糊化代碼 段的該執(zhí)行之間的在性能的另一偏離;和 幫助訪問與傳到該模糊化數(shù)據(jù)相關(guān)的性能中與該另一偏離相關(guān)的信息。
13. 如權(quán)利要求1所述的系統(tǒng),還包括: 在與該第一或第二計算機語言不同的第H計算機語言接收另一代碼段,該另一代碼段 包括其它的構(gòu)成代碼元素,該另一構(gòu)成代碼元素確定與該代碼段的該構(gòu)成代碼元素相似; 確定對應(yīng)于該另一構(gòu)成代碼元素的其他隱喻元素,其中由于該構(gòu)成代碼元素和該其他 構(gòu)成代碼元素確定是相似的,所W該其他隱喻元素確定與該隱喻元素相同; 根據(jù)該其他隱喻元素確定在該第二計算機語言對應(yīng)于該其他代碼段表示另一隱喻的 其他隱喻數(shù)據(jù),其中由于該隱喻元素和該其他隱喻元素是相同的,所W該其他隱喻確定與 該隱喻相同;和 幫助訪問該其他隱喻數(shù)據(jù)。
14. 如權(quán)利要求1所述的系統(tǒng),還包括: 在與該第一或第二計算機語言不同的第H計算機語言接收另一代碼段,該另一代碼段 包括其它的構(gòu)成代碼元素,該另一構(gòu)成代碼元素確定與該代碼段的該構(gòu)成代碼元素相同; 確定對應(yīng)于該另一構(gòu)成代碼元素的其他隱喻元素,其中由于該構(gòu)成代碼元素確定與該 其他構(gòu)成代碼元素相同,所W該其他隱喻元素確定與該隱喻元素相同; 根據(jù)該其他隱喻元素確定在該第二計算機語言對應(yīng)于該其他代碼段表示另一隱喻的 其他隱喻數(shù)據(jù),其中由于該隱喻元素和該其他隱喻元素確定是相同的,所W該其他隱喻確 定與該隱喻相同;和 幫助訪問該其他隱喻數(shù)據(jù)。
15. -種方法,包括: 通過包含處理器的系統(tǒng),接收在第一語言的代碼段; 通過該系統(tǒng),識別該代碼段的特征; 通過該系統(tǒng),確定對應(yīng)于該代碼段的該特征的隱喻元素; 通過該系統(tǒng),根據(jù)該隱喻元素,在第二語言生成表示該代碼段的隱喻;和 通過該系統(tǒng),幫助訪問該隱喻。
16. 如權(quán)利要求15所述的方法,其中,該第一計算機語言與該第二計算機語言是不同 的語言。
17. 如權(quán)利要求15所述的方法,其中,該確定該隱喻包括: 通過該系統(tǒng),確定對應(yīng)于該隱喻元素的初始隱喻架構(gòu)包含一個或多個還沒有定義的關(guān) 系,并且還包含還沒有被轉(zhuǎn)換成外顯相關(guān)性的固有相關(guān)性。
18. 如權(quán)利要求17所述的方法,其中,該確定該隱喻還包括: 修改該初始隱喻架構(gòu)來定義該一個或多個還沒有定義的關(guān)系的還沒有定義的關(guān)系,并 且 進一步修改該修改的初始隱喻架構(gòu)W轉(zhuǎn)換該固有相關(guān)性為外顯的相關(guān)性。
19. 如權(quán)利要求15所述的方法,還包括: 通過該系統(tǒng),確定變異的隱喻作為施加變異到該隱喻的結(jié)果; 通過該系統(tǒng),生成對應(yīng)于該變異的隱喻的變異的代碼段;和 通過該系統(tǒng),幫助訪問該變異的代碼段。
20. 如權(quán)利要求19所述的方法,其中,該變異是從位于該系統(tǒng)遠(yuǎn)處的存儲器件上存儲 的變異庫接收。
21. 如權(quán)利要求19所述的方法,其中,施加該變異導(dǎo)致該隱喻的變異,相較于包含該代 碼段的語句的順序,改變包括該變異的代碼段的語句的順序。
22. 如權(quán)利要求19所述的方法,還包括: 通過該系統(tǒng),確定該代碼段的執(zhí)行和該變異的代碼段的執(zhí)行之間的在性能的偏離;和 通過該系統(tǒng),幫助訪問與性能的該偏離相關(guān)的信息。
23. -種非暫態(tài)計算機可讀介質(zhì),具有指令存儲其上,響應(yīng)于執(zhí)行,使包括處理器的系 統(tǒng)執(zhí)行操作,包括: 接收在第一語言的代碼段; 識別該代碼段的功能態(tài)樣; 確定對應(yīng)于該代碼段的該功能態(tài)樣的隱喻元素; 根據(jù)該隱喻元素,在與該第一語言不同的第二語言生成表示該代碼段的隱喻;和 致使訪問該隱喻。
24. 如權(quán)利要求23所述的非暫態(tài)計算機可讀介質(zhì),其中,該操作還包括: 確定變異的隱喻作為施加變異到該隱喻的結(jié)果; 生成對應(yīng)于該變異的隱喻的變異的代碼段;和 致使訪問該變異的代碼段。
25. 如權(quán)利要求23所述的非暫態(tài)計算機可讀介質(zhì),其中,該操作還包括: 確定與該變異的代碼段的執(zhí)行相關(guān)的性能度量;和 致使訪問與該性能度量相關(guān)的信息。
【文檔編號】G06F11/36GK104346277SQ201410334090
【公開日】2015年2月11日 申請日期:2014年7月14日 優(yōu)先權(quán)日:2013年7月17日
【發(fā)明者】M·愛丁頓, A·切凱蒂 申請人:德嘉福安全有限責(zé)任公司