辅助编程的方法及装置的制作方法

文档序号:6432652阅读:308来源:国知局
专利名称:辅助编程的方法及装置的制作方法
技术领域
本发明涉及辅助编程的技术领域,特别涉及一种改善了的辅助编程的方法和装置。
背景技术
在当前商业应用开发环境中,基于框架的应用程序非常广泛,例如J2EE是其中最 为流行的一种基于框架的应用。在基于框架的应用中,应用逻辑不仅存在于代码中,而且存 在于框架配置文件中,例如,Struts, iBatis, Spring等框架配置文件。
采用框架会带来很多好处,但仍然面临着着以下问题框架的种类众多,不同的框 架有自己的语法,对新手来说,每个都需要一定的学习时间;现有的框架中大多数都是来自 开源社区的开源软件,文档可能会不完整或者已经过时,程序员也没有时间完全掌握。
由此可见,现有的技术仍然存在着改进的空间,迫切的需要一种改进了的辅助编 程的技术方案。发明内容
根据本发明的第一个方面,提供了一种用于基于框架的应用程序的编程辅助方 法,所述应用程序包含程序文件和配置文件,包括将应用程序历史库的配置文件按框架类 型处理为配置文件分类库;根据所述配置文件分类库构建闭合频繁子树集合,并确定所述 闭合频繁子树的支持度;提供所述闭合频繁子树集合及所述支持度用于辅助编程。
根据本发明的第二个方面,提供了一种用于基于框架的应用程序的编程辅助装 置,所述应用程序包含程序文件和配置文件,包括配置为将应用程序历史库的配置文件按 框架类型处理为配置文件分类库的部件;配置为根据所述配置文件分类库构建闭合频繁子 树集合,并确定所述闭合频繁子树的支持度的部件;配置为提供所述闭合频繁子树集合及 所述支持度用于辅助编程的部件。
采用本申请的技术方案可辅助基于框架的应用程序的编程。


所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附 图阅读下面对说明性的实施例的详细说明可更好地理解发明本身以及其优选使用模式、目 标、特征以及优点,在附图中
图1示出用来实现本发明实施方式的示例性计算系统100的框图。
图2示出本发明基于框架的应用程序的辅助编程方法的流程。
图3示出按照一实施方式根据配置文件分类库构建CTP集合的流程。
图4示出按照一实施方式建立CTP和STP关联的流程图
图5示出按照一实施方式实现辅助编程的流程
图6示出按照一实施方式中代码的示意
图7示出按照一实施方式针对示例性的配置文件生成CTP的示意
图8示出按照一实施方式针对示例性的代码片段生成STP的示意
图9示出按照一实施方式建立关联的示意图
图10按照一实施方式编码辅助示意图具体实施例
所属技术领域的技术人员知道,本发明可以体现为系统、方法或计算机程序产品。 因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻 留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的 组合。此外,本发明还可以采取体现在任何有形的表达介质(medium of expression)中的 计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机 可读信号介质或计算机可读存储介质,计算机可读存储介质例如可以是——但不限于—— 电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质、或前述各项 的任何适当的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下 有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储 器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器 (CD-ROM)、光存储器件、磁存储器件、或前述各项的任何适当的组合。在本文语境中,计算机 可读存储介质可以是任何含有或存储供指令执行系统、装置或器件使用的或与指令执行系 统、装置或器件相联系的程序的有形介质。
计算机可读信号介质可以包括例如在基带中或作为载波的一部分传播的带有计 算机可读程序代码的数据信号。这样一种传播信号可以采取任何适当的形式,包括-但不 限于-电磁的、光的或其任何适当的组合。计算机可读信号介质可以是不同于计算机可读 存储介质的、可以传达、传播或传输供指令执行系统、装置或器件使用的或与指令执行系 统、装置或器件相联系的程序的任何一种计算机可读介质。
包含在计算机可读介质中的程序代码可以采用任何适当的介质传输,包括-但不 限于-无线、有线、光缆、射频等等、或上述各项的任何适当的组合。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何 组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++ 之类,还包括常规的过程式程序设计语言-诸如”C”程序设计语言或类似的程序设计语 言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立 的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网 (LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通 过因特网)连接到外部计算机。
以下参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述本发明。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中 各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算 机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规 定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置 以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包 括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means) 的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计 算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而 在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定 的功能/操作的过程。
现参看图1,示出了适于用来实现本发明实施方式的示例性计算系统100的框图。 如所示,计算机系统100可以包括CPU(中央处理单元)101、RAM(随机存取存储器)102、 ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器 107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部 设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。 硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串 行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与 显示控制器109耦合。应当理解,图1所述的结构框图仅仅为了示例的目的而示出的,而不 是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
以下以J2EE应用为例,以详细说明本发明的实施方式。所属技术领域的技术人员 应当明白,本发明并不限于J2EE应用的特定细节,基于J2EE应用的实施方式,完全可以推 广到其它基于框架的应用程序。
典型的J2EE 应用具有如下 6 层Web、Action、Service、DAO、Object 和 DB 层,每层 包括各自的程序代码单元。Web层为JSP。当用户通过JSP提交一个ActionForm从而与应 用交互时,Struts框架将根据配置文件struts-config. xml中的配置把该ActionForm传 递给Action层中特定的Action类。当该Action类执行完成后,结果字符串将根据同一个 配置文件中的配置将应用引导到下一个JSP。
框架配置文件用于描述一个框架下的特定J2EE应用的配置中的各配置节点中所 表示虚拟代码单元(即从配置文件中获得的代码单元)及其与程序代码单元之间的关系。 所述代码单元(包含虚拟代码单元和程序代码单元)可以是代码中的类、表单请求、JSP、函 数和变量等。代码单元集合可表示为ITAdT-Artifact的缩写,表示IT制品,其中ITA可 以分为两部分,一部分是程序代码单元集合CU,另一部分是虚拟代码单元集合VU),而单个 代码单元可表示为ita,这里的ita可以是一个表示一个程序代码单元),也可以 是一个VUi (VUi表示一个虚拟代码单元)。每一个框架(例如Spring, Struts, iBatis等) 都规定了属于该框架的配置文件的独特的结构、语法和语义,其可称为该框架的元模型。提 取框架配置模型实例需要根据一个框架所规定的配置文件的结构、语法和语义来分析属于 该框架的特定J2EE应用的配置文件,从而获得该配置文件中的各配置节点及其与程序代 码单元之间的关系。对于XML格式的配置文件来说,可以将XML根节点之下的所有二级XML节点当作配置节点。
例如,以下示出了一个Struts配置文件的片段
〈action path = iVLoginFormAction" type =“LoginAction“method = “Login”
〈forward name = “success,,result = “List, jsp” >/action>
该框架配置模型实例片段包括action节点,结合Struts的语义,可以知道action 节点的path属性的值表示一个ita “/LoginFormAction" , action节点的type属性的值 表不一个 ita uLoginAction “,action 节点的 method 属性的值表不一个 ita “Login “, action节点的forward子节点的name属性的值表示一个ita “success”,action节点的 forward子节点的result属性的值表示一个ita“List. jsp”。这些ITA之间隐含了 Struts 语法所定义的控制流关系。
图2示出了本发明基于框架的应用程序的辅助编程方法的流程示意图,所述应用 程序包含程序文件和配置文件,该方法包括如下步骤
在步骤201中,将应用程序历史库的配置文件按框架类型处理为配置文件分类 库。可通过收集基于框架的应用程序构建该应用程序历史库,该历史代码库中所包括的 基于框架的应用程序主要包括但不限于以下几个来源每个框架提供者网站所提供代码 库,可通过爬虫程序自动下载;开源社区所提供的各种基于框架的代码,例如Google code association所提供的代码库;非官方发布的各种基于框架的代码,例如,在历史项目中自 写的经过严格测试的代码,或者,经典教科书里面提供的例子的程序,可通过该教科书附带 的光盘或者以网络下载的方式获得。
在一个实施方式中,可根据不同框架配置文件标签的不同对配置文件进行分类, 例如,根据Structs中所独有action标签,iBatis所独有的resultMap等标签进行分类, 或者其它特定于框架类型的标签。所属领域技术人员还可以采用其他根据框架类型处理为 配置文件分类库的实施方式。
在步骤202中,根据所述配置文件分类库构建闭合频繁子树集合,并确定所述闭 合频繁子树的支持度。所述闭合频繁子树也称为闭合频繁子树模式(Closet Frequent Tree Pattern, CTP),是对所述配置文件分类库进行闭合频繁子树挖掘得到的,所挖掘出来 的闭合频繁子树包含根节点并且具有支持度信息。配置文件通常采用XML格式,但所属领 域技术人员明了本申请的技术方案也适用于采用其它格式的配置文件。
支持度是所属领域技术人员在进行构建频繁树时常用的指标,是在所有同类型的 文件中,出现所述子树的文件数占总文件数的比例,当构建配置文件的频繁树时,用配置文 件的数量计算支持度,在构建程序文件的频繁树时,用程序文件的数量计算支持度。
在步骤203中,提供所述闭合频繁子树集合及所述支持度用于辅助编程。在一个 实施方式中,在该步骤之后还进一步包括,根据所述提供的闭合频繁子树集合及所述支持 度在编制新配置文件时推荐或验证代码结构。其中,所述推荐或验证代码结构包括提取当 前编程的所述新配置文件中编辑焦点的前缀树;在所述闭合频繁子树中查询与所述前缀树 匹配的子树;根据所述匹配的子树及其支持度推荐或验证代码结构,例如,可直接按照具备 最高支持度的子树结构进行推荐或验证,还可以按照支持度将匹配的子树进行排序。步骤 201至202既可离线进行也可在线进行。
在图2所述的流程的基础上还可做以下进一步的改进
在步骤202中,还包括根据所述应用程序历史库的程序文件部分构建语法树集 合,并根据所述闭合频繁子树集合和所述语法树集合建立关联子树集合,所述关联子树集 合包括至少一个相互关联的闭合频繁子树和语法树。
语法树,也可称为语法树模式(Syntax Trees Patterns, STP),作为程序的一种中 间表示形式,在程序分析等诸多领域有广泛的应用。利用抽象语法树可以方便地实现多种 源程序处理工具,比如源程序浏览器、智能编辑器、语言翻译器等。如何生成抽象语法树并 不是本发明的贡献,很多已有的工具均可用于生成抽象语法树。语法树模式会根据每个语 言格式有所不同,但其并不影响本申请的实施。在该步骤中所构建的语法树并不需是闭合 的,或是从根节点开始,任意模式的语法树均可。作为一个实施例,也可通过频繁挖掘的获 得程序文件部分的频繁语法树以构建语法树集合,可进一步提高语法树集合构建的速度和 准确度。
在一个实施方式中,是针对所获得的与配置文件有潜在关联的代码进行的。例如, 获得与配置文件当中的属性值(value)或者元素值(elements value)有相同字符串的代 码片段以进行语法树的挖掘。
在另一个实施方式中,还需确定每个关联的置信度,并且所述置信度至少超过一 预定值,由此,当这种关联具有较高置信度时,而且所关联的CTP和STP本身也具有较高的 支持度,所建立的关联也具有较高置信度。
在所述步骤203还包括提供所述关联子树集合用于辅助编程。在一个实施方式 中,根据关联辅助编程是在编制新配置文件时进行属性值的推荐或验证,按照一个实施例, 所述属性值的推荐或验证包括提取当前编程的所述新配置文件中编辑焦点的前缀树;在 所述闭合频繁子树中查询与所述前缀树匹配的子树;根据所述匹配的子树以及与其关联的 语法树进行属性值的推荐或验证。因此,可以通过代码部分的上下文和配置文件部分的上 下文进行推荐。还可以通过两种模式之间的关联,验证已完成的代码是否符合常用的关联 模式,是否可能会蕴藏错误。
图3示出按照一实施方式根据配置文件分类库构建CTP集合的流程
步骤301,从已经分类好的配置文件库开始分析。
步骤302,从每个配置文件开始构造子树集合,该子树集合中至少具有包含根节点 的子树。同时从根节点和子节点开始构建子集的话,可以提高速度。在另一个实施例中,该 子树集合全部由包含根节点的子树构成,但相比与与组合的子树结合,速度会慢些。
步骤303,保留满足最小支持度的子树。在所有同类型的配置文件中,出现了某一 个子树的文件个数占总文件数的比例称为支持度。最小支持度(Minimum Support,简称为 minsup)是根据具体情况设定的一个阈值。
步骤304,对步骤303保留的子树进行合并,返回步骤303继续,直到无法合并或者 合并后没有满足最小Support的子树。将有公共子结构的子树合并后生成新的子树。
步骤305,前一轮的得到新子树就是结果集合。
在该流程中,由于一直会执行到没法合并出新的满足支持度要求的更大的CTP,所 以在最后的一轮中的到的CTP就是闭合的,因此,闭合特指挖掘到的是最大的频繁子树集 合,并不是只有一个,只要闭合频繁子树之间没有交集即可。而从一开始构造CTP的时候, 我们就只会考虑满足支持度要求的CTP,当CTP进行合并变大的时候,每次也会考察新的合并以后的CTP的支持度的情况。所以这样既可以提高找到符合预定支持度的CTP的速度。因 此,根据以上描述的实施例,可以确定出闭合频繁子树的挖掘过程至少需包括的步骤根据 所述配置文件分类库中的配置文件构造子树集合;将所述子树集合中有公共子结构并满足 所述最小支持度的子树合并后生成新子树集合,保留其中满足所述最小支持度的新子树, 重复所述合并及保留步骤直至无法合并或无法合并出满足所述最小支持度的新子树;在前 一轮生成的所述新子树就是所述闭合频繁子树集合。
图4示出按照一实施方式建立CTP和STP关联的流程图,包括步骤
步骤401,获取所述闭合频繁子树集合中满足最小支持度的闭合频繁子树子集。最 小支持度是根据具体的要求人为设定的,在一个实施例中,最小支持度例如是70%。
步骤402,获取所述语法树中满足最小支持度的语法树子集;
步骤403,根据所述闭合频繁子树子集和所述语法树子集中具有相同属性值的附 属节点建立所述关联子树集合。为方便说明,闭合频繁子树集合中某个闭合频繁子树用CTP 表示,语法树集合中某个语法树用STP表示,用CTP. node表示CTP的一个附属节点,用STP. node表示STP的一个附属节点。当CTP. node的属性值value (CTP. node)等于STP. node的 属性值 value (STP. node)时,就是通过 value (CTP. node) = value (STP. node)建立了一个 CTP和STP关于该附属节点的关联。因此,关联子树集合是由关于特定附属节点相互关联的 闭合频繁子树和语法树组成的。这样的话,在CTP中的某个产生关联的附属节点处,就会有 相关联的具有STP结构的源代码,而这个关联的源代码中就会有相应的字符串和具有关联 CTP结构的配置文件中的对应位置的属性值相同,据此可进行代码的推荐或检查。
在一个实施例中这种关联还可满足一定的置信度。在另一个实施例中,作为可选 的步骤,如果多个CTP和STP之间的关于某个附属节点的关联在同一个基于框架的应用程 序中出现,可进行合并。虽然这这些关于某个附属节点的关联产生关联的节点不相等,但如 果他们在同一个基于框架的应用程序中出现的概率也大于最小置信度,那么这种关联就可 以合并。
接下来对置信度加以介绍,首先对申请所涉及的支持度(Support),置信度 (Confidence),匹配度(Match)等几个概念进行区分,其中支持度用于在频繁子树挖掘过 程中描述频繁的程度,置信度用于描述关联的一种条件概率,即所建立的关于某个附属节 点关联可信任的程度。举例而言,Support (CTP)表示该CTP在所有工程(Pro ject,在本申请 中一个工程特指一个基于框架的应用程序)相应文件(对于CTP而言,就是配置文件)中出 现的概率,假如代码库中有10个工程,其中8个工程的配置文件出现CTP,则Support (CTP) 是80%,类似的,可以得到STP的支持度。匹配度是用来描述在同一个工程中出现某个CTP 和某个STP具有一个相同属性值的附属节点的概率,即,CTP和STP关于该附属节点关联的 概率。例如,CTP出现了 10次,STP出现了 15次,其中CTP出现的10次中有8次和STP在 某个附属节点出的属性值相等,则Match (Value (CTP. node) = Value (STP. Node) = 8/10=80% o
可用公式Support (Match ((Value (CTP. node) = Value (STP. Node)) > MinMatch)) 来表示所有的工程中,满足Match ((Value (CTP. node) = Value (STP. Node))大于某个预定 的最小匹配度(MinMatch)的概率。例如,在10个工程中,有6个工程都可以满足,那么 Support (Match (CTP, STP) > MinMatch)就是 6/10 = 60%。
进而,置信度用公式表示为=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有关联,当这个关联的置信度满 足预设的最小置信度时,就可以确定这是一个有效的关联。
对于上面的例子,Confidenc(CTP, STP (CTP. Node, STP. Node)) = 60% /80% = 75%。如果最小置信度设置为60%,那么就是说在60%的概率下当出现了 CTP. node,那么 这个Node的值应该和对应的STP中的Node的值相等。
图5示出按照一实施方式实现辅助编程的流程,参看图5,其中步骤501至步骤 506示出了进行代码推荐的实施方式
在步骤501中,用户通过快捷键Alt+/触发代码推荐。
在步骤502中,提取当前配置文件中当前编辑焦点的前缀树。其中,编辑焦点是当 前光标所在的位置,前缀树是所获取从当前编辑语句中根节点到编辑焦点的路径所对应的 树。
在步骤503中,根据前缀树来查询到匹配的CTP的子树。
在步骤504中,推荐与所述前缀树匹配的CTP结构,或者属性值。如果当前编辑焦 点需要输入一个结构,则推荐相应的结构,推荐的时候会选择支持度最高的,匹配结构相似 最好的作为候选;如果当前前缀树所在的位置需要填入属性值,则根据所匹配的CTP以及 与其关联的STP利用其关联关系和以及步骤509所提供的代码上下文信息推荐属性值。
在步骤505中,根据匹配的CTP的支持度进行排序后返回。
在步骤506中,提供CTP所对应的代码片段供程序员选择。其中对于结构化模式, 代码片段为可以直接使用的XML片段,对于值模式,代码片段为从CTP和STP关联在当前代 码的上下文中提取出来的值。
图5中步骤507至步骤510是按照一个实施例示出代码检查及验证实施方式
在步骤507中,通过快捷键Ctrl+S触发对配置文件的进行检查的请求。
在步骤508中,遍历配置文件中所有的子树,对于其中不符合CTP的子树,需要进 行警告;对于其中符合CTP的部分,则进入步骤509进行处理。
在步骤509中,获得当前项目上下文代码的语法树,该语法树即可用于代码推荐 的步骤504中,也可用于步骤510的代码检查中。是用在配置文件中,凡是有这样的一个配 置结构的地方需要有一个相应的代码与其相关联,从当前正在编辑的代码的上下文中找到 与当前正在编辑的配置文件的结构相关的代码片段,用于参考或推荐。
在步骤510中,检查所有的属性值所在的子树是不是符合CTP和STP的关联,若不 是,那么也需要进行警告。
在步骤511中,返回所有的警告。
通过在图1所示的计算机系统中实现图2至图5所示的方法流程,本申请还可体 现为一种用于基于框架的应用程序的编程辅助装置,所述应用程序包含程序文件和配置文 件。
该编程辅助装置包括配置为将应用程序历史库的配置文件按框架类型处理为配 置文件分类库的部件;配置为根据所述配置文件分类库构建闭合频繁子树集合,并确定所述闭合频繁子树的支持度的部件;配置为提供所述闭合频繁子树集合及所述支持度用于辅 助编程的部件。
在一个实施例中,还包括配置为根据所述应用程序历史库的程序文件部分构建 语法树集合,并根据所述闭合频繁子树集合和所述语法树集合建立关联子树集合,所述关 联子树集合包括至少一个相互关联的闭合频繁子树和语法树的部件;配置为提供所述关联 子树集合用于辅助编程的部件。
在一个实施例中,所述闭合频繁子树具有根节点并且满足预定的最小支持度。
在另一个实施例中,所述配置为根据所述配置文件分类库构建闭合频繁子树集 合,并确定所述闭合频繁子树的支持度的部件包括配置为从所述配置文件分类库中的配 置文件的根节点开始构造子树集合的部件;配置为将所述子树集合中有公共子结构并且满 足预定的最小支持度的子树进行合并后生成新子树的集合,保留其中满足所述最小支持度 的新子树,重复所述合并及保留步骤直至无法合并出满足所述最小支持度的更大的新子树 的部件;配置为根据前一轮生成的新子树确定所述闭合频繁子树集合的部件。
在另一个实施例中,所述根据所述闭合频繁子树集合和所述语法树集合建立关联 子树集合的部件包括配置为获取所述闭合频繁子树集合中满足最小支持度的闭合频繁子 树子集的部件;配置为获取所述语法树中满足最小支持度的语法树子集的部件;配置为根 据所述闭合频繁子树子集和所述语法树子集中的附属节点具有相同的属性值建立所述关 联子树集合的部件。
在另一个实施例中,还包括,配置为根据所述提供的闭合频繁子树集合及所述支 持度在编制新配置文件时推荐或验证代码结构的部件。
在另一个实施例中,所述推荐或验证代码结构的部件包括配置为提取当前编程 的所述新配置文件中编辑焦点的前缀树的部件;配置为在所述闭合频繁子树中查询与所述 前缀树匹配的子树的部件;配置为根据所述匹配的子树及其支持度推荐或验证代码结构的 部件。
在另一个实施例中,还包括,配置为根据所述提供的关联子树集合在编制新配置 文件时推荐或验证属性值的部件。例如,所述推荐或验证属性值的部件包括配置为提取当 前编程的所述新配置文件中编辑焦点的前缀树的部件;配置为在所述闭合频繁子树中查询 与所述前缀树匹配的子树的部件;配置为根据所述匹配的频繁子树以及与其关联的语法树 进行属性值的推荐或验证的部件。
本申请是一种对基于配置化框架的编程模式中辅助程序员进行编程的技术方案, 可辅助于其中配置文件的编码。通过动态匹配新配置文件的子树与闭合频繁子树所表示 的热点结构模式,可建议程序员正确的配置文件单元;还可通过与其关联的语法树建议 程序员配置文件单元正确的值。因此,采用本申请的技术方案可以重用或挖掘热点用户 (Hotspot)的经验进行编程的辅助,所述热点用户所提供的代码会被经常使用,其代码具有 很好的结构逻辑组合,能够提供很好的性能。
接下来,将以一个具体的例子说明上述技术方案的实行,该例子并不是为了限制 本申请的保护范围。
图6示出了代码的示例,该代码可以自前述代码库的几种来源之一,其中包括的 代码包括用于登录的Login, jsp,以及在列表代码List, jsp中的Dele\Creat\Retrieve\Update等相应功能的代码。
以下代码是ibatis框架的配置文件的一个片段,所属领域技术人员明了的是,该段配置文件是进行CTP挖掘的分类配置文件库的一部分。
权利要求
1.一种用于基于框架的应用程序的编程辅助方法,所述应用程序包含程序文件和配置文件,包括将应用程序历史库的配置文件按框架类型处理为配置文件分类库;根据所述配置文件分类库构建闭合频繁子树集合,并确定所述闭合频繁子树的支持度;提供所述闭合频繁子树集合及所述支持度用于辅助编程。
2.如权利要求1所述的方法,还包括根据所述应用程序历史库的程序文件部分构建语法树集合,并根据所述闭合频繁子树集合和所述语法树集合建立关联子树集合,所述关联子树集合包括至少一个相互关联的闭合频繁子树和语法树;提供所述关联子树集合用于辅助编程。
3.如权利要求1所述的方法,所述闭合频繁子树具有根节点并且满足预定的最小支持度。
4.如权利要求3所述的方法,根据所述配置文件分类库构建闭合频繁子树集合的步骤包括根据所述配置文件分类库中的配置文件构造子树集合,所述子树集合中至少具有包含根节点的子树;将所述子树集合中有公共子结构并满足所述最小支持度的子树合并后生成新子树集合,保留其中满足所述最小支持度的新子树,重复所述合并及保留步骤直至无法合并或无法合并出满足所述最小支持度的新子树;根据前一轮生成的新子树确定所述闭合频繁子树集合。
5.如权利要求2所述的方法,其特征在于,所述根据所述闭合频繁子树集合和所述语法树集合建立关联子树集合包括获取所述闭合频繁子树集合中满足最小支持度的闭合频繁子树子集;获取所述语法树中满足最小支持度的语法树子集;根据所述闭合频繁子树子集和所述语法树子集中具有相同属性值的附属节点建立所述关联子树集合。
6.如权利要求2所述的方法,其特征在于,针对与所述配置文件相关的代码构建所述语法树集合。
7.如权利要求1所述的方法,还包括,根据所述提供的闭合频繁子树集合及所述支持度在编制新配置文件时推荐或验证代码结构。
8.如权利要求7所述的方法,所述推荐或验证代码结构包括提取当前编程的所述新配置文件中编辑焦点的前缀树;在所述闭合频繁子树中查询与所述前缀树匹配的子树;根据所述匹配的子树及其支持度推荐或验证代码结构。
9.如权利要求2所述的方法,还包括,根据所述提供的关联子树集合在编制新配置文件时推荐或验证属性值。
10.如权利要求9所述的方法,其特征在于所述推荐或验证属性值包括提取当前编程的所述新配置文件中编辑焦点的前缀树;在所述闭合频繁子树中查询与所述前缀树匹配的子树;根据所述匹配的频繁子树以及与其关联的语法树进行属性值的推荐或验证。
11.一种用于基于框架的应用程序的编程辅助装置,所述应用程序包含程序文件和配置文件,包括配置为将应用程序历史库的配置文件按框架类型处理为配置文件分类库的部件; 配置为根据所述配置文件分类库构建闭合频繁子树集合,并确定所述闭合频繁子树的支持度的部件;配置为提供所述闭合频繁子树集合及所述支持度用于辅助编程的部件。
12.如权利要求11所述的装置,还包括配置为根据所述应用程序历史库的程序文件部分构建语法树集合,并根据所述闭合频繁子树集合和所述语法树集合建立关联子树集合,所述关联子树集合包括至少一个相互关联的闭合频繁子树和语法树的部件;配置为提供所述关联子树集合用于辅助编程的部件。
13.如权利要求11所述的装置,所述闭合频繁子树具有根节点并且满足预定的最小支持度。
14.如权利要求13所述的装置,所述配置为根据所述配置文件分类库构建闭合频繁子树集合,并确定所述闭合频繁子树的支持度的部件包括配置为从所述配置文件分类库中的配置文件构造子树集合的部件,所述子树集合中至少具有包含根节点的子树。;配置为将所述子树集合中有公共子结构并且满足预定的最小支持度的子树进行合并后生成新子树的集合,保留其中满足所述最小支持度的新子树,重复所述合并及保留步骤直至无法合并出满足所述最小支持度的更大的新子树的部件;配置为根据前一轮生成的新子树确定所述闭合频繁子树集合的部件。
15.如权利要求12所述的装置,其特征在于,所述根据所述闭合频繁子树集合和所述语法树集合建立关联子树集合的部件包括配置为获取所述闭合频繁子树集合中满足最小支持度的闭合频繁子树子集的部件;配置为获取所述语法树中满足最小支持度的语法树子集的部件;配置为根据所述闭合频繁子树子集和所述语法树子集中具有相同属性值的附属节点建立所述关联子树集合的部件。
16.如权利要求12所述的装置,其特征在于,针对与所述配置文件相关的代码构建所述语法树集合。
17.如权利要求11所述的装置,包括,配置为根据所述提供的闭合频繁子树集合及所述支持度在编制新配置文件时推荐或验证代码结构的部件。
18.如权利要求17所述的装置,所述推荐或验证代码结构的部件包括配置为提取当前编程的所述新配置文件中编辑焦点的前缀树的部件;配置为在所述闭合频繁子树中查询与所述前缀树匹配的子树的部件;配置为根据所述匹配的子树及其支持度推荐或验证代码结构的部件。
19.如权利要求12所述的装置,还包括,配置为根据所述提供的关联子树集合在编制新配置文件时推荐或验证属性值的部件。
20.如权利要求19所述的装置,其特征在于所述推荐或验证属性值的部件包括 配置为提取当前编程的所述新配置文件中编辑焦点的前缀树的部件;配置为在所述闭合频繁子树中查询与所述前缀树匹配的子树的部件;配置为根据所述匹配的频繁子树以及与其关联的语法树进行属性值的推荐或验证的部件。
全文摘要
本发明提出了一种用于基于框架的应用程序的编程辅助技术方案,所述应用程序包含程序文件和配置文件,包括将应用程序历史库的配置文件按框架类型处理为配置文件分类库;根据所述配置文件分类库构建闭合频繁子树集合,并确定所述闭合频繁子树的支持度;提供所述闭合频繁子树集合及所述支持度用于辅助编程。采用本发明的方案可以辅助基于框架的应用程序的编程。
文档编号G06F17/30GK102999318SQ201110264470
公开日2013年3月27日 申请日期2011年9月8日 优先权日2011年9月8日
发明者黄胜, 李少春, 朱俊, 楼鸣, 齐轶, 刘 英 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1