System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机领域,更具体地,涉及一种可配置的代码裁剪方法。
技术介绍
1、在高复杂度和大规模的软件项目发布过程中,常常需要满足不同平台、不同功能版本和安全性的对外发布要求,对待发布源码进行可配置化裁剪。
2、在软件设计时,通常通过条件编译指令处理平台差异、版本差异和功能开关等逻辑。这些逻辑虽然能够在编译的预处理阶段被识别和执行相应的裁剪,但目前没有直接对外发布未经编译但已经按逻辑处理后的源码的实现方法。
技术实现思路
1、本专利技术针对现有技术中存在的技术问题,提供一种可配置的代码裁剪方法,包括:
2、步骤1,复制一份源代码文件生成副本文件,采用编译器提取所述源代码文件中的全部条件编译信息,每一条条件编译信息包括条件编译表达式和所在的位置信息;
3、步骤2,根据配置文件对每一个条件编译表达式进行匹配,从所述配置文件中找到为每一个条件编译表达式配置的宏和对应的值;根据配置的宏和对应的值,修改副本文件中相同位置的条件编译表达式中的值;
4、步骤3,根据源代码文件中获取的全部条件编译信息,将同一嵌套层级的条件编译信息进行组合,构建条件编译数据单元,将所有的条件编译数据单元写入中间文件;
5、步骤4,从中间文件中读取所有的条件编译数据单元,在修改后的副本文件中,获取编译器计算的每一个条件编译表达式的真假值,根据每一个条件编译表达式的真假值,获取每一个条件编译数据单元中的有效代码段;
6、步骤5,根据每一个条件编
7、步骤6,基于每一个条件编译数据单元中的待删行号,将源代码文件中相应行号的代码进行裁剪,得到裁剪后的代码。
8、在上述技术方案的基础上,本专利技术还可以作出如下改进。
9、可选的,所述步骤1中,采用编译器提取所述源代码文件中的全部条件编译信息,每一条条件编译信息包括条件编译表达式和所在的位置信息,包括:
10、通过编译器找到源代码文件中的每一个条件编译标识符,提取每一个条件编译标识符对应的条件编译信息,所述条件编译信息包括条件编译标识符的表达式内容和条件编译标识符的行号。
11、可选的,所述配置文件中配置了源代码文件中每一个条件编译表达式中每一个宏参数的值。
12、可选的,所述步骤4中,在修改后的副本文件中,获取编译器计算的每一个条件编译表达式的真假值,根据每一个条件编译表达式的真假值,获取每一个条件编译数据单元中的有效代码段,包括:
13、根据修改后的副本文件中每一个条件编译表达式中的值,通过编译器计算每一个条件编译表达式的真假值;
14、根据每一个条件编译数据单元中的每一个条件编译表达式的真假值,将其中真值对应的代码段作为有效代码段。
15、可选的,所述步骤5,根据每一个条件编译数据单元中的有效代码段,确定每一个条件编译数据单元中的待删行号,包括:
16、以所述有效代码段以外的代码为待删代码,记录每一个条件编译数据单元中待删代码的行号,记为待删行号。
17、可选的,所述步骤6,基于每一个条件编译数据单元中的待删行号,将源代码文件中相应行号的代码进行裁剪,得到裁剪后的代码,包括:
18、将每一个条件编译数据单元中的待删行号进行汇总并去重;
19、对去重后的待删行号进行排序,按照从小到大的顺序删除源代码文件中相应行号的代码,得到裁剪后的代码。
20、本专利技术提供的一种可配置的代码裁剪方法,采用编译器预处理模块实现可配置的代码裁剪,能够处理复杂的条件编译结构,并且支持根据配置文件自定义裁剪,同时在条件编译逻辑下的裁剪也能够更好地保证裁剪后代码的完整性和正确性,解决大型软件项目在源码发布过程中,为了满足不同平台、不同功能版本和安全性要求的对外发布需求。
本文档来自技高网...【技术保护点】
1.一种可配置的代码裁剪方法,其特征在于,包括:
2.根据权利要求1所述的可配置的代码裁剪方法,其特征在于,所述步骤1中,采用编译器预处理模块提取所述源代码文件中的全部条件编译信息,每一条条件编译信息包括条件编译表达式和所在的位置信息,包括:
3.根据权利要求1所述的可配置的代码裁剪方法,其特征在于,所述配置文件中配置了源代码文件中每一个条件编译表达式中每一个宏参数的值。
4.根据权利要求1所述的可配置的代码裁剪方法,其特征在于,所述步骤4中,在修改后的副本文件中,获取编译器计算的每一个条件编译表达式的真假值,根据每一个条件编译表达式的真假值,获取每一个条件编译数据单元中的有效代码段,包括:
5.根据权利要求1或4所述的可配置的代码裁剪方法,其特征在于,所述步骤5,根据每一个条件编译数据单元中的有效代码段,确定每一个条件编译数据单元中的待删行号,包括:
6.根据权利要求1所述的可配置的代码裁剪方法,其特征在于,所述步骤6,基于每一个条件编译数据单元中的待删行号,将源代码文件中相应行号的代码进行裁剪,得到裁剪后的代码,包括
...【技术特征摘要】
1.一种可配置的代码裁剪方法,其特征在于,包括:
2.根据权利要求1所述的可配置的代码裁剪方法,其特征在于,所述步骤1中,采用编译器预处理模块提取所述源代码文件中的全部条件编译信息,每一条条件编译信息包括条件编译表达式和所在的位置信息,包括:
3.根据权利要求1所述的可配置的代码裁剪方法,其特征在于,所述配置文件中配置了源代码文件中每一个条件编译表达式中每一个宏参数的值。
4.根据权利要求1所述的可配置的代码裁剪方法,其特征在于,所述步骤4中,在修改后的副本...
【专利技术属性】
技术研发人员:张锲,黄治华,胡凯峰,王坤,李懿琪,
申请(专利权)人:武汉凌久微电子有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。