本发明专利技术公开了一种基于继承和代理的规则检测框架的建立及使用方法,建立方法包括创建一个框架;在框架内创建规则集模块、代理模块和通用规则模块;在所述规则集模块中存放多个标准规则集,对于多个标准规则集中的所有规则进行统一管理,具体为:对于在当前框架下无法实现的规则,通过代理到其它框架内实现,将相关代理信息存入代理模块;对于在当前框架下可以实现的规则,通过提取父类去除代码冗余,所述父类记为通用规则类并存入通用规则模块,使得在不同框架下实现检测逻辑的规则都在框架Ⅰ内实现调用,即实现调用指令的统一,且避免了不同标准规则集中相同代码重复执行的问题,消除代码冗余,提高代码的可维护性。
A framework of code detection rules based on Inheritance and agent
【技术实现步骤摘要】
一种基于继承和代理的代码检测规则框架建立及使用方法
本专利技术涉及静态代码扫描的程序分析
,属于编程语言领域,尤其涉及一种基于继承和代理的代码检测规则框架建立及使用方法。
技术介绍
由于通常需要对编译好的代码进行检查,特别是对于代码变更比较频繁的项目,因此,除了人工检查提交的代码之外,还需要有程序分析工具来监控代码的变更,从而扫描并检查代码中所存在的缺陷以及不符合规范的代码。基于静态代码扫描的程序分析工具(以下简称分析工具)中往往实现了代码检测的工作流程,同时提供了多种规则检测框架,比如基于抽象语法树遍历的框架、符号执行框架及词法分析框架等等,不同的规则检测框架位于不同类库下。不同的代码框架下规则的调用指令也不尽相同,而对于绝大部分标准来说,同一个规则集都涵盖了不同类型的规则,这就导致了在调用同一个规则集的代码时,需要用户通过不同的调用方式对不同代码框架下的规则进行调用,降低了分析工具的易用性,也破环了规则集的模块化,降低代码的可维护性。另外,现有的编程规范、编程指导原则等标准,其规则集往往涵盖了语法、语义、预处理和词法等方面,编程规范、编程指导原则之间存在相同相似的可复用规则的情况,因此存在另一个问题,如何将多个规则集统一管理,避免不同规则集之间相同规则的代码冗余。
技术实现思路
针对上述现有技术存在的问题,本专利技术提供了一种基于继承和代理的规则检测框架的建立方法,包括:(11)创建一个框架;(12)在框架内创建规则集模块、代理模块和通用规则模块;(13)在所述规则集模块中存放多个标准规则集,对于多个标准规则集中的所有规则进行统一管理,具体为:(131)对于在当前框架下无法实现的规则,通过代理到其它框架内实现,将相关代理信息存入代理模块;(132)对于在当前框架下可以实现的规则,通过提取父类去除代码冗余,所述父类记为通用规则类并存入通用规则模块,同时被提取父类的规则改写成子类继承父类的形式。作为上述方案的进一步优化,步骤(13)中还包括:对单个标准规则集创建一个规则基类,对于单个标准规则集内的规则提取通用属性,将所述通用属性存入规则基类,同时单个标准规则集内的规则改写成继承该规则基类的形式。作为上述方案的进一步优化,对于继承同一个通用规则类且继承不同规则基类的规则,在步骤(132)中提取的通用规则类中用多态或传参代码段表示不同规则基类。作为上述方案的进一步优化,所述步骤(131)中,代理模块包括委托规则、代理规则实现类和代理规则,具体包括:(41)对于在当前框架下无法实现的规则,在可以实现的框架下创建代理规则,该代理规则实现检测逻辑;(42)在当前框架下创建委托规则,该委托规则中包含实现其检测逻辑的代理规则的属性信息;(43)在当前框架下创建代理规则实现类,该代理规则实现类记载委托规则和代理规则之间的映射关系;(44)所述委托规则继承代理规则实现类和该委托规则所在规则集的规则基类。基于上述一种基于继承和代理的规则检测框架的建立方法,本专利技术还提供了一种基于继承和代理的规则检测框架的使用方法,通过代码分析工具执行,所述代码分析工具的工作流程中加入了规则代理机制,具体包括:(51)分析工具接收到代码检测的调用指令,获取调用指令信息;(52)判断调用指令中是否包含委托规则:若不包含委托规则,则根据调用指令对应的规则,根据其继承的父类通用规则类,对于通用规则类包含的方法重写或传入对应参数,实现规则的检测逻辑;若包含委托规则,则根据委托规则和代理规则实现类映射到该委托规则对应的代理规则,实现规则的检测逻辑;(53)检测结束后获取代码诊断信息;(54)判断诊断信息是否为执行代理规则获取的:若诊断信息是执行代理规则获取的,则将诊断信息改为对应的委托规则的诊断信息后再输出;否则,将诊断信息直接输出。作为上述方案的进一步优化,步骤(52)中,若调用指令对应的规则不是委托规则且没有继承的通用规则类,则只对其所继承的规则基类中的方法重写或传入对应参数,实现规则的检测逻辑。本专利技术的一种基于继承和代理的规则检测框架的建立及使用方法,具备如下有益效果:在包含多个标准规则集的规则框架内:1.对于不能在框架Ⅰ内实现的规则,设置代理模块将规则调用入口放在框架Ⅰ内,使得在不同框架下实现检测逻辑的规则都在框架Ⅰ内实现调用,即实现调用指令的统一;2.通过对框架内所有规则提取父类作为通用规则类实现所有规则的代码复用,避免了不同标准规则集中相同代码重复执行的问题,消除代码冗余,提高代码的可维护性;3.通过对框架内单个标准规则集的规则提取通用属性作为规则基类,进一步消除代码冗余。附图说明图1为本专利技术一种基于继承和代理的规则检测框架的建立方法的规则检测框架结构示意图;图2为本专利技术一种基于继承和代理的规则检测框架的使用方法的流程图。实施方式以下结合说明书附图及具体实施例进一步说明本专利技术的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术提供了一种基于继承和代理的规则检测框架的建立方法,将现有的多个标准规则集的所有规则进行统一管理,对在不同框架实现的规则通过代理模式进行调用指令统一,对同一框架内的不同规则集内相同代码重复实现的问题,通过由子类规则提取出其父类的方式,建立继承关系,多个子类规则继承父类,消除代码冗余。具体的,本专利技术提供的一种基于继承和代理的规则检测框架的建立方法,包括:(11)创建一个框架,本实施例中记为框架Ⅰ;(12)在框架内创建规则集模块、代理模块和通用规则模块;(13)在所述规则集模块中存放多个标准规则集,对于多个标准规则集中的所有规则进行统一管理,具体为:(131)对于在当前框架下无法实现的规则,通过代理到其它框架内实现,将相关代理信息存入代理模块;所述相关代理信息包括在当前框架下无法实现的规则信息,在其它框架实现的方法以及两者之间的映射信息,本实施例中,其它框架记为框架Ⅱ、框架Ⅲ等。(132)对于在当前框架下可以实现的规则,通过提取父类去除代码冗余,所述父类记为通用规则类并存入通用规则模块,同时被提取父类的规则改写成子类继承父类的形式。本实施例中,对于不能在框架Ⅰ内实现的规则,设置代理模块将规则调用入口放在框架Ⅰ内,使得在不同框架下实现检测逻辑的规则都在框架Ⅰ内实现调用,即实现调用指令的统一;通过对框架内所有规则提取父类实现所有规则的代码复用,避免了不同标准规则集中相同代码重复执行的问题,消除代码冗余,提高代码的可维护性。由于不同的标准规则集针对的语言标准等通用属性可能有差异,因此本实施例中步骤(13)还包括:对单个标准规则集创建一个规则基类,对于单个标准规则集内的规则提取通用属性,将所述通用属性存入规则基类,同时单个标准规则集内的规则改写成继承该规则基类的本文档来自技高网...
【技术保护点】
1.一种基于继承和代理的规则检测框架的建立方法,其特征在于:包括:/n(11)创建一个框架;/n(12)在框架内创建规则集模块、代理模块和通用规则模块;/n(13)在所述规则集模块中存放多个标准规则集,对于多个标准规则集中的所有规则进行统一管理,具体为:/n(131)对于在当前框架下无法实现的规则,通过代理到其它框架内实现,将相关代理信息存入代理模块;/n(132)对于在当前框架下可以实现的规则,通过提取父类去除代码冗余,所述父类记为通用规则类并存入通用规则模块,同时被提取父类的规则改写成子类继承父类的形式。/n
【技术特征摘要】
1.一种基于继承和代理的规则检测框架的建立方法,其特征在于:包括:
(11)创建一个框架;
(12)在框架内创建规则集模块、代理模块和通用规则模块;
(13)在所述规则集模块中存放多个标准规则集,对于多个标准规则集中的所有规则进行统一管理,具体为:
(131)对于在当前框架下无法实现的规则,通过代理到其它框架内实现,将相关代理信息存入代理模块;
(132)对于在当前框架下可以实现的规则,通过提取父类去除代码冗余,所述父类记为通用规则类并存入通用规则模块,同时被提取父类的规则改写成子类继承父类的形式。
2.根据权利要求1所述的一种基于继承和代理的规则检测框架的建立方法,其特征在于:步骤(13)中还包括:对单个标准规则集创建一个规则基类,对于单个标准规则集内的规则提取通用属性,将所述通用属性存入规则基类,同时单个标准规则集内的规则改写成继承该规则基类的形式。
3.根据权利要求2所述的一种基于继承和代理的规则检测框架的建立方法,其特征在于:对于继承同一个通用规则类且继承不同规则基类的规则,在步骤(132)中提取的通用规则类中用多态或传参代码段表示不同规则基类。
4.根据权利要求1所述的一种基于继承和代理的规则检测框架的建立方法,其特征在于:所述步骤(131)中,代理模块包括委托规则、代理规则实现类和代理规则,具体包括:
(41)对于在当前框架下无法实现的规则,在可以实现的框架下创建代理规...
【专利技术属性】
技术研发人员:李兆鹏,丁飞,顾建平,戴一飞,
申请(专利权)人:安徽中科国创高可信软件有限公司,
类型:发明
国别省市:安徽;34
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。