System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种可动态配置的代码兼容性检测方法技术_技高网

一种可动态配置的代码兼容性检测方法技术

技术编号:40329678 阅读:9 留言:0更新日期:2024-02-09 14:22
本发明专利技术公开了一种可动态配置的代码兼容性检测方法,基于通用的规则引擎配置文本匹配规则,将规则转换成语法分析器配置项追加到词法和语法配置文件中,通过语法分析器工具生成开发语言的类与方法,动态热加载到虚拟处理器进行调用并获得各项结果,再由规则引擎汇总生成结论。本发明专利技术通过语法分析器首先对源代码的关键信息进行了精准提取和格式化操作,消除了因不同作者编写代码时的个人编码风格迥异导致检测识别困难的问题,提升了检测匹配精度;利用规则引擎的可视化配置特性降低了兼容性检测规则的配置和维护难度,借助规则的动态配置间接实现了兼容性条件的灵活变更。

【技术实现步骤摘要】

本专利技术涉及计算机软件,具体的说,是一种可动态配置的代码兼容性检测方法


技术介绍

1、现有技术中,当有海量软件应用需要迁移到信创(信息技术应用创新)平台时,由于底层架构的不同,软件迁移过程必然伴随着大量适配工作,需要对源代码进行不同程度的适应性改造。对有源代码的软件进行信创适配迁移时,需要着重排查并解决源代码中存在的信创环境兼容性问题,从而确保软件迁移后能够正常、准确、高效率的运行。当下排查兼容性问题的主要方式是对源代码进行正则表达式匹配,找出符合特征的代码片段并进行提示。但源代码的写法风格千差万别,这种直接对源代码进行正则表达式匹配的方式在面对不同代码风格(如换行风格、对齐风格等)时容易出现无法匹配的情况,而为此去定制修改正则表达式则会产生更多的人力和时间成本。更何况当匹配条件较为复杂时,单靠一个正则表达式也无法完成匹配任务,需要组合更多判断逻辑规则,而要编写出功能近似的复杂正则表达式又会面临逻辑复杂、不易维护等问题,依然将耗费额外的资源。针对依靠人工调试、硬编码编写复杂正则表达式、或者定制开发正则表达式等基础手段所表现出来的高人工依赖、高技术能力要求和高度定制化的情况,其实质是:传统方式只依靠文本信息表面的字符串正则匹配,没有像编译器一样对源代码进行词法和语法的解析与提取,导致面临不同编码风格时匹配的适应性不佳。此外,复杂的兼容性问题往往是源代码中满足多个特征的逻辑组合形式,而一个正则表达式往往无法较好且简洁的表示这种关系,即便能够写出来也需要编写者具备较高的技术能力、花费较长的测试周期,后续更不便于修改和维护。


技术实现思路

1、本专利技术的目的在于提供一种可动态配置的代码兼容性检测方法,用于解决现有技术中直接对源代码文本进行正则匹配方法中存在的匹配不精确、配置过程繁琐复杂、需要硬编码或定制化等费力耗时的问题。

2、本专利技术通过下述技术方案解决上述问题:

3、一种可动态配置的代码兼容性检测方法,包括:

4、基于通用的规则引擎配置文本匹配规则,将规则转换成语法分析器配置项追加到词法和语法配置文件中,通过语法分析器工具生成开发语言的类与方法,动态热加载到虚拟处理器进行调用并获得各项结果,再由规则引擎汇总生成结论,虚拟处理器介于开发语言的编译器与操作系统之间。

5、进一步地,基于通用的规则引擎配置文本匹配规则,将规则转换成语法分析器配置项追加到词法和语法配置文件中具体包括:

6、编写类加载器以动态加载生成的类,获取语法分析器词法和语法的配置文件;

7、在规则引擎中创建规则,并注明规则匹配的开发语言,然后将代码匹配的逻辑以条件的形式配置在规则中,并配置多个条件之间的逻辑关系,形成条件表达式。

8、进一步地,通过语法分析器工具生成开发语言的类与方法,动态热加载到虚拟处理器进行调用并获得各项结果,再由规则引擎汇总生成结论具体包括:

9、创建一个语法分析器对应开发语言的配置文件副本,将规则中各个条件表达式映射成语法分析器词法和语法配置,以追加的形式将写入到副本文件中;

10、使用语法分析器工具基于副本文件生成开发语言的类;

11、编写自定义规则监听器,监听上述自定义语法和词法规则的匹配事件并记录文件名称、匹配代码段所在的行号等数据;

12、使用自定义类加载器加载词法类、语法类和监听器类;

13、创建语法分析器解析实例,使用自定义监听器遍历指定代码源文件,获得匹配结果;

14、根据监听器中记录的匹配结果,按照完全满足规则引擎的配置逻辑进行综合计算,得出该源代码文件是否具备信创平台兼容性的结论。

15、本专利技术与现有技术相比,具有以下优点及有益效果:

16、(1)本专利技术通过语法分析器首先对源代码的关键信息进行了精准提取和格式化操作,消除了因不同作者编写代码时的个人编码风格迥异导致检测识别困难的问题,提升了检测匹配精度;利用规则引擎的可视化配置特性降低了兼容性检测规则的配置和维护难度,借助规则的动态配置间接实现了兼容性条件的灵活变更。

17、(2)本专利技术使用java语言开发中控模块,串联衔接语法分析器和规则引擎的各项调用,对整个兼容性检测流程进行了自动化设计,能够提升单轮检测调试的效率,并从整体上减少完成检测所需要的轮次,从而使整个信创兼容性检测环节的效率得到了提高。

18、(3)本专利技术采用语法分析器对源代码进行分析,能够精准提取源代码中的关键内容(如:变量定义、函数体定义等),对提取出来的内容先进行统一的标准格式化处理,消除不同编码风格的文本格式差异(如:去除冗余换行等),从而为后续源代码特征匹配创造一致的检测基础。

本文档来自技高网
...

【技术保护点】

1.一种可动态配置的代码兼容性检测方法,其特征在于,包括:

2.根据权利要求1所述的一种可动态配置的代码兼容性检测方法,其特征在于,基于通用的规则引擎配置文本匹配规则,将规则转换成语法分析器配置项追加到词法和语法配置文件中具体包括:

3.根据权利要求2所述的一种可动态配置的代码兼容性检测方法,其特征在于,通过语法分析器工具生成开发语言的类与方法,动态热加载到虚拟处理器进行调用并获得各项结果,再由规则引擎汇总生成结论具体包括:

【技术特征摘要】

1.一种可动态配置的代码兼容性检测方法,其特征在于,包括:

2.根据权利要求1所述的一种可动态配置的代码兼容性检测方法,其特征在于,基于通用的规则引擎配置文本匹配规则,将规则转换成语法分析器配置项追加到词法和语法配...

【专利技术属性】
技术研发人员:孙瑞
申请(专利权)人:四川启睿克科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1