CN104462393B - 用于编译的文件路径的确定方法及装置 - Google Patents
用于编译的文件路径的确定方法及装置 Download PDFInfo
- Publication number
- CN104462393B CN104462393B CN201410758358.0A CN201410758358A CN104462393B CN 104462393 B CN104462393 B CN 104462393B CN 201410758358 A CN201410758358 A CN 201410758358A CN 104462393 B CN104462393 B CN 104462393B
- Authority
- CN
- China
- Prior art keywords
- path
- file
- resource
- folder
- destinations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于编译的文件路径的确定方法及装置。其中,用于编译的文件路径的确定方法包括:解析第一文件,以获取第二文件;解析第二文件,以获取资源文件,其中,资源文件为第二文件中调用的文件;将第二文件和资源文件汇总,得到多个目标文件;根据多个目标文件的第一路径确定多个目标文件的第二路径,其中,第一路径为多个目标文件在源代码文件夹中的路径,第二路径为多个目标文件在生成代理文件夹中存放的绝对路径,代理文件夹用于存放待编译的文件。通过本发明,解决了现有技术中人工方式确定编译所需的文件的路径,导致工作效率低的问题,进而达到了提高工作效率的效果。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种用于编译的文件路径的确定方法及装置。
背景技术
在持续集成编译发布代码时,为了确保编译的顺利通过,需要通过人工方式确定编译所需的文件的路径,但通过人工方式确定路径的效率较低,而且后续进行相关文件提交过程中,还可能将无关文件进行提交导致无意义的编译,从而增加服务器抓取代码以及编译过程的压力;还可能在文件较多的情况下,将源代码文件夹中的需要使用的文件的路径与生成代理文件夹中的文件的路径对应错误,导致编译失败。
针对相关技术中人工方式确定编译所需的文件的路径,导致工作效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种用于编译的文件路径的确定方法及装置,以解决现有技术中人工方式确定编译所需的文件的路径,导致工作效率低的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种用于编译的文件路径的确定方法。
根据本发明的用于编译的文件路径的确定方法包括:解析第一文件,以获取第二文件,其中,第一文件是扩展名为.sln的文件,第二文件是扩展名为.csproj的文件;解析所述第二文件,以获取资源文件,其中,所述资源文件为所述第二文件中调用的文件;将所述第二文件和所述资源文件汇总,得到多个目标文件;以及根据多个所述目标文件的第一路径确定多个所述目标文件的第二路径,其中,所述第一路径为多个所述目标文件在源代码文件夹中的路径,所述第二路径为多个所述目标文件在生成代理文件夹中存放的绝对路径,所述代理文件夹用于存放待编译的文件。
进一步地,解析第一文件,以获取第二文件包括:判断所述第一文件中是否包含所述第二文件的标识;在判断出所述第一文件中包含所述第二文件的标识的情况下,获取所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径;以及根据所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径,确定所述第二文件。
进一步地,解析所述第二文件,以获取资源文件包括:判断所述第二文件中是否包含所述资源文件的标识;在判断出所述第二文件中包含所述资源文件的标识的情况下,获取所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径;以及根据所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径,确定所述资源文件。
进一步地,根据所述多个目标文件的第一路径确定多个所述目标文件的第二路径包括:获取每个所述目标文件在所述源代码文件夹中的路径,得到第一路径Ai,i依次取1至s,s为多个所述目标文件的个数;对所述第一路径Ai按照首字母进行排序;判断所述第一路径Am与第一路径Am+1是否相同,其中,m依次取1至s-1;在判断出所述第一路径Am与所述第一路径Am+1相同的情况下,删除所述第一路径Am或者所述第一路径Am+1,得到处理后的所述第一路径;以及根据处理后的所述第一路径与接收的预设路径,得到所述第二路径,其中,所述预设路径为所述生成代理文件夹的绝对路径。
进一步地,在删除所述第一路径Am或者所述第一路径Am+1之后,并且在根据处理后的所述第一路径与接收的预设路径,得到所述第二路径之前,根据所述多个目标文件的第一路径确定多个所述目标文件的第二路径还包括:判断第三路径Bz是否包含第三路径Bz+1,其中,第三路径Bn为删除第一路径A1至第一路径As中的相同路径后的第一路径集合,n依次取1至q,q=s-p,p为第一路径A1至第一路径As中的相同路径的数量z依次取1至n-1;在判断出所述第三路径Bz包含第三路径Bz+1的情况下,获取所述第三路径Bz对应的文件夹中包含的第三文件的第四路径Da,其中,第三路径Bz+1为第四路径D1至第四路径Dj中的任一路径,a依次取1至j,j为所述第三文件的个数,所述第三文件为所述第三路径Bz对应的文件夹中包含的文件;判断所述第三路径B1至第三路径Bq是否包括所述第四路径D1至第四路径Dj;以及在判断出所述第三路径B1至所述第三路径Bq包括所述第四路径D1至第四路径Dj的情况下,在所述第三路径B1至所述第三路径Bq中删除与所述第四路径D1至所述第四路径Dj相同的路径,得到处理后的所述第一路径。
为了实现上述目的,根据本发明的另一方面,提供了一种用于编译的文件路径的确定装置。
根据本发明的用于编译的文件路径的确定装置包括:第一解析单元,用于解析第一文件,以获取第二文件,其中,第一文件是扩展名为.sln的文件,第二文件是扩展名为.csproj的文件;第二解析单元,用于解析所述第二文件,以获取资源文件,其中,所述资源文件为所述第二文件中调用的文件;汇总单元,用于将所述第二文件和所述资源文件汇总,得到多个目标文件;以及确定单元,用于根据多个所述目标文件的第一路径确定多个所述目标文件的第二路径,其中,所述第一路径为多个所述目标文件在源代码文件夹中的路径,所述第二路径为多个所述目标文件在生成代理文件夹中存放的绝对路径,所述代理文件夹用于存放待编译的文件。
进一步地,所述第一解析单元包括:第一判断模块,用于判断所述第一文件中是否包含所述第二文件的标识;第一处理模块,用于在判断出所述第一文件中包含所述第二文件的标识的情况下,获取所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径;以及第一确定模块,用于根据所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径,确定所述第二文件。
进一步地,所述第二解析单元包括:第二判断模块,用于判断所述第二文件中是否包含所述资源文件的标识;第二处理模块,用于在判断出所述第二文件中包含所述资源文件的标识的情况下,获取所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径;以及第二确定模块,用于根据所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径,确定所述资源文件。
进一步地,所述确定单元包括:第一获取模块,用于获取每个所述目标文件在所述源代码文件夹中的路径,得到第一路径Ai,i依次取1至s,s为多个所述目标文件的个数;排序模块,用于对所述第一路径Ai按照首字母进行排序;第三判断模块,用于判断所述第一路径Am与第一路径Am+1是否相同,其中,m依次取1至s-1;第三处理模块,用于在判断出所述第一路径Am与所述第一路径Am+1相同的情况下,删除所述第一路径Am或者所述第一路径Am+1,得到处理后的所述第一路径;以及第三确定模块,用于根据处理后的所述第一路径与接收的预设路径,得到所述第二路径,其中,所述预设路径为所述生成代理文件夹的绝对路径。
进一步地,所述确定单元还包括:第四判断模块,用于判断第三路径Bz是否包含第三路径Bz+1,其中,第三路径Bn为删除第一路径A1至第一路径As中的相同路径后的第一路径集合,n依次取1至q,q=s-p,p为第一路径A1至第一路径As中的相同路径的数量z依次取1至n-1;第四处理模块,用于在判断出所述第三路径Bz包含第三路径Bz+1的情况下,获取所述第三路径Bz对应的文件夹中包含的第三文件的第四路径Da,其中,第三路径Bz+1为第四路径D1至第四路径Dj中的任一路径,a依次取1至j,j为所述第三文件的个数,所述第三文件为所述第三路径Bz对应的文件夹中包含的文件;第五判断模块,用于判断所述第三路径B1至第三路径Bq是否包括所述第四路径D1至第四路径Dj;以及第五处理模块,用于在判断出所述第三路径B1至所述第三路径Bq包括所述第四路径D1至第四路径Dj的情况下,在所述第三路径B1至所述第三路径Bq中删除与所述第四路径D1至所述第四路径Dj相同的路径,得到处理后的所述第一路径。
通过本发明,采用解析第一文件,以获取第二文件,其中,第一文件是扩展名为.sln的文件,第二是扩展名为.csproj的文件;解析第二文件,以获取资源文件,其中,资源文件为第二文件中调用的文件;将第二文件和资源文件汇总,得到多个目标文件;以及根据多个目标文件的第一路径确定多个目标文件的第二路径,其中,第一路径为多个目标文件在源代码文件夹中的路径,第二路径为多个目标文件在生成代理文件夹中存放的绝对路径,代理文件夹用于存放待编译的文件。通过解析第一文件和第二文件,实现了目标文件的确定;进而根据目标文件在源代码文件中的存放路径确定了该目标文件存放在用于存放待编译文件的文件夹中的绝对路径,解决了现有技术中人工方式确定编译所需的文件的路径,导致工作效率低的问题,进而达到了提高工作效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的用于编译的文件路径的确定方法的流程图;
图2是根据本发明优选实施例的用于编译的文件路径的确定方法的流程图;
图3是根据本发明优选实施例的用于编译的文件路径的确定方法中按照持续集成格式输出的效果示意图;
图4是根据本发明优选实施例的用于编译的文件路径的确定方法中将输出结果复制到源设置的工作文件夹中的效果示意图;以及
图5是根据本发明实施例的用于编译的文件路径的确定装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种用于编译的文件路径的确定方法,图1是根据本发明实施例的用于编译的文件路径的确定方法的流程图,如图1所示,该方法包括如下的步骤S102至步骤S108:
S102:解析第一文件,以获取第二文件,其中,第一文件是扩展名为.sln的文件,第二文件是扩展名为.csproj的文件,即,通过解析第一文件,来获取第二文件。具体地,扩展名为.sln的文件可以称为解决方案文件,扩展名为.csproj的文件可以称为工程文件,解决方案文件表示一个项目组,它包含项目组中所有的工程文件信息,工程文件信息包含工程文件的名称和工程文件在源代码文件夹中的存放路径。
S104:解析第二文件,以获取资源文件,其中,资源文件为第二文件中调用的文件,即,通过对在步骤S102中获取到的第二文件进行解析,来获取资源文件。工程文件中调用的文件(即,资源文件)可以是工程文件,也可以是类库,还可以是动态链接库(Dynamic LinkLibrary,简称DLL)。
S106:将第二文件和资源文件汇总,得到多个目标文件。例如:在步骤S102对解决方案文件进行解析,获取到10个工程文件;在步骤S104中对每个工程文件进行解析,共获取到100个资源文件,得到的目标文件为工程文件与资源文件之和,也就是110个。
S108:根据多个目标文件的第一路径确定多个目标文件的第二路径,其中,第一路径为多个目标文件在源代码文件夹中的路径,第二路径为多个目标文件在生成代理文件夹中存放的绝对路径,代理文件夹用于存放待编译的文件,也就是通过多个目标文件在源代码文件夹中的存放路径确定出这多个目标文件在用于存放待编译文件的文件夹中的存放路径。
在本发明实施列中,通过解析第一文件和第二文件,实现了目标文件的确定;进而根据目标文件在源代码文件中的存放路径确定了该目标文件在用于存放待编译文件的文件夹中的存放路径,解决了现有技术中人工方式确定编译所需的文件的路径,导致工作效率低的问题,进而达到了提高工作效率的效果。
优选地,在本发明实施列中,可以通过步骤1-1步骤1-3实现对第一文件进行解析,从而获取第二文件,步骤1-1步骤1-3具体如下:
步骤1-1:判断第一文件中是否包含第二文件的标识,具体地,是逐行判断第一文件的内容中是否包含第二文件的标识,第二文件的标识为第二文件的扩展名,即,.csproj。本步骤也就是逐行判断第一文件的内容中是否包含.csproj。
步骤1-2:在判断出第一文件中包含第二文件的标识的情况下,获取第二文件名称以及第二文件在源代码文件夹中的存放路径,也即,在判断出第一文件内容中的某一行包含.csproj的情况下,获取该行中.csproj对应的第二文件的名称与第二文件在源代码文件夹中的存放路径。
步骤1-3:根据第二文件名称以及第二文件在源代码文件夹中的存放路径,确定第二文件。在知道第二文件的名称和存放路径的情况下,就可以确定第二文件,进而还可以获取到第二文件的内容。
在本发明实施例中,通过判断第一文件中是否包含第二文件的标识,再对第二文件进行获取,提高了对第二文件获取的准确性,进而为后续确定文件路径提供了良好的基础。
优选地,在本发明实施列中,可以通过步骤2-1步骤2-3实现对第二文件进行解析,从而获取资源文件,步骤2-1步骤2-3具体如下:
步骤2-1:判断第二文件中是否包含资源文件的标识,具体地,也是逐行判断第二文件的内容中是否包含资源文件的标识,第二文件的标识为第二文件的扩展名,因为第二文件可以是类库,可以是工程文件,还可以是动态链接库,所以第二文件的标识可以是.csproj,也可以是.dll,还可以是类库的标识,如:.jar。
步骤2-2:在判断出第二文件中包含资源文件的标识的情况下,获取资源文件名称以及资源文件在源代码文件夹中的存放路径,也即,在判断出第二文件内容中的某一行包含.csproj、.dll或者类库的标识的情况下,获取该行中的标识对应的资源文件的名称与资源文件在源代码文件夹中的存放路径。
步骤2-3:根据资源文件名称以及资源文件在源代码文件夹中的存放路径,确定资源文件。在知道资源文件的名称和存放路径的情况下,就可以确定资源文件。
在本发明实施例中,通过判断第二文件中是否包含资源文件的标识,再对资源文件进行获取,提高了对资源文件获取的准确性,为后续确定文件路径提供了良好的基础。
优选地,在本发明实施列中,根据多个目标文件的第一路径确定多个目标文件的第二路径包括步骤3-1至步骤3-5,具体如下:
步骤3-1:获取每个目标文件在源代码文件夹中的路径,得到第一路径Ai,i依次取1至s,s为多个目标文件的个数,即,根据多个目标文件,得到多个第一路径,目标文件的个数与第一路径的个数相等。
步骤3-2:对第一路径Ai按照首字母进行排序,通过对第一路径Ai按照首字母的顺序进行排序,实现了相同或者具有包含关系的第一路径都被连续的排列。
步骤3-3:判断第一路径Am与第一路径Am+1是否相同,其中,m依次取1至s-1,即,遍历第一路径A1至As,判断每两个相邻的第一路径是否为相同的路径,也就是判断每两个相邻的第一路径是否为重复的路径。
步骤3-4:在判断出第一路径Am与第一路径Am+1相同的情况下,删除第一路径Am或者第一路径Am+1,得到处理后的第一路径,即,在每判断出相邻两个第一路径是相同(重复)的路径的情况下,删除这两个重复的第一路径之中的任意一个,将所有重复的第一路径删除后,得到处理后的第一路径,该处理后的第一路径为删除重复路径后的第一路径的集合。
步骤3-5:根据处理后的第一路径与接收的预设路径,得到第二路径,其中,预设路径为存放生成代理文件夹的绝对路径。即,根据删除重复路径之后的第一路径的集合和接收的预先设置的存放代理生成文件夹的绝对路径,可以确定处理后的第一路径对应的目标文件在代理生成文件夹中存放的绝对路径。
在本发明实施列中,通过删除重复的第一路径,降低了得到重复的第二路径的可能性,达到了节约资源,提高工作效率的效果。
优选地,在本发明实施列中,在删除第一路径Am或者第一路径Am+1之后,并且在根据处理后的第一路径与接收的预设路径,得到第二路径之前,根据多个目标文件的第一路径确定多个目标文件的第二路径还包括步骤3-6至步骤3-9,具体如下:
步骤3-6:判断第三路径Bz是否包含第三路径Bz+1,其中,第三路径Bn为删除第一路径A1至第一路径As中的相同路径后的第一路径集合,n依次取1至q,q=s-p,p为第一路径A1至第一路径As中的相同路径的数量z依次取1至n-1,即,判断第三路径Bz+1是否是第三路径Bz的子集,也就是判断每两个相邻的第三路径中,后一个第三路径是否是前一个第三路径的子集。
步骤3-7:在判断出第三路径Bz包含第三路径Bz+1的情况下,获取第三路径Bz对应的文件夹中包含的第三文件的第四路径Da,其中,第三路径Bz+1为第四路径D1至第四路径Dj中的任一路径,a依次取1至j,j为第三文件的个数,第三文件为第三路径Bz对应的文件夹中包含的文件,即,在每判断出第三路径Bz+1是第三路径Bz的子集的情况下,找到第三路径Bz所对应的文件夹包含的文件(即,第三文件),获取文件夹包含的所有文件的路径(即,第四路径)。例如:第三路径Bz为A\B;第三路径Bz+1为A\B\C,第三路径Bz(即,A\B)对应的文件夹B中包含文件C、文件D和文件E,文件C、文件D和文件E分别对应的路径为A\B\C、A\B\D和A\B\E,经过判断可知,第三路径Bz+1(即,A\B\C)是第三路径Bz(A\B)的子集,那么获取文件夹B中包含的文件(即,文件C、文件D和文件E)的路径(即,第四路径),分别是第四路径A\B\C、第四路径A\B\D和第四路径A\B\E。
步骤3-8:判断第三路径B1至第三路径Bq是否包括第四路径D1至第四路径Dj,也就是,判断第三路径B1至第三路径Bq中是否存在与每个第四路径都相同的路径。继续采用步骤3-7中的举例进行说明,即,判断第三路径B1至第三路径Bq中是否存在第四路径A\B\C、第四路径A\B\D和第四路径A\B\E。
步骤3-9:在判断出第三路径B1至第三路径Bq包括第四路径D1至第四路径Dj的情况下,在第三路径B1至第三路径Bn-1中删除与第四路径D1至第四路径Dj相同的路径,得到处理后的第一路径,也就是,在判断出第三路径B1至第三路径Bq包含所有第四路径时,在第三路径中删除所有与第四路径相同的路径,得到处理后的第一路径。
在本发明实施列中,通过在对第一路径进行去重处理的基础上,再进行去包含处理,达到了节约资源,提高工作效率的效果。
图2是根据本发明优选实施例的用于编译的文件路径的确定方法的流程图,如图2所示,该方法包括如下的步骤S202至步骤S212:
S202:解决解决方案,获取包含的工程文件及对应路径,具体地,解决方案文件相当于步骤S102中的第一文件,工程文件相当于步骤S102中的第二文件,对应的路径为工程文件在源代码文件中的存放路径,该步骤相当于步骤S102,在此不再重复说明。
S204:解析工程文件,获取包含的所有资源文件及对应路径,该步骤中对应的路径为资源文件在源代码文件中的存放路径,相当于步骤S104,在此不再重复说明。
S206:确定工程文件和资源文件在生成代理文件夹中存放的绝对路径,相当于步骤S106,在此不再重复说明。该绝对路径即为编译所需的文件,在生成代理文件夹中的存放路径。
S208:将资源文件夹中文件的路径与代理文件夹中文件的路径进行对应,并输出,即,将编译所需的文件在资源文件夹中存放的路径与在生成代理文件夹中文件的存放路径,进行对应,并按照与持续集成相一致的格式输出。图3是根据本发明优选实施例的用于编译的文件路径的确定方法中按照持续集成格式输出的效果示意图,将资源文件夹中文件的路径与代理文件夹中文件的路径进行对应,输出后的格式可以参见图3。
S210:接收复制指令以复制输出结果,然后按照粘贴指令经输出结果粘贴到源设置的工作文件夹中,也即,将输出结果复制到工具MSBuild中的源设置的工作文件夹中。图4是根据本发明优选实施例的用于编译的文件路径的确定方法中将输出结果复制到源设置的工作文件夹中的效果示意图。
S212:完成其它配置项,进行文件编译,在完成工具MSBuild其它配置项后,实现将此次编译所需的文件按照绝对路径从源代码文件夹复制到生成代理文件夹,进而可以对存放在生成代理文件夹中需要进行编译的文件进行编译。
在本发明实施例中,通过根据解决方案文件和工程文件,确定出编译所需的文件,不但能够保证完成编译,还避免无关文件的提交导致的无意义的编译,达到了减轻服务器抓取代码和编译过程的压力,提高工作效率的效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述用于编译的文件路径的确定方法的用于编译的文件路径的确定装置,该确定装置主要用于执行本发明实施例上述内容所提供的确定方法,以下对本发明实施例所提供的用于编译的文件路径的确定装置做具体介绍:
根据本发明实施例,提供了一种用于编译的文件路径的确定装置,图5是根据本发明实施例的用于编译的文件路径的确定装置的示意图,如图5所示,该装置主要包括第一解析单元10、第二解析单元20、汇总单元30和确定单元40,其中:
第一解析单元10用于解析第一文件,以获取第二文件,其中,第一文件是扩展名为.sln的文件,第二文件是扩展名为.csproj的文件,即,通过解析第一文件,来获取第二文件。具体地,扩展名为.sln的文件可以称为解决方案文件,扩展名为.csproj的文件可以称为工程文件,解决方案文件表示一个项目组,它包含项目组中所有的工程文件信息,工程文件信息包含工程文件的名称和工程文件在源代码文件夹中的存放路径。
第二解析单元20用于解析第二文件,以获取资源文件,其中,资源文件为第二文件中调用的文件,即,通过对在第一解析单元10中获取到的第二文件进行解析,来获取资源文件。工程文件中调用的文件(即,资源文件)可以是工程文件,也可以是类库,还可以是动态链接库(Dynamic Link Library,简称DLL)。
汇总单元30用于将第二文件和资源文件汇总,得到多个目标文件。例如:通过第一解析单元对解决方案文件进行解析,获取到10个工程文件;通过第二解析单元10对每个工程文件进行解析,共获取到100个资源文件,得到的目标文件为工程文件与资源文件之和,也就是110个。
确定单元40用于根据多个目标文件的第一路径确定多个目标文件的第二路径,其中,第一路径为多个目标文件在源代码文件夹中的路径,第二路径为多个目标文件在生成代理文件夹中存放的绝对路径,代理文件夹用于存放待编译的文件,也就是通过多个目标文件在源代码文件夹中的存放路径确定出这多个目标文件在用于存放待编译文件的文件夹中的存放路径。
在本发明实施列中,通过解析第一文件和第二文件,实现了目标文件的确定;进而根据目标文件在源代码文件中的存放路径确定了该目标文件在用于存放待编译文件的文件夹中的存放路径,解决了现有技术中人工方式确定编译所需的文件的路径,导致工作效率低的问题,进而达到了提高工作效率的效果。
优选地,在本发明实施例中,第一解析单元10包括第一判断模块、第一处理模块和第一确定模块其中:
第一判断模块用于判断第一文件中是否包含第二文件的标识,具体地,是逐行判断第一文件的内容中是否包含第二文件的标识,第二文件的标识为第二文件的扩展名,即,.csproj。本模块也就是逐行判断第一文件的内容中是否包含.csproj。
第一处理模块用于在判断出第一文件中包含第二文件的标识的情况下,获取第二文件名称以及第二文件在源代码文件夹中的存放路径,也即,在判断出第一文件内容中的某一行包含.csproj的情况下,获取该行中.csproj对应的第二文件的名称与第二文件在源代码文件夹中的存放路径。
第一确定模,用于根据第二文件名称以及第二文件在源代码文件夹中的存放路径,确定第二文件。在知道第二文件的名称和存放路径的情况下,就可以确定第二文件,进而还可以获取到第二文件的内容。
在本发明实施例中,通过判断第一文件中是否包含第二文件的标识,再对第二文件进行获取,提高了对第二文件获取的准确性,进而为后续确定文件路径提供了良好的基础。
优选地,在本发明实施例中,第二解析单元20包括第二判断模块、第二处理模块和第二确定模块,其中:
第二判断模块用于判断第二文件中是否包含资源文件的标识,具体地,也是逐行判断第二文件的内容中是否包含资源文件的标识,第二文件的标识为第二文件的扩展名,因为第二文件可以是类库,可以是工程文件,还可以是动态链接库,所以第二文件的标识可以是.csproj,也可以是.dll,还可以是类库的标识,如:.jar。
第二处理模块用于在判断出第二文件中包含资源文件的标识的情况下,获取资源文件名称以及资源文件在源代码文件夹中的存放路径,也即,在判断出第二文件内容中的某一行包含.csproj、.dll或者类库的标识的情况下,获取该行中的标识对应的资源文件的名称与资源文件在源代码文件夹中的存放路径。
第二确定模块用于根据资源文件名称以及资源文件在源代码文件夹中的存放路径,确定资源文件。在知道资源文件的名称和存放路径的情况下,就可以确定资源文件。
在本发明实施例中,通过判断第二文件中是否包含资源文件的标识,再对资源文件进行获取,提高了对资源文件获取的准确性,为后续确定文件路径提供了良好的基础。
优选地,在本发明实施例中,确定单元40包括第一获取模块、排序模块、第三判断模块、第三处理模块和第三确定模块,其中:
第一获取模块用于获取每个目标文件在源代码文件夹中的路径,得到第一路径Ai,i依次取1至s,s为多个目标文件的个数,即,根据多个目标文件,得到多个第一路径,目标文件的个数与第一路径的个数相等。
排序模块用于对第一路径Ai按照首字母进行排序,通过对第一路径Ai按照首字母的顺序进行排序,实现了相同或者具有包含关系的第一路径都被连续的排列。
第三判断模块用于判断第一路径Am与第一路径A m+1是否相同,其中,m依次取1至s-1,即,遍历第一路径A1至As,判断每两个相邻的第一路径是否为相同的路径,也就是判断每两个相邻的第一路径是否为重复的路径。
第三处理模块用于在判断出第一路径Am与第一路径Am+1相同的情况下,删除第一路径Am或者第一路径Am+1,得到处理后的第一路径,即,在每判断出相邻两个第一路径是相同(重复)的路径的情况下,删除这两个重复的第一路径之中的任意一个,将所有重复的第一路径删除后,得到处理后的第一路径,该处理后的第一路径为删除重复路径后的第一路径的集合。
第三确定模块用于根据处理后的第一路径与接收的预设路径,得到第二路径,其中,预设路径为生成代理文件夹的绝对路径,即,根据删除重复路径之后的第一路径的集合和接收的预先设置的存放代理生成文件夹的绝对路径,可以确定处理后的第一路径对应的目标文件在代理生成文件夹中存放的绝对路径。
在本发明实施列中,通过删除重复的第一路径,降低了得到重复的第二路径的可能性,达到了节约资源,提高工作效率的效果。
优选地,在本发明实施例中,确定单元40还包括第四判断模块、第四处理模块、第五判断模块和第五处理模块,其中:
在第三处理模块删除第一路径Am或者第一路径Am+1之后,并且在第三确定模块根据处理后的第一路径与接收的预设路径,得到第二路径之前,第四判断模块用于判断第三路径Bz是否包含第三路径Bz+1,其中,第三路径Bn为删除第一路径A1至第一路径As中的相同路径后的第一路径集合,n依次取1至q,q=s-p,p为第一路径A1至第一路径As中的相同路径的数量,z依次取1至n-1,即,判断第三路径Bz+1是否是第三路径Bz的子集,也就是判断每两个相邻的第三路径中,后一个第三路径是否是前一个第三路径的子集。
第四处理模块用于在判断出第三路径Bz包含第三路径Bz+1的情况下,获取第三路径Bz对应的文件夹中包含的第三文件的第四路径Da,其中,第三路径Bz+1为第四路径D1至第四路径Dj中的任一路径,a依次取1至j,j为第三文件的个数,第三文件为第三路径Bz对应的文件夹中包含的文件,即,在每判断出第三路径Bz+1是第三路径Bz的子集的情况下,找到第三路径Bz所对应的文件夹包含的文件(即,第三文件),获取文件夹包含的所有文件的路径(即,第四路径)。例如:第三路径Bz为A\B;第三路径Bz+1为A\B\C,第三路径Bz(即,A\B)对应的文件夹B中包含文件C、文件D和文件E,文件C、文件D和文件E分别对应的路径为A\B\C、A\B\D和A\B\E,经过判断可知,第三路径Bz+1(即,A\B\C)是第三路径Bz(A\B)的子集,那么获取文件夹B中包含的文件(即,文件C、文件D和文件E)的路径(即,第四路径),分别是第四路径A\B\C、第四路径A\B\D和第四路径A\B\E。
第五判断模块用于判断第三路径B1至第三路径Bq是否包括第四路径D1至第四路径Dj,也就是,判断第三路径B1至第三路径Bq中是否存在与每个第四路径都相同的路径。继续采用第四处理模块中的举例进行说明,即,判断第三路径B1至第三路径Bq中是否存在第四路径A\B\C、第四路径A\B\D和第四路径A\B\E。
第五处理模块用于在判断出第三路径B1至第三路径Bq包括第四路径D1至第四路径Dj的情况下,在第三路径B1至第三路径Bq中删除与第四路径D1至第四路径Dj相同的路径,得到处理后的第一路径,也就是,在判断出第三路径B1至第三路径Bq包含所有第四路径时,在第三路径中删除所有与第四路径相同的路径,得到处理后的第一路径。
在本发明实施列中,通过在对第一路径进行去重处理的基础上,再进行去包含处理,达到了节约资源,提高工作效率的效果。
从以上的描述中,可以看出,本发明解决了现有技术中人工方式确定编译所需的文件的路径,导致工作效率低的问题,进而达到了提高工作效率的效果。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种用于编译的文件路径的确定方法,其特征在于,包括:
解析第一文件,以获取第二文件,其中,第一文件是扩展名为.sln的文件,第二文件是扩展名为.csproj的文件;
解析所述第二文件,以获取资源文件,其中,所述资源文件为所述第二文件中调用的文件;
将所述第二文件和所述资源文件汇总,得到多个目标文件;以及
根据多个所述目标文件的第一路径确定多个所述目标文件的第二路径,其中,所述第一路径为多个所述目标文件在源代码文件夹中的路径,所述第二路径为多个所述目标文件在生成代理文件夹中存放的绝对路径,所述代理文件夹用于存放待编译的文件,
其中,根据所述多个目标文件的第一路径确定多个所述目标文件的第二路径包括:
获取每个所述目标文件在所述源代码文件夹中的路径,得到第一路径Ai,i依次取1至s,s为多个所述目标文件的个数;
对所述第一路径Ai按照首字母进行排序;
判断所述第一路径Am与第一路径Am+1是否相同,其中,m依次取1至s-1;
在判断出所述第一路径Am与所述第一路径Am+1相同的情况下,删除所述第一路径Am或者所述第一路径Am+1,得到处理后的所述第一路径;以及
根据处理后的所述第一路径与接收的预设路径,得到所述第二路径,其中,所述预设路径为所述生成代理文件夹的绝对路径。
2.根据权利要求1所述的确定方法,其特征在于,解析第一文件,以获取第二文件包括:
判断所述第一文件中是否包含所述第二文件的标识;
在判断出所述第一文件中包含所述第二文件的标识的情况下,获取所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径;以及
根据所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径,确定所述第二文件。
3.根据权利要求1所述的确定方法,其特征在于,解析所述第二文件,以获取资源文件包括:
判断所述第二文件中是否包含所述资源文件的标识;
在判断出所述第二文件中包含所述资源文件的标识的情况下,获取所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径;以及
根据所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径,确定所述资源文件。
4.根据权利要求1所述的确定方法,其特征在于,在删除所述第一路径Am或者所述第一路径Am+1之后,并且在根据处理后的所述第一路径与接收的预设路径,得到所述第二路径之前,根据所述多个目标文件的第一路径确定多个所述目标文件的第二路径还包括:
判断第三路径Bz是否包含第三路径Bz+1,其中,第三路径Bn为删除第一路径A1至第一路径As中的相同路径后的第一路径集合,n依次取1至q,q=s-p,p为第一路径A1至第一路径As中的相同路径的数量z依次取1至n-1;
在判断出所述第三路径Bz包含第三路径Bz+1的情况下,获取所述第三路径Bz对应的文件夹中包含的第三文件的第四路径Da,其中,第三路径Bz+1为第四路径D1至第四路径Dj中的任一路径,a依次取1至j,j为所述第三文件的个数,所述第三文件为所述第三路径Bz对应的文件夹中包含的文件;
判断所述第三路径B1至第三路径Bq是否包括所述第四路径D1至第四路径Dj;以及
在判断出所述第三路径B1至所述第三路径Bq包括所述第四路径D1至第四路径Dj的情况下,在所述第三路径B1至所述第三路径Bq中删除与所述第四路径D1至所述第四路径Dj相同的路径,得到处理后的所述第一路径。
5.一种用于编译的文件路径的确定装置,其特征在于,包括:
第一解析单元,用于解析第一文件,以获取第二文件,其中,第一文件是扩展名为.sln的文件,第二文件是扩展名为.csproj的文件;
第二解析单元,用于解析所述第二文件,以获取资源文件,其中,所述资源文件为所述第二文件中调用的文件;
汇总单元,用于将所述第二文件和所述资源文件汇总,得到多个目标文件;以及
确定单元,用于根据多个所述目标文件的第一路径确定多个所述目标文件的第二路径,其中,所述第一路径为多个所述目标文件在源代码文件夹中的路径,所述第二路径为多个所述目标文件在生成代理文件夹中存放的绝对路径,所述代理文件夹用于存放待编译的文件,
其中,所述确定单元包括:
第一获取模块,用于获取每个所述目标文件在所述源代码文件夹中的路径,得到第一路径Ai,i依次取1至s,s为多个所述目标文件的个数;
排序模块,用于对所述第一路径Ai按照首字母进行排序;
第三判断模块,用于判断所述第一路径Am与第一路径Am+1是否相同,其中,m依次取1至s-1;
第三处理模块,用于在判断出所述第一路径Am与所述第一路径Am+1相同的情况下,删除所述第一路径Am或者所述第一路径Am+1,得到处理后的所述第一路径;以及
第三确定模块,用于根据处理后的所述第一路径与接收的预设路径,得到所述第二路径,其中,所述预设路径为所述生成代理文件夹的绝对路径。
6.根据权利要求5所述的确定装置,其特征在于,所述第一解析单元包括:
第一判断模块,用于判断所述第一文件中是否包含所述第二文件的标识;
第一处理模块,用于在判断出所述第一文件中包含所述第二文件的标识的情况下,获取所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径;以及
第一确定模块,用于根据所述第二文件名称以及所述第二文件在源代码文件夹中的存放路径,确定所述第二文件。
7.根据权利要求5所述的确定装置,其特征在于,所述第二解析单元包括:
第二判断模块,用于判断所述第二文件中是否包含所述资源文件的标识;
第二处理模块,用于在判断出所述第二文件中包含所述资源文件的标识的情况下,获取所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径;以及
第二确定模块,用于根据所述资源文件名称以及所述资源文件在所述源代码文件夹中的存放路径,确定所述资源文件。
8.根据权利要求5所述的确定装置,其特征在于,所述确定单元还包括:
第四判断模块,用于判断第三路径Bz是否包含第三路径Bz+1,其中,第三路径Bn为删除第一路径A1至第一路径As中的相同路径后的第一路径集合,n依次取1至q,q=s-p,p为第一路径A1至第一路径As中的相同路径的数量z依次取1至n-1;
第四处理模块,用于在判断出所述第三路径Bz包含第三路径Bz+1的情况下,获取所述第三路径Bz对应的文件夹中包含的第三文件的第四路径Da,其中,第三路径Bz+1为第四路径D1至第四路径Dj中的任一路径,a依次取1至j,j为所述第三文件的个数,所述第三文件为所述第三路径Bz对应的文件夹中包含的文件;
第五判断模块,用于判断所述第三路径B1至第三路径Bq是否包括所述第四路径D1至第四路径Dj;以及
第五处理模块,用于在判断出所述第三路径B1至所述第三路径Bq包括所述第四路径D1至第四路径Dj的情况下,在所述第三路径B1至所述第三路径Bq中删除与所述第四路径D1至所述第四路径Dj相同的路径,得到处理后的所述第一路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410758358.0A CN104462393B (zh) | 2014-12-10 | 2014-12-10 | 用于编译的文件路径的确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410758358.0A CN104462393B (zh) | 2014-12-10 | 2014-12-10 | 用于编译的文件路径的确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104462393A CN104462393A (zh) | 2015-03-25 |
CN104462393B true CN104462393B (zh) | 2017-11-14 |
Family
ID=52908428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410758358.0A Active CN104462393B (zh) | 2014-12-10 | 2014-12-10 | 用于编译的文件路径的确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104462393B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912379B (zh) * | 2016-04-01 | 2019-07-23 | 青岛海信电器股份有限公司 | 一种编译任务管理方法及编译任务管理装置 |
CN106775916B (zh) * | 2017-02-17 | 2020-02-28 | 北京金山安全软件有限公司 | 减小应用安装包的方法、装置及电子设备 |
CN106681788B (zh) * | 2017-02-17 | 2019-10-29 | 北京金山安全软件有限公司 | 减小应用安装包的方法、装置及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6106574A (en) * | 1997-12-04 | 2000-08-22 | Unisys Corp. | Computer-implemented object-oriented method for relating objects in a compiler to locations in the source program and to inlined call histories |
CN102135877B (zh) * | 2010-01-27 | 2014-05-28 | 金蝶软件(中国)有限公司 | 自动化构建方法及装置 |
CN103530135A (zh) * | 2013-10-31 | 2014-01-22 | 深圳中兴网信科技有限公司 | 代理服务生成装置和代理服务生成方法 |
CN103927213B (zh) * | 2014-04-18 | 2017-08-25 | 广州猎豹网络科技有限公司 | 一种文件编译方法及编译装置 |
-
2014
- 2014-12-10 CN CN201410758358.0A patent/CN104462393B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104462393A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Morrison et al. | Branch-and-bound algorithms: A survey of recent advances in searching, branching, and pruning | |
Ribeiro et al. | Variable neighborhood search for the degree-constrained minimum spanning tree problem | |
CN106126521B (zh) | 目标对象的社交账号挖掘方法及服务器 | |
CN104504136B (zh) | 网站的访问路径的分析方法和装置 | |
CN107770154A (zh) | 基于云存储的区块链可靠数据存储方法、终端及系统 | |
CN104462393B (zh) | 用于编译的文件路径的确定方法及装置 | |
CN103870381B (zh) | 一种测试数据生成方法及装置 | |
CN107147501A (zh) | 时间戳处理方法及装置 | |
CN110046101A (zh) | 页面自动化测试方法、装置及计算机存储介质 | |
CN104462352B (zh) | 数据打包方法及装置 | |
CN105630800A (zh) | 一种节点重要性排序的方法和系统 | |
CN107609217A (zh) | 碰撞校核数据的处理方法及装置 | |
CN107707477A (zh) | 报文的处理方法及装置、计算机可读存储介质 | |
CN106547520A (zh) | 一种代码路径分析方法及装置 | |
CN107632827A (zh) | 应用的安装包的生成方法及装置 | |
Czekster et al. | Split: a flexible and efficient algorithm to vector-descriptor product | |
CN103493025B (zh) | 用于存储器管理的保守垃圾收集和经标记的整数 | |
CN108845934A (zh) | 内存泄漏源的定位方法和装置、存储介质、电子装置 | |
Porouhan et al. | Process and deviation exploration through Alpha-algorithm and Heuristic miner techniques | |
Caccetta et al. | A branch and cut method for the degree‐constrained minimum spanning tree problem | |
CN107038108A (zh) | 软件的测试方法和装置 | |
CN106294825A (zh) | 一种excel数据管理方法及系统、客户端、服务端 | |
CN104090995B (zh) | 一种ABAQUS轮胎模型中rebar单元网格的自动生成方法 | |
CN106257507A (zh) | 用户行为的风险评估方法及装置 | |
CN102968404B (zh) | 地震资料的初至信息处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Method and device for determining paths for compiling files Effective date of registration: 20190531 Granted publication date: 20171114 Pledgee: Shenzhen Black Horse World Investment Consulting Co., Ltd. Pledgor: Beijing Guoshuang Technology Co.,Ltd. Registration number: 2019990000503 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |