国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      輔助編程的方法及裝置的制作方法

      文檔序號(hào):6432652閱讀:352來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):輔助編程的方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及輔助編程的技術(shù)領(lǐng)域,特別涉及一種改善了的輔助編程的方法和裝置。
      背景技術(shù)
      在當(dāng)前商業(yè)應(yīng)用開(kāi)發(fā)環(huán)境中,基于框架的應(yīng)用程序非常廣泛,例如J2EE是其中最 為流行的一種基于框架的應(yīng)用。在基于框架的應(yīng)用中,應(yīng)用邏輯不僅存在于代碼中,而且存 在于框架配置文件中,例如,Struts, iBatis, Spring等框架配置文件。
      采用框架會(huì)帶來(lái)很多好處,但仍然面臨著著以下問(wèn)題框架的種類(lèi)眾多,不同的框 架有自己的語(yǔ)法,對(duì)新手來(lái)說(shuō),每個(gè)都需要一定的學(xué)習(xí)時(shí)間;現(xiàn)有的框架中大多數(shù)都是來(lái)自 開(kāi)源社區(qū)的開(kāi)源軟件,文檔可能會(huì)不完整或者已經(jīng)過(guò)時(shí),程序員也沒(méi)有時(shí)間完全掌握。
      由此可見(jiàn),現(xiàn)有的技術(shù)仍然存在著改進(jìn)的空間,迫切的需要一種改進(jìn)了的輔助編 程的技術(shù)方案。發(fā)明內(nèi)容
      根據(jù)本發(fā)明的第一個(gè)方面,提供了一種用于基于框架的應(yīng)用程序的編程輔助方 法,所述應(yīng)用程序包含程序文件和配置文件,包括將應(yīng)用程序歷史庫(kù)的配置文件按框架類(lèi) 型處理為配置文件分類(lèi)庫(kù);根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合,并確定所述 閉合頻繁子樹(shù)的支持度;提供所述閉合頻繁子樹(shù)集合及所述支持度用于輔助編程。
      根據(jù)本發(fā)明的第二個(gè)方面,提供了一種用于基于框架的應(yīng)用程序的編程輔助裝 置,所述應(yīng)用程序包含程序文件和配置文件,包括配置為將應(yīng)用程序歷史庫(kù)的配置文件按 框架類(lèi)型處理為配置文件分類(lèi)庫(kù)的部件;配置為根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子 樹(shù)集合,并確定所述閉合頻繁子樹(shù)的支持度的部件;配置為提供所述閉合頻繁子樹(shù)集合及 所述支持度用于輔助編程的部件。
      采用本申請(qǐng)的技術(shù)方案可輔助基于框架的應(yīng)用程序的編程。


      所附權(quán)利要求中闡述了被認(rèn)為是本發(fā)明的特點(diǎn)的創(chuàng)造性特征。但是,通過(guò)參照附 圖閱讀下面對(duì)說(shuō)明性的實(shí)施例的詳細(xì)說(shuō)明可更好地理解發(fā)明本身以及其優(yōu)選使用模式、目 標(biāo)、特征以及優(yōu)點(diǎn),在附圖中
      圖1示出用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)100的框圖。
      圖2示出本發(fā)明基于框架的應(yīng)用程序的輔助編程方法的流程。
      圖3示出按照一實(shí)施方式根據(jù)配置文件分類(lèi)庫(kù)構(gòu)建CTP集合的流程。
      圖4示出按照一實(shí)施方式建立CTP和STP關(guān)聯(lián)的流程圖
      圖5示出按照一實(shí)施方式實(shí)現(xiàn)輔助編程的流程
      圖6示出按照一實(shí)施方式中代碼的示意
      圖7示出按照一實(shí)施方式針對(duì)示例性的配置文件生成CTP的示意
      圖8示出按照一實(shí)施方式針對(duì)示例性的代碼片段生成STP的示意
      圖9示出按照一實(shí)施方式建立關(guān)聯(lián)的示意圖
      圖10按照一實(shí)施方式編碼輔助示意圖具體實(shí)施例
      所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。 因此,本發(fā)明可以具體實(shí)現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐 留軟件、微代碼等)、或者本文一般稱(chēng)為“電路”、“模塊”或“系統(tǒng)”的軟件部分與硬件部分的 組合。此外,本發(fā)明還可以采取體現(xiàn)在任何有形的表達(dá)介質(zhì)(medium of expression)中的 計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì)中包含計(jì)算機(jī)可用的程序碼。
      可以使用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī) 可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是——但不限于—— 電的、磁的、光的、電磁的、紅外線的、或半導(dǎo)體的系統(tǒng)、裝置、器件或傳播介質(zhì)、或前述各項(xiàng) 的任何適當(dāng)?shù)慕M合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括以下 有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ) 器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器 (CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或前述各項(xiàng)的任何適當(dāng)?shù)慕M合。在本文語(yǔ)境中,計(jì)算機(jī) 可讀存儲(chǔ)介質(zhì)可以是任何含有或存儲(chǔ)供指令執(zhí)行系統(tǒng)、裝置或器件使用的或與指令執(zhí)行系 統(tǒng)、裝置或器件相聯(lián)系的程序的有形介質(zhì)。
      計(jì)算機(jī)可讀信號(hào)介質(zhì)可以包括例如在基帶中或作為載波的一部分傳播的帶有計(jì) 算機(jī)可讀程序代碼的數(shù)據(jù)信號(hào)。這樣一種傳播信號(hào)可以采取任何適當(dāng)?shù)男问剑?但不 限于-電磁的、光的或其任何適當(dāng)?shù)慕M合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以是不同于計(jì)算機(jī)可讀 存儲(chǔ)介質(zhì)的、可以傳達(dá)、傳播或傳輸供指令執(zhí)行系統(tǒng)、裝置或器件使用的或與指令執(zhí)行系 統(tǒng)、裝置或器件相聯(lián)系的程序的任何一種計(jì)算機(jī)可讀介質(zhì)。
      包含在計(jì)算機(jī)可讀介質(zhì)中的程序代碼可以采用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括-但不 限于-無(wú)線、有線、光纜、射頻等等、或上述各項(xiàng)的任何適當(dāng)?shù)慕M合。
      用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序碼,可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任何 組合來(lái)編寫(xiě),所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-諸如Java、Smalltalk、C++ 之類(lèi),還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言-諸如”C”程序設(shè)計(jì)語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ) 言。程序碼可以完全地在用戶(hù)的計(jì)算上執(zhí)行、部分地在用戶(hù)的計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立 的軟件包執(zhí)行、部分在用戶(hù)的計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī) 或服務(wù)器上執(zhí)行。在后一種情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任何種類(lèi)的網(wǎng)絡(luò)——包括局域網(wǎng) (LAN)或廣域網(wǎng)(WAN)-連接到用戶(hù)的計(jì)算機(jī),或者,可以(例如利用因特網(wǎng)服務(wù)提供商來(lái)通 過(guò)因特網(wǎng))連接到外部計(jì)算機(jī)。
      以下參照按照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/ 或框圖描述本發(fā)明。要明白的是,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中 各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算 機(jī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行的這些指令,產(chǎn)生實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī) 定的功能/操作的裝置。
      也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能指令計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置 以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生一個(gè)包 括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means) 的制造品。
      也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上,使得在計(jì) 算機(jī)或其它可編程數(shù)據(jù)處理裝置上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而 在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令就提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定 的功能/操作的過(guò)程。
      現(xiàn)參看圖1,示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)100的框圖。 如所示,計(jì)算機(jī)系統(tǒng)100可以包括CPU(中央處理單元)101、RAM(隨機(jī)存取存儲(chǔ)器)102、 ROM(只讀存儲(chǔ)器)103、系統(tǒng)總線104、硬盤(pán)控制器105、鍵盤(pán)控制器106、串行接口控制器 107、并行接口控制器108、顯示控制器109、硬盤(pán)110、鍵盤(pán)111、串行外部設(shè)備112、并行外部 設(shè)備113和顯示器114。在這些設(shè)備中,與系統(tǒng)總線104耦合的有CPU 101、RAM 102、ROM 103、硬盤(pán)控制器105、鍵盤(pán)控制器106、串行控制器107、并行控制器108和顯示控制器109。 硬盤(pán)110與硬盤(pán)控制器105耦合,鍵盤(pán)111與鍵盤(pán)控制器106耦合,串行外部設(shè)備112與串 行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與 顯示控制器109耦合。應(yīng)當(dāng)理解,圖1所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不 是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。
      以下以J2EE應(yīng)用為例,以詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式。所屬技術(shù)領(lǐng)域的技術(shù)人員 應(yīng)當(dāng)明白,本發(fā)明并不限于J2EE應(yīng)用的特定細(xì)節(jié),基于J2EE應(yīng)用的實(shí)施方式,完全可以推 廣到其它基于框架的應(yīng)用程序。
      典型的J2EE 應(yīng)用具有如下 6 層Web、Action、Service、DAO、Object 和 DB 層,每層 包括各自的程序代碼單元。Web層為JSP。當(dāng)用戶(hù)通過(guò)JSP提交一個(gè)ActionForm從而與應(yīng) 用交互時(shí),Struts框架將根據(jù)配置文件struts-config. xml中的配置把該ActionForm傳 遞給Action層中特定的Action類(lèi)。當(dāng)該Action類(lèi)執(zhí)行完成后,結(jié)果字符串將根據(jù)同一個(gè) 配置文件中的配置將應(yīng)用引導(dǎo)到下一個(gè)JSP。
      框架配置文件用于描述一個(gè)框架下的特定J2EE應(yīng)用的配置中的各配置節(jié)點(diǎn)中所 表示虛擬代碼單元(即從配置文件中獲得的代碼單元)及其與程序代碼單元之間的關(guān)系。 所述代碼單元(包含虛擬代碼單元和程序代碼單元)可以是代碼中的類(lèi)、表單請(qǐng)求、JSP、函 數(shù)和變量等。代碼單元集合可表示為ITAdT-Artifact的縮寫(xiě),表示IT制品,其中ITA可 以分為兩部分,一部分是程序代碼單元集合CU,另一部分是虛擬代碼單元集合VU),而單個(gè) 代碼單元可表示為ita,這里的ita可以是一個(gè)表示一個(gè)程序代碼單元),也可以 是一個(gè)VUi (VUi表示一個(gè)虛擬代碼單元)。每一個(gè)框架(例如Spring, Struts, iBatis等) 都規(guī)定了屬于該框架的配置文件的獨(dú)特的結(jié)構(gòu)、語(yǔ)法和語(yǔ)義,其可稱(chēng)為該框架的元模型。提 取框架配置模型實(shí)例需要根據(jù)一個(gè)框架所規(guī)定的配置文件的結(jié)構(gòu)、語(yǔ)法和語(yǔ)義來(lái)分析屬于 該框架的特定J2EE應(yīng)用的配置文件,從而獲得該配置文件中的各配置節(jié)點(diǎn)及其與程序代 碼單元之間的關(guān)系。對(duì)于XML格式的配置文件來(lái)說(shuō),可以將XML根節(jié)點(diǎn)之下的所有二級(jí)XML節(jié)點(diǎn)當(dāng)作配置節(jié)點(diǎn)。
      例如,以下示出了一個(gè)Struts配置文件的片段
      〈action path = iVLoginFormAction" type =“LoginAction“method = “Login”
      〈forward name = “success,,result = “List, jsp” >/action>
      該框架配置模型實(shí)例片段包括action節(jié)點(diǎn),結(jié)合Struts的語(yǔ)義,可以知道action 節(jié)點(diǎn)的path屬性的值表示一個(gè)ita “/LoginFormAction" , action節(jié)點(diǎn)的type屬性的值 表不一個(gè) ita uLoginAction “,action 節(jié)點(diǎn)的 method 屬性的值表不一個(gè) ita “Login “, action節(jié)點(diǎn)的forward子節(jié)點(diǎn)的name屬性的值表示一個(gè)ita “success”,action節(jié)點(diǎn)的 forward子節(jié)點(diǎn)的result屬性的值表示一個(gè)ita“List. jsp”。這些ITA之間隱含了 Struts 語(yǔ)法所定義的控制流關(guān)系。
      圖2示出了本發(fā)明基于框架的應(yīng)用程序的輔助編程方法的流程示意圖,所述應(yīng)用 程序包含程序文件和配置文件,該方法包括如下步驟
      在步驟201中,將應(yīng)用程序歷史庫(kù)的配置文件按框架類(lèi)型處理為配置文件分類(lèi) 庫(kù)。可通過(guò)收集基于框架的應(yīng)用程序構(gòu)建該應(yīng)用程序歷史庫(kù),該歷史代碼庫(kù)中所包括的 基于框架的應(yīng)用程序主要包括但不限于以下幾個(gè)來(lái)源每個(gè)框架提供者網(wǎng)站所提供代碼 庫(kù),可通過(guò)爬蟲(chóng)程序自動(dòng)下載;開(kāi)源社區(qū)所提供的各種基于框架的代碼,例如Google code association所提供的代碼庫(kù);非官方發(fā)布的各種基于框架的代碼,例如,在歷史項(xiàng)目中自 寫(xiě)的經(jīng)過(guò)嚴(yán)格測(cè)試的代碼,或者,經(jīng)典教科書(shū)里面提供的例子的程序,可通過(guò)該教科書(shū)附帶 的光盤(pán)或者以網(wǎng)絡(luò)下載的方式獲得。
      在一個(gè)實(shí)施方式中,可根據(jù)不同框架配置文件標(biāo)簽的不同對(duì)配置文件進(jìn)行分類(lèi), 例如,根據(jù)Structs中所獨(dú)有action標(biāo)簽,iBatis所獨(dú)有的resultMap等標(biāo)簽進(jìn)行分類(lèi), 或者其它特定于框架類(lèi)型的標(biāo)簽。所屬領(lǐng)域技術(shù)人員還可以采用其他根據(jù)框架類(lèi)型處理為 配置文件分類(lèi)庫(kù)的實(shí)施方式。
      在步驟202中,根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合,并確定所述閉 合頻繁子樹(shù)的支持度。所述閉合頻繁子樹(shù)也稱(chēng)為閉合頻繁子樹(shù)模式(Closet Frequent Tree Pattern, CTP),是對(duì)所述配置文件分類(lèi)庫(kù)進(jìn)行閉合頻繁子樹(shù)挖掘得到的,所挖掘出來(lái) 的閉合頻繁子樹(shù)包含根節(jié)點(diǎn)并且具有支持度信息。配置文件通常采用XML格式,但所屬領(lǐng) 域技術(shù)人員明了本申請(qǐng)的技術(shù)方案也適用于采用其它格式的配置文件。
      支持度是所屬領(lǐng)域技術(shù)人員在進(jìn)行構(gòu)建頻繁樹(shù)時(shí)常用的指標(biāo),是在所有同類(lèi)型的 文件中,出現(xiàn)所述子樹(shù)的文件數(shù)占總文件數(shù)的比例,當(dāng)構(gòu)建配置文件的頻繁樹(shù)時(shí),用配置文 件的數(shù)量計(jì)算支持度,在構(gòu)建程序文件的頻繁樹(shù)時(shí),用程序文件的數(shù)量計(jì)算支持度。
      在步驟203中,提供所述閉合頻繁子樹(shù)集合及所述支持度用于輔助編程。在一個(gè) 實(shí)施方式中,在該步驟之后還進(jìn)一步包括,根據(jù)所述提供的閉合頻繁子樹(shù)集合及所述支持 度在編制新配置文件時(shí)推薦或驗(yàn)證代碼結(jié)構(gòu)。其中,所述推薦或驗(yàn)證代碼結(jié)構(gòu)包括提取當(dāng) 前編程的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù);在所述閉合頻繁子樹(shù)中查詢(xún)與所述前綴樹(shù) 匹配的子樹(shù);根據(jù)所述匹配的子樹(shù)及其支持度推薦或驗(yàn)證代碼結(jié)構(gòu),例如,可直接按照具備 最高支持度的子樹(shù)結(jié)構(gòu)進(jìn)行推薦或驗(yàn)證,還可以按照支持度將匹配的子樹(shù)進(jìn)行排序。步驟 201至202既可離線進(jìn)行也可在線進(jìn)行。
      在圖2所述的流程的基礎(chǔ)上還可做以下進(jìn)一步的改進(jìn)
      在步驟202中,還包括根據(jù)所述應(yīng)用程序歷史庫(kù)的程序文件部分構(gòu)建語(yǔ)法樹(shù)集 合,并根據(jù)所述閉合頻繁子樹(shù)集合和所述語(yǔ)法樹(shù)集合建立關(guān)聯(lián)子樹(shù)集合,所述關(guān)聯(lián)子樹(shù)集 合包括至少一個(gè)相互關(guān)聯(lián)的閉合頻繁子樹(shù)和語(yǔ)法樹(shù)。
      語(yǔ)法樹(shù),也可稱(chēng)為語(yǔ)法樹(shù)模式(Syntax Trees Patterns, STP),作為程序的一種中 間表示形式,在程序分析等諸多領(lǐng)域有廣泛的應(yīng)用。利用抽象語(yǔ)法樹(shù)可以方便地實(shí)現(xiàn)多種 源程序處理工具,比如源程序?yàn)g覽器、智能編輯器、語(yǔ)言翻譯器等。如何生成抽象語(yǔ)法樹(shù)并 不是本發(fā)明的貢獻(xiàn),很多已有的工具均可用于生成抽象語(yǔ)法樹(shù)。語(yǔ)法樹(shù)模式會(huì)根據(jù)每個(gè)語(yǔ) 言格式有所不同,但其并不影響本申請(qǐng)的實(shí)施。在該步驟中所構(gòu)建的語(yǔ)法樹(shù)并不需是閉合 的,或是從根節(jié)點(diǎn)開(kāi)始,任意模式的語(yǔ)法樹(shù)均可。作為一個(gè)實(shí)施例,也可通過(guò)頻繁挖掘的獲 得程序文件部分的頻繁語(yǔ)法樹(shù)以構(gòu)建語(yǔ)法樹(shù)集合,可進(jìn)一步提高語(yǔ)法樹(shù)集合構(gòu)建的速度和 準(zhǔn)確度。
      在一個(gè)實(shí)施方式中,是針對(duì)所獲得的與配置文件有潛在關(guān)聯(lián)的代碼進(jìn)行的。例如, 獲得與配置文件當(dāng)中的屬性值(value)或者元素值(elements value)有相同字符串的代 碼片段以進(jìn)行語(yǔ)法樹(shù)的挖掘。
      在另一個(gè)實(shí)施方式中,還需確定每個(gè)關(guān)聯(lián)的置信度,并且所述置信度至少超過(guò)一 預(yù)定值,由此,當(dāng)這種關(guān)聯(lián)具有較高置信度時(shí),而且所關(guān)聯(lián)的CTP和STP本身也具有較高的 支持度,所建立的關(guān)聯(lián)也具有較高置信度。
      在所述步驟203還包括提供所述關(guān)聯(lián)子樹(shù)集合用于輔助編程。在一個(gè)實(shí)施方式 中,根據(jù)關(guān)聯(lián)輔助編程是在編制新配置文件時(shí)進(jìn)行屬性值的推薦或驗(yàn)證,按照一個(gè)實(shí)施例, 所述屬性值的推薦或驗(yàn)證包括提取當(dāng)前編程的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù);在 所述閉合頻繁子樹(shù)中查詢(xún)與所述前綴樹(shù)匹配的子樹(shù);根據(jù)所述匹配的子樹(shù)以及與其關(guān)聯(lián)的 語(yǔ)法樹(shù)進(jìn)行屬性值的推薦或驗(yàn)證。因此,可以通過(guò)代碼部分的上下文和配置文件部分的上 下文進(jìn)行推薦。還可以通過(guò)兩種模式之間的關(guān)聯(lián),驗(yàn)證已完成的代碼是否符合常用的關(guān)聯(lián) 模式,是否可能會(huì)蘊(yùn)藏錯(cuò)誤。
      圖3示出按照一實(shí)施方式根據(jù)配置文件分類(lèi)庫(kù)構(gòu)建CTP集合的流程
      步驟301,從已經(jīng)分類(lèi)好的配置文件庫(kù)開(kāi)始分析。
      步驟302,從每個(gè)配置文件開(kāi)始構(gòu)造子樹(shù)集合,該子樹(shù)集合中至少具有包含根節(jié)點(diǎn) 的子樹(shù)。同時(shí)從根節(jié)點(diǎn)和子節(jié)點(diǎn)開(kāi)始構(gòu)建子集的話(huà),可以提高速度。在另一個(gè)實(shí)施例中,該 子樹(shù)集合全部由包含根節(jié)點(diǎn)的子樹(shù)構(gòu)成,但相比與與組合的子樹(shù)結(jié)合,速度會(huì)慢些。
      步驟303,保留滿(mǎn)足最小支持度的子樹(shù)。在所有同類(lèi)型的配置文件中,出現(xiàn)了某一 個(gè)子樹(shù)的文件個(gè)數(shù)占總文件數(shù)的比例稱(chēng)為支持度。最小支持度(Minimum Support,簡(jiǎn)稱(chēng)為 minsup)是根據(jù)具體情況設(shè)定的一個(gè)閾值。
      步驟304,對(duì)步驟303保留的子樹(shù)進(jìn)行合并,返回步驟303繼續(xù),直到無(wú)法合并或者 合并后沒(méi)有滿(mǎn)足最小Support的子樹(shù)。將有公共子結(jié)構(gòu)的子樹(shù)合并后生成新的子樹(shù)。
      步驟305,前一輪的得到新子樹(shù)就是結(jié)果集合。
      在該流程中,由于一直會(huì)執(zhí)行到?jīng)]法合并出新的滿(mǎn)足支持度要求的更大的CTP,所 以在最后的一輪中的到的CTP就是閉合的,因此,閉合特指挖掘到的是最大的頻繁子樹(shù)集 合,并不是只有一個(gè),只要閉合頻繁子樹(shù)之間沒(méi)有交集即可。而從一開(kāi)始構(gòu)造CTP的時(shí)候, 我們就只會(huì)考慮滿(mǎn)足支持度要求的CTP,當(dāng)CTP進(jìn)行合并變大的時(shí)候,每次也會(huì)考察新的合并以后的CTP的支持度的情況。所以這樣既可以提高找到符合預(yù)定支持度的CTP的速度。因 此,根據(jù)以上描述的實(shí)施例,可以確定出閉合頻繁子樹(shù)的挖掘過(guò)程至少需包括的步驟根據(jù) 所述配置文件分類(lèi)庫(kù)中的配置文件構(gòu)造子樹(shù)集合;將所述子樹(shù)集合中有公共子結(jié)構(gòu)并滿(mǎn)足 所述最小支持度的子樹(shù)合并后生成新子樹(shù)集合,保留其中滿(mǎn)足所述最小支持度的新子樹(shù), 重復(fù)所述合并及保留步驟直至無(wú)法合并或無(wú)法合并出滿(mǎn)足所述最小支持度的新子樹(shù);在前 一輪生成的所述新子樹(shù)就是所述閉合頻繁子樹(shù)集合。
      圖4示出按照一實(shí)施方式建立CTP和STP關(guān)聯(lián)的流程圖,包括步驟
      步驟401,獲取所述閉合頻繁子樹(shù)集合中滿(mǎn)足最小支持度的閉合頻繁子樹(shù)子集。最 小支持度是根據(jù)具體的要求人為設(shè)定的,在一個(gè)實(shí)施例中,最小支持度例如是70%。
      步驟402,獲取所述語(yǔ)法樹(shù)中滿(mǎn)足最小支持度的語(yǔ)法樹(shù)子集;
      步驟403,根據(jù)所述閉合頻繁子樹(shù)子集和所述語(yǔ)法樹(shù)子集中具有相同屬性值的附 屬節(jié)點(diǎn)建立所述關(guān)聯(lián)子樹(shù)集合。為方便說(shuō)明,閉合頻繁子樹(shù)集合中某個(gè)閉合頻繁子樹(shù)用CTP 表示,語(yǔ)法樹(shù)集合中某個(gè)語(yǔ)法樹(shù)用STP表示,用CTP. node表示CTP的一個(gè)附屬節(jié)點(diǎn),用STP. node表示STP的一個(gè)附屬節(jié)點(diǎn)。當(dāng)CTP. node的屬性值value (CTP. node)等于STP. node的 屬性值 value (STP. node)時(shí),就是通過(guò) value (CTP. node) = value (STP. node)建立了一個(gè) CTP和STP關(guān)于該附屬節(jié)點(diǎn)的關(guān)聯(lián)。因此,關(guān)聯(lián)子樹(shù)集合是由關(guān)于特定附屬節(jié)點(diǎn)相互關(guān)聯(lián)的 閉合頻繁子樹(shù)和語(yǔ)法樹(shù)組成的。這樣的話(huà),在CTP中的某個(gè)產(chǎn)生關(guān)聯(lián)的附屬節(jié)點(diǎn)處,就會(huì)有 相關(guān)聯(lián)的具有STP結(jié)構(gòu)的源代碼,而這個(gè)關(guān)聯(lián)的源代碼中就會(huì)有相應(yīng)的字符串和具有關(guān)聯(lián) CTP結(jié)構(gòu)的配置文件中的對(duì)應(yīng)位置的屬性值相同,據(jù)此可進(jìn)行代碼的推薦或檢查。
      在一個(gè)實(shí)施例中這種關(guān)聯(lián)還可滿(mǎn)足一定的置信度。在另一個(gè)實(shí)施例中,作為可選 的步驟,如果多個(gè)CTP和STP之間的關(guān)于某個(gè)附屬節(jié)點(diǎn)的關(guān)聯(lián)在同一個(gè)基于框架的應(yīng)用程 序中出現(xiàn),可進(jìn)行合并。雖然這這些關(guān)于某個(gè)附屬節(jié)點(diǎn)的關(guān)聯(lián)產(chǎn)生關(guān)聯(lián)的節(jié)點(diǎn)不相等,但如 果他們?cè)谕粋€(gè)基于框架的應(yīng)用程序中出現(xiàn)的概率也大于最小置信度,那么這種關(guān)聯(lián)就可 以合并。
      接下來(lái)對(duì)置信度加以介紹,首先對(duì)申請(qǐng)所涉及的支持度(Support),置信度 (Confidence),匹配度(Match)等幾個(gè)概念進(jìn)行區(qū)分,其中支持度用于在頻繁子樹(shù)挖掘過(guò) 程中描述頻繁的程度,置信度用于描述關(guān)聯(lián)的一種條件概率,即所建立的關(guān)于某個(gè)附屬節(jié) 點(diǎn)關(guān)聯(lián)可信任的程度。舉例而言,Support (CTP)表示該CTP在所有工程(Pro ject,在本申請(qǐng) 中一個(gè)工程特指一個(gè)基于框架的應(yīng)用程序)相應(yīng)文件(對(duì)于CTP而言,就是配置文件)中出 現(xiàn)的概率,假如代碼庫(kù)中有10個(gè)工程,其中8個(gè)工程的配置文件出現(xiàn)CTP,則Support (CTP) 是80%,類(lèi)似的,可以得到STP的支持度。匹配度是用來(lái)描述在同一個(gè)工程中出現(xiàn)某個(gè)CTP 和某個(gè)STP具有一個(gè)相同屬性值的附屬節(jié)點(diǎn)的概率,即,CTP和STP關(guān)于該附屬節(jié)點(diǎn)關(guān)聯(lián)的 概率。例如,CTP出現(xiàn)了 10次,STP出現(xiàn)了 15次,其中CTP出現(xiàn)的10次中有8次和STP在 某個(gè)附屬節(jié)點(diǎn)出的屬性值相等,則Match (Value (CTP. node) = Value (STP. Node) = 8/10=80% o
      可用公式Support (Match ((Value (CTP. node) = Value (STP. Node)) > MinMatch)) 來(lái)表示所有的工程中,滿(mǎn)足Match ((Value (CTP. node) = Value (STP. Node))大于某個(gè)預(yù)定 的最小匹配度(MinMatch)的概率。例如,在10個(gè)工程中,有6個(gè)工程都可以滿(mǎn)足,那么 Support (Match (CTP, STP) > MinMatch)就是 6/10 = 60%。
      進(jìn)而,置信度用公式表示為=Confidenc(CTP, STP (CTP. Node, STP. Node))= Support (Match(Value(CTP. node) = Value(STP. Node)) > MatchThreshhold)/Support(C TP)。
      該公式表示CTP和STP在CTP. Node和STP. Node有關(guān)聯(lián),當(dāng)這個(gè)關(guān)聯(lián)的置信度滿(mǎn) 足預(yù)設(shè)的最小置信度時(shí),就可以確定這是一個(gè)有效的關(guān)聯(lián)。
      對(duì)于上面的例子,Confidenc(CTP, STP (CTP. Node, STP. Node)) = 60% /80% = 75%。如果最小置信度設(shè)置為60%,那么就是說(shuō)在60%的概率下當(dāng)出現(xiàn)了 CTP. node,那么 這個(gè)Node的值應(yīng)該和對(duì)應(yīng)的STP中的Node的值相等。
      圖5示出按照一實(shí)施方式實(shí)現(xiàn)輔助編程的流程,參看圖5,其中步驟501至步驟 506示出了進(jìn)行代碼推薦的實(shí)施方式
      在步驟501中,用戶(hù)通過(guò)快捷鍵Alt+/觸發(fā)代碼推薦。
      在步驟502中,提取當(dāng)前配置文件中當(dāng)前編輯焦點(diǎn)的前綴樹(shù)。其中,編輯焦點(diǎn)是當(dāng) 前光標(biāo)所在的位置,前綴樹(shù)是所獲取從當(dāng)前編輯語(yǔ)句中根節(jié)點(diǎn)到編輯焦點(diǎn)的路徑所對(duì)應(yīng)的 樹(shù)。
      在步驟503中,根據(jù)前綴樹(shù)來(lái)查詢(xún)到匹配的CTP的子樹(shù)。
      在步驟504中,推薦與所述前綴樹(shù)匹配的CTP結(jié)構(gòu),或者屬性值。如果當(dāng)前編輯焦 點(diǎn)需要輸入一個(gè)結(jié)構(gòu),則推薦相應(yīng)的結(jié)構(gòu),推薦的時(shí)候會(huì)選擇支持度最高的,匹配結(jié)構(gòu)相似 最好的作為候選;如果當(dāng)前前綴樹(shù)所在的位置需要填入屬性值,則根據(jù)所匹配的CTP以及 與其關(guān)聯(lián)的STP利用其關(guān)聯(lián)關(guān)系和以及步驟509所提供的代碼上下文信息推薦屬性值。
      在步驟505中,根據(jù)匹配的CTP的支持度進(jìn)行排序后返回。
      在步驟506中,提供CTP所對(duì)應(yīng)的代碼片段供程序員選擇。其中對(duì)于結(jié)構(gòu)化模式, 代碼片段為可以直接使用的XML片段,對(duì)于值模式,代碼片段為從CTP和STP關(guān)聯(lián)在當(dāng)前代 碼的上下文中提取出來(lái)的值。
      圖5中步驟507至步驟510是按照一個(gè)實(shí)施例示出代碼檢查及驗(yàn)證實(shí)施方式
      在步驟507中,通過(guò)快捷鍵Ctrl+S觸發(fā)對(duì)配置文件的進(jìn)行檢查的請(qǐng)求。
      在步驟508中,遍歷配置文件中所有的子樹(shù),對(duì)于其中不符合CTP的子樹(shù),需要進(jìn) 行警告;對(duì)于其中符合CTP的部分,則進(jìn)入步驟509進(jìn)行處理。
      在步驟509中,獲得當(dāng)前項(xiàng)目上下文代碼的語(yǔ)法樹(shù),該語(yǔ)法樹(shù)即可用于代碼推薦 的步驟504中,也可用于步驟510的代碼檢查中。是用在配置文件中,凡是有這樣的一個(gè)配 置結(jié)構(gòu)的地方需要有一個(gè)相應(yīng)的代碼與其相關(guān)聯(lián),從當(dāng)前正在編輯的代碼的上下文中找到 與當(dāng)前正在編輯的配置文件的結(jié)構(gòu)相關(guān)的代碼片段,用于參考或推薦。
      在步驟510中,檢查所有的屬性值所在的子樹(shù)是不是符合CTP和STP的關(guān)聯(lián),若不 是,那么也需要進(jìn)行警告。
      在步驟511中,返回所有的警告。
      通過(guò)在圖1所示的計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)圖2至圖5所示的方法流程,本申請(qǐng)還可體 現(xiàn)為一種用于基于框架的應(yīng)用程序的編程輔助裝置,所述應(yīng)用程序包含程序文件和配置文 件。
      該編程輔助裝置包括配置為將應(yīng)用程序歷史庫(kù)的配置文件按框架類(lèi)型處理為配 置文件分類(lèi)庫(kù)的部件;配置為根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合,并確定所述閉合頻繁子樹(shù)的支持度的部件;配置為提供所述閉合頻繁子樹(shù)集合及所述支持度用于輔 助編程的部件。
      在一個(gè)實(shí)施例中,還包括配置為根據(jù)所述應(yīng)用程序歷史庫(kù)的程序文件部分構(gòu)建 語(yǔ)法樹(shù)集合,并根據(jù)所述閉合頻繁子樹(shù)集合和所述語(yǔ)法樹(shù)集合建立關(guān)聯(lián)子樹(shù)集合,所述關(guān) 聯(lián)子樹(shù)集合包括至少一個(gè)相互關(guān)聯(lián)的閉合頻繁子樹(shù)和語(yǔ)法樹(shù)的部件;配置為提供所述關(guān)聯(lián) 子樹(shù)集合用于輔助編程的部件。
      在一個(gè)實(shí)施例中,所述閉合頻繁子樹(shù)具有根節(jié)點(diǎn)并且滿(mǎn)足預(yù)定的最小支持度。
      在另一個(gè)實(shí)施例中,所述配置為根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集 合,并確定所述閉合頻繁子樹(shù)的支持度的部件包括配置為從所述配置文件分類(lèi)庫(kù)中的配 置文件的根節(jié)點(diǎn)開(kāi)始構(gòu)造子樹(shù)集合的部件;配置為將所述子樹(shù)集合中有公共子結(jié)構(gòu)并且滿(mǎn) 足預(yù)定的最小支持度的子樹(shù)進(jìn)行合并后生成新子樹(shù)的集合,保留其中滿(mǎn)足所述最小支持度 的新子樹(shù),重復(fù)所述合并及保留步驟直至無(wú)法合并出滿(mǎn)足所述最小支持度的更大的新子樹(shù) 的部件;配置為根據(jù)前一輪生成的新子樹(shù)確定所述閉合頻繁子樹(shù)集合的部件。
      在另一個(gè)實(shí)施例中,所述根據(jù)所述閉合頻繁子樹(shù)集合和所述語(yǔ)法樹(shù)集合建立關(guān)聯(lián) 子樹(shù)集合的部件包括配置為獲取所述閉合頻繁子樹(shù)集合中滿(mǎn)足最小支持度的閉合頻繁子 樹(shù)子集的部件;配置為獲取所述語(yǔ)法樹(shù)中滿(mǎn)足最小支持度的語(yǔ)法樹(shù)子集的部件;配置為根 據(jù)所述閉合頻繁子樹(shù)子集和所述語(yǔ)法樹(shù)子集中的附屬節(jié)點(diǎn)具有相同的屬性值建立所述關(guān) 聯(lián)子樹(shù)集合的部件。
      在另一個(gè)實(shí)施例中,還包括,配置為根據(jù)所述提供的閉合頻繁子樹(shù)集合及所述支 持度在編制新配置文件時(shí)推薦或驗(yàn)證代碼結(jié)構(gòu)的部件。
      在另一個(gè)實(shí)施例中,所述推薦或驗(yàn)證代碼結(jié)構(gòu)的部件包括配置為提取當(dāng)前編程 的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù)的部件;配置為在所述閉合頻繁子樹(shù)中查詢(xún)與所述 前綴樹(shù)匹配的子樹(shù)的部件;配置為根據(jù)所述匹配的子樹(shù)及其支持度推薦或驗(yàn)證代碼結(jié)構(gòu)的 部件。
      在另一個(gè)實(shí)施例中,還包括,配置為根據(jù)所述提供的關(guān)聯(lián)子樹(shù)集合在編制新配置 文件時(shí)推薦或驗(yàn)證屬性值的部件。例如,所述推薦或驗(yàn)證屬性值的部件包括配置為提取當(dāng) 前編程的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù)的部件;配置為在所述閉合頻繁子樹(shù)中查詢(xún) 與所述前綴樹(shù)匹配的子樹(shù)的部件;配置為根據(jù)所述匹配的頻繁子樹(shù)以及與其關(guān)聯(lián)的語(yǔ)法樹(shù) 進(jìn)行屬性值的推薦或驗(yàn)證的部件。
      本申請(qǐng)是一種對(duì)基于配置化框架的編程模式中輔助程序員進(jìn)行編程的技術(shù)方案, 可輔助于其中配置文件的編碼。通過(guò)動(dòng)態(tài)匹配新配置文件的子樹(shù)與閉合頻繁子樹(shù)所表示 的熱點(diǎn)結(jié)構(gòu)模式,可建議程序員正確的配置文件單元;還可通過(guò)與其關(guān)聯(lián)的語(yǔ)法樹(shù)建議 程序員配置文件單元正確的值。因此,采用本申請(qǐng)的技術(shù)方案可以重用或挖掘熱點(diǎn)用戶(hù) (Hotspot)的經(jīng)驗(yàn)進(jìn)行編程的輔助,所述熱點(diǎn)用戶(hù)所提供的代碼會(huì)被經(jīng)常使用,其代碼具有 很好的結(jié)構(gòu)邏輯組合,能夠提供很好的性能。
      接下來(lái),將以一個(gè)具體的例子說(shuō)明上述技術(shù)方案的實(shí)行,該例子并不是為了限制 本申請(qǐng)的保護(hù)范圍。
      圖6示出了代碼的示例,該代碼可以自前述代碼庫(kù)的幾種來(lái)源之一,其中包括的 代碼包括用于登錄的Login, jsp,以及在列表代碼List, jsp中的Dele\Creat\Retrieve\Update等相應(yīng)功能的代碼。
      以下代碼是ibatis框架的配置文件的一個(gè)片段,所屬領(lǐng)域技術(shù)人員明了的是,該段配置文件是進(jìn)行CTP挖掘的分類(lèi)配置文件庫(kù)的一部分。
      權(quán)利要求
      1.一種用于基于框架的應(yīng)用程序的編程輔助方法,所述應(yīng)用程序包含程序文件和配置文件,包括將應(yīng)用程序歷史庫(kù)的配置文件按框架類(lèi)型處理為配置文件分類(lèi)庫(kù);根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合,并確定所述閉合頻繁子樹(shù)的支持度;提供所述閉合頻繁子樹(shù)集合及所述支持度用于輔助編程。
      2.如權(quán)利要求1所述的方法,還包括根據(jù)所述應(yīng)用程序歷史庫(kù)的程序文件部分構(gòu)建語(yǔ)法樹(shù)集合,并根據(jù)所述閉合頻繁子樹(shù)集合和所述語(yǔ)法樹(shù)集合建立關(guān)聯(lián)子樹(shù)集合,所述關(guān)聯(lián)子樹(shù)集合包括至少一個(gè)相互關(guān)聯(lián)的閉合頻繁子樹(shù)和語(yǔ)法樹(shù);提供所述關(guān)聯(lián)子樹(shù)集合用于輔助編程。
      3.如權(quán)利要求1所述的方法,所述閉合頻繁子樹(shù)具有根節(jié)點(diǎn)并且滿(mǎn)足預(yù)定的最小支持度。
      4.如權(quán)利要求3所述的方法,根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合的步驟包括根據(jù)所述配置文件分類(lèi)庫(kù)中的配置文件構(gòu)造子樹(shù)集合,所述子樹(shù)集合中至少具有包含根節(jié)點(diǎn)的子樹(shù);將所述子樹(shù)集合中有公共子結(jié)構(gòu)并滿(mǎn)足所述最小支持度的子樹(shù)合并后生成新子樹(shù)集合,保留其中滿(mǎn)足所述最小支持度的新子樹(shù),重復(fù)所述合并及保留步驟直至無(wú)法合并或無(wú)法合并出滿(mǎn)足所述最小支持度的新子樹(shù);根據(jù)前一輪生成的新子樹(shù)確定所述閉合頻繁子樹(shù)集合。
      5.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述閉合頻繁子樹(shù)集合和所述語(yǔ)法樹(shù)集合建立關(guān)聯(lián)子樹(shù)集合包括獲取所述閉合頻繁子樹(shù)集合中滿(mǎn)足最小支持度的閉合頻繁子樹(shù)子集;獲取所述語(yǔ)法樹(shù)中滿(mǎn)足最小支持度的語(yǔ)法樹(shù)子集;根據(jù)所述閉合頻繁子樹(shù)子集和所述語(yǔ)法樹(shù)子集中具有相同屬性值的附屬節(jié)點(diǎn)建立所述關(guān)聯(lián)子樹(shù)集合。
      6.如權(quán)利要求2所述的方法,其特征在于,針對(duì)與所述配置文件相關(guān)的代碼構(gòu)建所述語(yǔ)法樹(shù)集合。
      7.如權(quán)利要求1所述的方法,還包括,根據(jù)所述提供的閉合頻繁子樹(shù)集合及所述支持度在編制新配置文件時(shí)推薦或驗(yàn)證代碼結(jié)構(gòu)。
      8.如權(quán)利要求7所述的方法,所述推薦或驗(yàn)證代碼結(jié)構(gòu)包括提取當(dāng)前編程的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù);在所述閉合頻繁子樹(shù)中查詢(xún)與所述前綴樹(shù)匹配的子樹(shù);根據(jù)所述匹配的子樹(shù)及其支持度推薦或驗(yàn)證代碼結(jié)構(gòu)。
      9.如權(quán)利要求2所述的方法,還包括,根據(jù)所述提供的關(guān)聯(lián)子樹(shù)集合在編制新配置文件時(shí)推薦或驗(yàn)證屬性值。
      10.如權(quán)利要求9所述的方法,其特征在于所述推薦或驗(yàn)證屬性值包括提取當(dāng)前編程的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù);在所述閉合頻繁子樹(shù)中查詢(xún)與所述前綴樹(shù)匹配的子樹(shù);根據(jù)所述匹配的頻繁子樹(shù)以及與其關(guān)聯(lián)的語(yǔ)法樹(shù)進(jìn)行屬性值的推薦或驗(yàn)證。
      11.一種用于基于框架的應(yīng)用程序的編程輔助裝置,所述應(yīng)用程序包含程序文件和配置文件,包括配置為將應(yīng)用程序歷史庫(kù)的配置文件按框架類(lèi)型處理為配置文件分類(lèi)庫(kù)的部件; 配置為根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合,并確定所述閉合頻繁子樹(shù)的支持度的部件;配置為提供所述閉合頻繁子樹(shù)集合及所述支持度用于輔助編程的部件。
      12.如權(quán)利要求11所述的裝置,還包括配置為根據(jù)所述應(yīng)用程序歷史庫(kù)的程序文件部分構(gòu)建語(yǔ)法樹(shù)集合,并根據(jù)所述閉合頻繁子樹(shù)集合和所述語(yǔ)法樹(shù)集合建立關(guān)聯(lián)子樹(shù)集合,所述關(guān)聯(lián)子樹(shù)集合包括至少一個(gè)相互關(guān)聯(lián)的閉合頻繁子樹(shù)和語(yǔ)法樹(shù)的部件;配置為提供所述關(guān)聯(lián)子樹(shù)集合用于輔助編程的部件。
      13.如權(quán)利要求11所述的裝置,所述閉合頻繁子樹(shù)具有根節(jié)點(diǎn)并且滿(mǎn)足預(yù)定的最小支持度。
      14.如權(quán)利要求13所述的裝置,所述配置為根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合,并確定所述閉合頻繁子樹(shù)的支持度的部件包括配置為從所述配置文件分類(lèi)庫(kù)中的配置文件構(gòu)造子樹(shù)集合的部件,所述子樹(shù)集合中至少具有包含根節(jié)點(diǎn)的子樹(shù)。;配置為將所述子樹(shù)集合中有公共子結(jié)構(gòu)并且滿(mǎn)足預(yù)定的最小支持度的子樹(shù)進(jìn)行合并后生成新子樹(shù)的集合,保留其中滿(mǎn)足所述最小支持度的新子樹(shù),重復(fù)所述合并及保留步驟直至無(wú)法合并出滿(mǎn)足所述最小支持度的更大的新子樹(shù)的部件;配置為根據(jù)前一輪生成的新子樹(shù)確定所述閉合頻繁子樹(shù)集合的部件。
      15.如權(quán)利要求12所述的裝置,其特征在于,所述根據(jù)所述閉合頻繁子樹(shù)集合和所述語(yǔ)法樹(shù)集合建立關(guān)聯(lián)子樹(shù)集合的部件包括配置為獲取所述閉合頻繁子樹(shù)集合中滿(mǎn)足最小支持度的閉合頻繁子樹(shù)子集的部件;配置為獲取所述語(yǔ)法樹(shù)中滿(mǎn)足最小支持度的語(yǔ)法樹(shù)子集的部件;配置為根據(jù)所述閉合頻繁子樹(shù)子集和所述語(yǔ)法樹(shù)子集中具有相同屬性值的附屬節(jié)點(diǎn)建立所述關(guān)聯(lián)子樹(shù)集合的部件。
      16.如權(quán)利要求12所述的裝置,其特征在于,針對(duì)與所述配置文件相關(guān)的代碼構(gòu)建所述語(yǔ)法樹(shù)集合。
      17.如權(quán)利要求11所述的裝置,包括,配置為根據(jù)所述提供的閉合頻繁子樹(shù)集合及所述支持度在編制新配置文件時(shí)推薦或驗(yàn)證代碼結(jié)構(gòu)的部件。
      18.如權(quán)利要求17所述的裝置,所述推薦或驗(yàn)證代碼結(jié)構(gòu)的部件包括配置為提取當(dāng)前編程的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù)的部件;配置為在所述閉合頻繁子樹(shù)中查詢(xún)與所述前綴樹(shù)匹配的子樹(shù)的部件;配置為根據(jù)所述匹配的子樹(shù)及其支持度推薦或驗(yàn)證代碼結(jié)構(gòu)的部件。
      19.如權(quán)利要求12所述的裝置,還包括,配置為根據(jù)所述提供的關(guān)聯(lián)子樹(shù)集合在編制新配置文件時(shí)推薦或驗(yàn)證屬性值的部件。
      20.如權(quán)利要求19所述的裝置,其特征在于所述推薦或驗(yàn)證屬性值的部件包括 配置為提取當(dāng)前編程的所述新配置文件中編輯焦點(diǎn)的前綴樹(shù)的部件;配置為在所述閉合頻繁子樹(shù)中查詢(xún)與所述前綴樹(shù)匹配的子樹(shù)的部件;配置為根據(jù)所述匹配的頻繁子樹(shù)以及與其關(guān)聯(lián)的語(yǔ)法樹(shù)進(jìn)行屬性值的推薦或驗(yàn)證的部件。
      全文摘要
      本發(fā)明提出了一種用于基于框架的應(yīng)用程序的編程輔助技術(shù)方案,所述應(yīng)用程序包含程序文件和配置文件,包括將應(yīng)用程序歷史庫(kù)的配置文件按框架類(lèi)型處理為配置文件分類(lèi)庫(kù);根據(jù)所述配置文件分類(lèi)庫(kù)構(gòu)建閉合頻繁子樹(shù)集合,并確定所述閉合頻繁子樹(shù)的支持度;提供所述閉合頻繁子樹(shù)集合及所述支持度用于輔助編程。采用本發(fā)明的方案可以輔助基于框架的應(yīng)用程序的編程。
      文檔編號(hào)G06F17/30GK102999318SQ201110264470
      公開(kāi)日2013年3月27日 申請(qǐng)日期2011年9月8日 優(yōu)先權(quán)日2011年9月8日
      發(fā)明者黃勝, 李少春, 朱俊, 樓鳴, 齊軼, 劉 英 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1