一种项目文件的处理方法和装置
技术领域
本发明涉及数据处理
技术领域
,特别是涉及一种项目文件的处理方法和一种项目文件的处理装置。背景技术
在计算机程序或文本编辑中,硬编码是指将可变变量用一个固定值来代替的方法。通过这种方式(指硬编码)编辑后的程序,当需要修改此类变量则比较困难。对此,可以在项目工程文件中提供对应的资源文件,用于将一个固定数值定义为一个标记并集中储存,用这个特殊标记来取代变量名称,当标记名称改变时,变量名不变,当重新编辑整个程序时,所有变量都不再是固定值,从而实现改变变量的目的。然而,项目开发由于需要完成大量数据对接和前端展示工作,应用程序中可能包含较多硬编码内容,完成硬编码替换是繁琐且重复的劳动,代码转换效率低下,且容易出错。
发明内容
本发明实施例是提供一种项目文件的处理方法、装置、电子设备以及计算机可读存储介质,以解决或部分解决现有技术中在项目文件的开发过程中,硬编码替换的效率低下且容易出错的问题。
本发明实施例公开了一种项目文件的处理方法,包括:
响应针对初始项目文件的编辑操作的结束,获取所述初始项目文件的项目源码以及所述项目源码对应的文件格式;
基于所述文件格式,从所述项目源码中提取初始硬编码,并获取所述初始硬编码对应的目标标识信息,以及所述初始硬编码在所述项目源码中的项目源码位置;
根据所述项目源码位置,在预设的初始资源文件中写入所述初始硬编码与所述目标标识信息之间的映射关系,获得目标资源文件;
根据预设替换信息与所述目标标识信息,对所述初始硬编码进行更新,生成目标项目文件。
可选地,所述基于所述文件格式,从所述项目源码中提取初始硬编码,包括:
从所述项目源码中,提取目标文件格式的源码文件;
获取与所述目标文件格式匹配的提取信息;
采用所述提取信息与所述目标文件格式,从所述源码文件中提取初始硬编码。
可选地,所述提取信息包括正则表达式,所述采用所述提取信息与所述目标文件格式,从所述源码文件中提取初始硬编码,包括:
遍历所述源码文件,提取满足所述正则表达式的源码作为所述源码文件对应的初始硬编码;
其中,所述源码文件至少包括Java文件、Kotlin文件以及Xml文件中的一种,不同的源码文件对应不同的正则表达式。
可选地,所述根据所述项目源码位置,在预设的初始资源文件中写入所述初始硬编码与所述目标标识信息之间的映射关系,获得目标资源文件,包括:
获取与所述初始项目文件匹配的初始资源文件;
采用所述项目源码位置,在所述初始资源文件中写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件。
可选地,所述采用所述项目源码位置,在所述初始资源文件中写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件,包括:
采用所述项目源码位置从所述资源文件中查找预设标识信息;
将所述预设标识信息与所述目标标识信息进行比对,判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息;
若所述初始资源文件中存在与所述目标标识信息相同的预设标识信息,则获取所述预设标识信息对应的预设硬编码;
若所述预设标识信息对应的预设硬编码与所述目标标识信息对应的初始硬编码不同,则写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件。
可选地,所述写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,包括:
将所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系写入所述初始资源文件中;
为所述目标标识信息添加识别信息,以对所述目标标识信息与所述预设标识信息进行区分;
返回所述判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息的步骤,直至完成所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系的写入。
可选地,所述将所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系写入所述初始资源文件中,包括:
若所述初始硬编码存在特定字符,则对将所述特定字符转换为转义字符,对所述初始硬编码进行更新;
在所述初始资源文件中写入转换后的初始硬编码和目标标识信息之间的映射关系。
可选地,所述根据预设替换信息与所述目标标识信息,对所述初始硬编码进行更新,生成目标项目文件,包括:
获取针对所述初始硬编码的替换信息;
采用所述替换信息与所述目标标识信息,生成针对所述初始硬编码的目标源码;
将所述初始项目文件中所述初始硬编码替换为对应的目标源码,生成目标项目文件。
本发明实施例还公开了一种项目文件的处理装置,包括:
项目源码获取模块,用于响应针对初始项目文件的编辑操作的结束,获取所述初始项目文件的项目源码以及所述项目源码对应的文件格式;
硬编码信息提取模块,用于基于所述文件格式,从所述项目源码中提取初始硬编码,并获取所述初始硬编码对应的目标标识信息,以及所述初始硬编码在所述项目源码中的项目源码位置;
资源文件处理模块,用于根据所述项目源码位置,在预设的初始资源文件中写入所述初始硬编码与所述目标标识信息之间的映射关系,获得目标资源文件;
项目文件生成模块,用于根据预设替换信息与所述目标标识信息,对所述初始硬编码进行更新,生成目标项目文件。
可选地,所述硬编码信息提取模块包括:
源码文件提取子模块,用于从所述项目源码中,提取目标文件格式的源码文件;
提取信息获取子模块,用于获取与所述目标文件格式匹配的提取信息;
初始硬编码提取子模块,用于采用所述提取信息与所述目标文件格式,从所述源码文件中提取初始硬编码。
可选地,所述提取信息包括正则表达式,所述初始硬编码提取子模块具体用于:
遍历所述源码文件,提取满足所述正则表达式的源码作为所述源码文件对应的初始硬编码;
其中,所述源码文件至少包括Java文件、Kotlin文件以及Xml文件中的一种,不同的源码文件对应不同的正则表达式。
可选地,所述资源文件处理模块包括:
初始资源文件获取子模块,用于获取与所述初始项目文件匹配的初始资源文件;
目标资源文件获取子模块,用于采用所述项目源码位置,在所述初始资源文件中写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件。
可选地,所述目标资源文件获取子模块具体用于:
采用所述项目源码位置从所述资源文件中查找预设标识信息;
将所述预设标识信息与所述目标标识信息进行比对,判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息;
若所述初始资源文件中存在与所述目标标识信息相同的预设标识信息,则获取所述预设标识信息对应的预设硬编码;
若所述预设标识信息对应的预设硬编码与所述目标标识信息对应的初始硬编码不同,则写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系。
可选地,所述目标资源文件获取子模块具体用于:
将所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系写入所述初始资源文件中;
为所述目标标识信息添加识别信息,以对所述目标标识信息与所述预设标识信息进行区分;
返回所述判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息的步骤,直至完成所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系的写入。
可选地,所述目标资源文件获取子模块具体用于:
若所述初始硬编码存在特定字符,则对将所述特定字符转换为转义字符,对所述初始硬编码进行更新;
在所述初始资源文件中写入转换后的初始硬编码和目标标识信息之间的映射关系。
可选地,所述项目文件生成模块包括:
替换信息获取子模块,用于获取针对所述初始硬编码的替换信息;
目标源码生成子模块,用于采用所述替换信息与所述目标标识信息,生成针对所述初始硬编码的目标源码;
项目文件生成子模块,用于将所述初始项目文件中所述初始硬编码替换为对应的目标源码,生成目标项目文件。
本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如上所述的方法。
本发明实施例还公开了一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,在项目文件进行编辑的过程中,当开发者编辑结束后,可以获取项目文件的项目源码以及项目源码对应的文件格式,接着基于文件格式,从项目源码中提取初始硬编码,并获取初始硬编码对应的目标标识信息以及在项目源码中的项目源码位置,接着,一方面可以根据项目源码位置,在预设的资源文件中写入初始硬编码与目标标识信息之间的映射关系,实现资源文件的更新,保证资源文件的有效性,另一方面可以根据预设替换信息与目标标识信息对初始项目文件的初始硬编码进行更新,生成目标项目文件,从而可以在项目开发的过程中,对项目文件中硬编码进行替换,减少了开发过程中的额外操作,提高了硬编码替换的效率,并且,编辑过程中不需要中断进行硬编码替换,增强了编辑源码的连续性。
附图说明
图1是本发明实施例中提供的一种项目文件的处理方法的步骤流程图;
图2是本发明实施例中提供的一种项目文件的处理装置的结构框图;
图3是本发明实施例中提供的一种电子设备的框图;
图4是本发明实施例中提供的一种计算机可读介质的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
作为一种示例,在计算机程序或文本编辑中,硬编码是指将可变变量用一个固定值来代替的方法,通过这种方式,使得后续对变量的修改变得困难。对此,在项目文件中提供了对应的资源文件,用于将一个固定数值定义为一个标记并集中存储,用这个特殊标记来取代变量名称,当标记名称改变时,变量名不变,若需要重新编辑整个程序,由于所有变量不再是固定值,容易实现改变变量的目的。
在项目开发过程中,由于需要完成大量数据对接和前端展示工作,应用程序往往存在较多的硬编码内容,硬编码的替换不仅繁琐而且需要开发者付出重复的劳动,代码转换效率低下且容易出错。
对此,本发明实施例的核心发明点之一在于在项目文件的开发过程中,当检测到编辑操作结束后,可以获取项目文件的项目源码以及项目源码对应的文件格式,接着基于文件格式,从项目源码中提取初始硬编码,并获取初始硬编码对应的目标标识信息以及在项目源码中的项目源码位置,一方面可以根据项目源码位置,在预设的资源文件中写入初始硬编码与目标标识信息之间的映射关系,实现资源文件的更新,保证资源文件的有效性,另一方面可以根据预设替换信息与目标标识信息对初始项目文件的初始硬编码进行更新,生成目标项目文件,从而可以在项目开发的过程中,对项目文件中硬编码进行替换,减少了开发过程中的额外操作,提高了硬编码替换的效率,并且,编辑过程中不需要中断进行硬编码替换,增强了编辑源码的连续性。
需要说明的是,本发明实施例中以项目文件为安卓项目文件为例进行示例性说明,在对应的AndroidStudio编辑器中对项目文件的硬编码进行处理,可以理解的是,本发明对此不作限制。
参照图1,示出了本发明实施例中提供的一种项目文件的处理方法的步骤流程图,具体可以包括如下步骤:
步骤101,响应针对初始项目文件的编辑操作的结束,获取所述初始项目文件的项目源码以及所述项目源码对应的文件格式;
由于AndroidStudio兼容大部分IDEA(IntelliJ IDEA,java语言开发的集成环境)插件,通过IDEA提供的插件接口可以实现监听开发者编辑代码的过程,并通过设置应用全局使用的context(环境)和对应的头文件,完成调用getString()方法引用资源,实现在不破坏开发人员编码连续性的条件下自动完成硬编码替换。
在具体实现中,可以监听安卓开发者对项目文件的编辑操作,当监听到编辑操作结束时,可以获取当前所编辑的项目文件的项目源码以及项目源码对应的文件格式。其中,项目源码可以为项目文件所对应的应用程序的执行代码;文件格式可以包括Java、Kotlin、Xml、Html、Json、Groovy等格式,通过识别不同的文件格式,可以提取出含有硬编码的源码文件,以便对硬编码进行相应的替换处理。
在一种示例中,为了实现监听项目源代码文件编辑,实时获取正在编辑的项目源码和文件格式,可以以Android Studio编辑器插件的形式对本发明实施例进行实现。具体的,Android Studio编辑器插件可以基于IntelliJ Platform提供的组件实现,其中,包含监听编辑和保存文件的接口FileDocumentManagerListener,该接口中可以包含许多方法,用于监听编辑器中文件的编辑和保存功能,例如,在编辑器中完成代码编写保存到文件之前、把代码从硬盘加载到编辑器完成等时机,系统可以主动回调该接口对应的方法,从而通过继承该接口对应的方法,实现对应的功能,进而实现在对项目文件进行开发的同时,实时检索硬编码并进行相应的处理。
具体的,可以通过插件提供的FileDocumentManager#getUnsavedDocuments()接口,可以得到当前还未保存的项目源码,通过分别处理这些项目源码,可以获取到它们对应的文件格式和编辑待保存的内容。
步骤102,基于所述文件格式,从所述项目源码中提取初始硬编码,并获取所述初始硬编码对应的目标标识信息,以及所述初始硬编码在所述项目源码中的项目源码位置;
在本发明实施例中,针对项目文件的项目源码,可以从项目源码中,提取目标文件格式的源码文件,接着获取与目标文件格式匹配的提取信息,然后采用提取信息与目标文件格式,从源码文件中提取初始硬编码。其中,目标文件格式可以为包含硬编码的文本文档所对应的文件格式。
在具体实现中,针对项目文件中不同文件格式的文本文档,FileDocumentManager#getUnsavedDocuments()接口可以返回Document类型,并将其转换为PsiFile类型,接着通过getFileType()方法获取各个文本文档对应的文件类型和文件名后缀,并据此识别得到各个文本文档对应的文件格式,从而可以进一步提取目标文件格式的源码文件。其中,目标文件格式的源码文件可以包括Java文件、Kotlin文件以及Xml文件中的一种,这些文件中可以包含硬编码。
具体的,在提取硬编码的过程中,可以遍历源码文件中编辑的文本内容,使用正则表达式进行匹配,若匹配成功,则判定该源码段包含硬编码,获取此处硬编码的代码块,并从中提取初始硬编码对应的目标标识信息以及确定初始硬编码在项目源码中的项目源码位置。
需要说明的是,对于不同文件格式的源码文件,可以采用不同的提取信息,从源码文件中提取对应的硬编码,以便进行硬编码的替换,例如,针对安卓开发中常用的Java、Kotlin以及Xml类型文件,可以分别采用不同的正则表达式进行匹配硬编码代码块和获取硬编码的内容,例如,Java和kotlin文件使用正则表达式".*?[^\\]"进行匹配,意义是获取一对双引号之间的内容;xml文件使用正则表达式android:text=".*?",意义是获取某个view的text属性的文本内容。可以理解的是,当针对其他文件类型的源码,可以选择相应的方式进行源码内容提取,本发明对此不作限制。
其中,硬编码是指将可变变量用一个固定值进行代替的方式,则检测硬编码的方式可以通过正则表达式匹配硬编码特征,正则表达式描述了一种字符串匹配的模式,可以用来从某个串中取出符合某个条件的子串。通过逐行遍历编辑的文本内容,对每一行文本使用对应的正则式匹配得到包含双引号等规则的硬编码目标结构,再截取目标结构的双引号内的文本,即获取到了硬编码的原始内容。例如,1、一行编辑的文本内容是:Log.i(TAG,"这是一条log");2、通过正则式匹配得到包含双引号等规则的硬编码目标结构:"这是一条log";3、截取目标结构的双引号内的文本得到硬编码的原始内容:这是一条log。
在一种示例中,在获取硬编码对应的标识信息tag过程中,若硬编码内容包含设定的编码(如中文、日文等),可以调用相应的翻译接口获取全文的英文翻译内容,接着对翻译后的内容逐个字符判断符合标识信息tag内容所设定的条件。对于标识信息tag,可以由数字、字母和下划线等组成,对不符合条件的字符可以予以舍弃或按标准替换为允许的字符,从而确定硬编码代码块在项目源码的源码位置信息以及硬编码所对应的标识信息tag。
具体的,由于AndroidStudio编辑器中编辑文本使用的是UTF-8编码,根据编码表可以得到一种文字的编码段,例如中文编码在0x4E00-0x9FA5之间,如果一段硬编码原始内容中有字符的编码在以上区间,可以判定该段硬编码为中文内容,调用中译英的接口翻译硬编码全文,然后再基于英文内容逐个字符判断,若是数字或字母,则保留;若是其它字符,替换为下划线,从而在前述步骤的基础上,过滤去掉无意义单词"a","an","the"等,去掉连续的下划线,以及替换所有大写字母为小写,进而确定硬编码代码块在项目源码的源码位置信息以及硬编码所对应的标识信息tag。
步骤103,根据所述项目源码位置,在预设的初始资源文件中写入所述初始硬编码与所述目标标识信息之间的映射关系,获得目标资源文件;
对于安卓项目文件,其提供了对应的资源文件,可以存储于固定目录res/values/strings.xml,通过统一的格式将一个固定数值定义为一个标记并集中储存,并用这个特殊标记来取代变量名称,当标记名称改变时,变量名不变,以便对变量进行改变。当确定了项目文件所对应的全部硬编码以及各个硬编码对应的标识信息tag后,可以将两者的映射关系写入资源文件,实现对资源文件中硬编码和对应标识信息之间的映射关系的更新,保证资源文件中硬编码相关内容与项目文件之间的一致性,进而保证资源文件的有效性。
在具体实现中,对于资源文件,可以先判断目录下是否存在对应的资源文件,若不存在,则先创建与项目文件对应的初始资源文件;若存在,则可以直接进行数据写入。具体的,可以采用项目源码位置,在初始资源文件中写入初始硬编码和初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件。
例如,项目源码中包括初始硬编码①、初始硬编码②以及初始硬编码③等等,分别对应的标识信息为tag①、tag②以及tag③等,则可以分别根据各个初始硬编码的项目源码位置,确定资源文件中对应的资源文件位置,以便保证项目文件在调用资源文件过程中,数据调用的准确性,然后可以按照初始硬编码①-tag①、初始硬编码②-tag②以及初始硬编码③-tag③等对应的映射关系,将初始硬编码与标识信息之间的映射关系写入资源文件,生成对应的目标资源文件,通过将硬编码与标识信息之间的映射关系写入资源文件,一方面可以有效保证资源调用的准确性,另一方面有利于后续对项目文件进行维护,包括更新、修改、删除变量等。
在一种示例中,假设项目源码中的硬编码为“发布内容:”,所对应的tag是somewhere_publish_content,则可以在项目文件对应的资源文件strings.xml的<resources>标签下增加<string name="somewhere_publish_content">发布内容:</string>条目,此时在Java代码中使用R.id.somewhere_publish_content即可获取到对应的文本“发布内容:”,实现对资源文件的调用。
在资源文件写入初始硬编码与标识信息之间的映射关系之前,可以先检查资源文件中是否已经包含同名的标识信息tag,若包含,则获取标识信息tag对应的硬编码,并将其与需要写入的初始硬编码进行比对,然后根据比对结果判断是否写入对应的映射关系。具体的,可以先采用项目源码位置从资源文件中查找预设标识信息,并将预设标识信息与目标标识信息进行比对,判断初始资源文件中是否存在与目标标识信息同名的预设标识信息,若初始资源文件中存在与目标标识信息相同的预设标识信息,则获取预设标识信息对应的预设硬编码;若预设标识信息对应的预设硬编码与目标标识信息对应的初始硬编码不同,则写入初始硬编码和初始硬编码对应的标识信息之间的映射关系。
其中,在资源文件中写入映射关系的过程中,可以在将初始硬编码和初始硬编码对应的目标标识信息之间的映射关系写入初始资源文件中之后,为目标标识信息添加识别信息,以对目标标识信息与预设标识信息进行区分,然后返回判断初始资源文件中是否存在与目标标识信息同名的预设标识信息的步骤,直至完成初始硬编码和初始硬编码对应的目标标识信息之间的映射关系的写入,一方面通过对所写入的映射关系所对应的目标标识信息添加识别信息,可以有效与资源文件中已有的预设标识信息进行区分,保证标识信息存储的有效性,另一方面通过循环检测过程,可以保证写入信息的唯一性,避免写入重复信息造成资源文件的紊乱以及冗余。
例如,在资源文件中写入初始硬编码与标识信息tag之间的映射关系之前,依次检查当前文件中是否已包含同名tag,若包含,检查其映射的硬编码是否相同:若相同,跳过此条目,无需重复写入资源文件;若不同,在此条目末端增加一个标记,接着继续执行同名tag的检测,直至所有的映射条目均写入完毕,得到对应的目标资源文件。
此外,在写入映射关系的过程中,若硬编码包含特殊字符,则需要在写入资源文件之前按照相应的规则进行转义,然后再对转义后的硬编码写入资源文件。具体的,转义字符对照表可以如下所示:
原字符
转义字符
<
<;
>
>;
&
&;
"
";
'
&apos;
其中,在写入资源文件之前,可以遍历各个初始硬编码,检测初始硬编码是否存在特定字符,若存在,则获取针对特定字符的转义信息,然后将特定字符与转义信息进行匹配,确定与特定字符对应的转义字符,然后基于转义字符更新初始硬编码,再将更新后的初始硬编码与标识信息tag之间的映射关系写入资源文件,以建立项目文件与资源文件之间的调用关系。可选地,转义信息可以为特定字符与转义字符之间的映射关系。
步骤104,根据预设替换信息与所述目标标识信息,对所述初始硬编码进行更新,生成目标项目文件。
在本发明实施例中,除了需要对资源文件中的映射关系进行写入,还需要对项目文件中硬编码进行更新,实现硬编码的替换,从而实现在编辑项目文件的同时,自动检索硬编码,实现硬编码的自动替换,不仅有效提高了硬编码替换的效率,而且不需要中断编码过程,增强了编辑源码的连续性。
在具体实现中,可以先获取针对初始硬编码的替换信息,接着采用替换信息与目标标识信息,生成针对初始硬编码的目标源码,然后将初始项目文件中初始硬编码替换为对应的目标源码,生成目标项目文件。其中,替换信息可以为预先设置的针对硬编码转换的规则,通过该规则与标识信息,可以实现项目文件中硬编码的替换,从而实现硬编码的自动替换,提高了硬编码替换的效率。
在一种示例中,当得到项目文件中所有的初始硬编码,以及各初始硬编码对应的标识信息tag后,可以获取对应的替换规则,并基于替换规则与标识信息,生成对应的字符串(即目标硬编码),接着将该目标字符串替换项目文件中原来的硬编码,实现硬编码的替换。例如,假设项目文件中硬编码代码块为“发布内容:”,对应的标识信息tag为somewhere_publish_content,设置的替换规则为context.getString($id)。其中,替换规则中的“$id”代表资源文件strings.xml的引用R.string.tag,从而基于替换规则与tag,可以得到字符串context.getString(R.string.somewhere_publish_content),然后将该字符串替换项目文件中的硬编码,实现在编辑项目文件的过程中,自动完成硬编码替换,不仅有效保证了硬编码替换的效率,而且无需中断编码过程,以及额外执行替换硬编码的操作。
此外,还可以根据需要引入设置的头文件,比如设置引入资源文件的类com.a.b.R,则在源代码文件插入头文件“import com.a.b.R;”。具体的,需要引入储存tag和硬编码映射的strings.xml文件的路径,通常是“包名.R”,从而建立项目文件与资源文件中之间的调用关系,以便实现项目文件对资源文件中的资源信息进行调用。另外,常用的getString()方法实际上是Context对象的公开方法,如果执行硬编码替换的代码无法直接引用到同一名称的Context对象,则需要额外引入Context对象的类,在头文件处增加设置包名,替换规则中的context改为获取Context对象的方法,从而实现在项目文件编辑过程中,自动完成硬编码替换。
需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,本领域技术人员在本发明的思想指导下,还可以根据实际需要进行设置,本发明对此不作限制。
在本发明实施例中,在对项目文件进行编辑的过程中,当开发者编辑结束后,可以获取项目文件的项目源码以及项目源码对应的文件格式,接着基于文件格式,从项目源码中提取初始硬编码,并获取初始硬编码对应的目标标识信息以及在项目源码中的项目源码位置,接着,一方面可以根据项目源码位置,在预设的资源文件中写入初始硬编码与目标标识信息之间的映射关系,实现资源文件的更新,保证资源文件的有效性,另一方面可以根据预设替换信息与目标标识信息对初始项目文件的初始硬编码进行更新,生成目标项目文件,从而可以在项目开发的过程中,对项目文件中硬编码进行替换,减少了开发过程中的额外操作,提高了硬编码替换的效率,并且,编辑过程中不需要中断进行硬编码替换,增强了编辑源码的连续性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图2,示出了本发明实施例中提供的一种项目文件的处理装置的结构框图,具体可以包括如下模块:
项目源码获取模块201,用于响应针对初始项目文件的编辑操作的结束,获取所述初始项目文件的项目源码以及所述项目源码对应的文件格式;
硬编码信息提取模块202,用于基于所述文件格式,从所述项目源码中提取初始硬编码,并获取所述初始硬编码对应的目标标识信息,以及所述初始硬编码在所述项目源码中的项目源码位置;
资源文件处理模块203,用于根据所述项目源码位置,在预设的初始资源文件中写入所述初始硬编码与所述目标标识信息之间的映射关系,获得目标资源文件;
项目文件生成模块204,用于根据预设替换信息与所述目标标识信息,对所述初始硬编码进行更新,生成目标项目文件。
在本发明的一种可选实施例中,所述硬编码信息提取模块202包括:
源码文件提取子模块,用于从所述项目源码中,提取目标文件格式的源码文件;
提取信息获取子模块,用于获取与所述目标文件格式匹配的提取信息;
初始硬编码提取子模块,用于采用所述提取信息与所述目标文件格式,从所述源码文件中提取初始硬编码。
在本发明的一种可选实施例中,所述提取信息包括正则表达式,所述初始硬编码提取子模块具体用于:
遍历所述源码文件,提取满足所述正则表达式的源码作为所述源码文件对应的初始硬编码;
其中,所述源码文件至少包括Java文件、Kotlin文件以及Xml文件中的一种,不同的源码文件对应不同的正则表达式。
在本发明的一种可选实施例中,所述资源文件处理模块203包括:
初始资源文件获取子模块,用于获取与所述初始项目文件匹配的初始资源文件;
目标资源文件获取子模块,用于采用所述项目源码位置,在所述初始资源文件中写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件。
在本发明的一种可选实施例中,所述目标资源文件获取子模块具体用于:
采用所述项目源码位置从所述资源文件中查找预设标识信息;
将所述预设标识信息与所述目标标识信息进行比对,判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息;
若所述初始资源文件中存在与所述目标标识信息相同的预设标识信息,则获取所述预设标识信息对应的预设硬编码;
若所述预设标识信息对应的预设硬编码与所述目标标识信息对应的初始硬编码不同,则写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系。
在本发明的一种可选实施例中,所述目标资源文件获取子模块具体用于:
将所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系写入所述初始资源文件中;
为所述目标标识信息添加识别信息,以对所述目标标识信息与所述预设标识信息进行区分;
返回所述判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息的步骤,直至完成所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系的写入。
在本发明的一种可选实施例中,所述目标资源文件获取子模块具体用于:
若所述初始硬编码存在特定字符,则对将所述特定字符转换为转义字符,对所述初始硬编码进行更新;
在所述初始资源文件中写入转换后的初始硬编码和目标标识信息之间的映射关系。
在本发明的一种可选实施例中,所述项目文件生成模块204包括:
替换信息获取子模块,用于获取针对所述初始硬编码的替换信息;
目标源码生成子模块,用于采用所述替换信息与所述目标标识信息,生成针对所述初始硬编码的目标源码;
项目文件生成子模块,用于将所述初始项目文件中所述初始硬编码替换为对应的目标源码,生成目标项目文件。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供一种电子设备,如图3所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现如下步骤:
响应针对初始项目文件的编辑操作的结束,获取所述初始项目文件的项目源码以及所述项目源码对应的文件格式;
基于所述文件格式,从所述项目源码中提取初始硬编码,并获取所述初始硬编码对应的目标标识信息,以及所述初始硬编码在所述项目源码中的项目源码位置;
根据所述项目源码位置,在预设的初始资源文件中写入所述初始硬编码与所述目标标识信息之间的映射关系,获得目标资源文件;
根据预设替换信息与所述目标标识信息,对所述初始硬编码进行更新,生成目标项目文件。
在本发明的一种可选实施例中,所述基于所述文件格式,从所述项目源码中提取初始硬编码,包括:
从所述项目源码中,提取目标文件格式的源码文件;
获取与所述目标文件格式匹配的提取信息;
采用所述提取信息与所述目标文件格式,从所述源码文件中提取初始硬编码。
在本发明的一种可选实施例中,所述提取信息包括正则表达式,所述采用所述提取信息与所述目标文件格式,从所述源码文件中提取初始硬编码,包括:
遍历所述源码文件,提取满足所述正则表达式的源码作为所述源码文件对应的初始硬编码;
其中,所述源码文件至少包括Java文件、Kotlin文件以及Xml文件中的一种,不同的源码文件对应不同的正则表达式。
在本发明的一种可选实施例中,所述根据所述项目源码位置,在预设的初始资源文件中写入所述初始硬编码与所述目标标识信息之间的映射关系,获得目标资源文件,包括:
获取与所述初始项目文件匹配的初始资源文件;
采用所述项目源码位置,在所述初始资源文件中写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件。
在本发明的一种可选实施例中,所述采用所述项目源码位置,在所述初始资源文件中写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件,包括:
采用所述项目源码位置从所述资源文件中查找预设标识信息;
将所述预设标识信息与所述目标标识信息进行比对,判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息;
若所述初始资源文件中存在与所述目标标识信息相同的预设标识信息,则获取所述预设标识信息对应的预设硬编码;
若所述预设标识信息对应的预设硬编码与所述目标标识信息对应的初始硬编码不同,则写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,获得目标资源文件。
在本发明的一种可选实施例中,所述写入所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系,包括:
将所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系写入所述初始资源文件中;
为所述目标标识信息添加识别信息,以对所述目标标识信息与所述预设标识信息进行区分;
返回所述判断所述初始资源文件中是否存在与所述目标标识信息同名的预设标识信息的步骤,直至完成所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系的写入。
在本发明的一种可选实施例中,所述将所述初始硬编码和所述初始硬编码对应的目标标识信息之间的映射关系写入所述初始资源文件中,包括:
若所述初始硬编码存在特定字符,则对将所述特定字符转换为转义字符,对所述初始硬编码进行更新;
在所述初始资源文件中写入转换后的初始硬编码和目标标识信息之间的映射关系。
在本发明的一种可选实施例中,所述根据预设替换信息与所述目标标识信息,对所述初始硬编码进行更新,生成目标项目文件,包括:
获取针对所述初始硬编码的替换信息;
采用所述替换信息与所述目标标识信息,生成针对所述初始硬编码的目标源码;
将所述初始项目文件中所述初始硬编码替换为对应的目标源码,生成目标项目文件。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
如图4所示,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质401,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的游戏的交互方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中所述的游戏的交互方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。