CN117215537A - 确定代码文件的方法、装置、存储介质和电子设备 - Google Patents
确定代码文件的方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN117215537A CN117215537A CN202311170674.1A CN202311170674A CN117215537A CN 117215537 A CN117215537 A CN 117215537A CN 202311170674 A CN202311170674 A CN 202311170674A CN 117215537 A CN117215537 A CN 117215537A
- Authority
- CN
- China
- Prior art keywords
- code
- files
- determining
- code files
- core
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000006870 function Effects 0.000 claims abstract description 45
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000004590 computer program Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种确定代码文件的方法、装置、存储介质和电子设备。涉及金融科技领域和其他技术领域,该方法包括:获取N个代码文件,其中,N为大于1的整数;识别N个代码文件各自的代码特征,其中,代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,其中,核心程度指数表征关联的代码文件在N个代码文件中的重要程度;根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件。通过本申请,解决了相关技术中由人工确定多个代码文件中的核心代码文件的效率低的技术问题。
Description
技术领域
本发明涉及金融科技领域,具体而言,涉及一种确定代码文件的方法、装置、存储介质和电子设备。需要说明的是,本发明提供的确定代码文件的方法、装置、存储介质和电子设备可用于金融科技领域确定代码文件,也可用于除金融科技领域之外的任意领域确定代码文件,本发明涉及的确定代码文件的方法、装置、存储介质和电子设备的应用领域不做限定。
背景技术
随着前端工程的规模逐步增加,代码文件本身的功能与代码文件之间的引用关系也逐渐变得复杂,随之而来的就是代码的维护重点模糊,相关技术中一般是在开发人员写完代码后,自主确定多个代码文件中的核心代码文件,并对核心代码文件进行重点维护。但相关技术中人工确定多个代码文件中的核心代码文件的效率低。
针对相关技术中由人工确定多个代码文件中的核心代码文件的效率低的技术问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种确定代码文件的方法、装置、存储介质和电子设备,以至少解决由人工确定多个代码文件中的核心代码文件的效率低的技术问题。
为了实现上述目的,根据本申请的一个方面,提供了一种确定代码文件的方法。该方法包括:获取N个代码文件,其中,N为大于1的整数;识别所述N个代码文件各自的代码特征,其中,所述代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;根据所述N个代码文件各自的代码特征,确定所述N个代码文件各自的核心程度指数,其中,所述核心程度指数表征关联的代码文件在所述N个代码文件中的重要程度;根据所述N个代码文件各自的核心程度指数,在所述N个代码文件中确定出核心代码文件。
可选地,所述获取N个代码文件,包括:获取工程文件;扫描所述工程文件包括的M个文件,得到所述M个文件各自的文件格式,其中,M为大于N的整数;确定所述M个文件中符合预定格式条件的文件为所述N个代码文件。
可选地,在所述代码特征包括所述代码行数的情况下,所述识别所述N个代码文件各自的代码特征,包括:分别扫描所述N个代码文件各自包括的换行符号;确定所述N个代码文件各自包括的换行符号的数量;根据所述N个代码文件各自包括的换行符号的数量,确定所述N个代码文件各自的代码行数。
可选地,在所述代码特征包括所述调用函数的数量的情况下,所述识别所述N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,所述N棵抽象语法树分别为所述N个代码文件各自的抽象语法树;确定所述N棵抽象语法树包括的节点的类型,其中,所述N棵抽象语法树包括的节点表征关联的代码文件中代码的语法结构;分别确定所述N棵抽象语法树各自包括的方法类节点的数量,其中,所述方法类节点的节点类型属于预定的方法类范围;确定所述N棵抽象语法树各自包括的方法类节点的数量为所述N个代码文件各自的调用函数的数量。
可选地,在所述代码特征包括所述被引用的次数的情况下,所述识别所述N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,所述N棵抽象语法树分别为所述N个代码文件各自的抽象语法树;确定所述N棵抽象语法树包括的节点的类型;识别所述N棵抽象语法树包括的引用类节点,其中,所述引用类节点的节点类型属于预定的引用类范围;确定所述N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系;根据所述N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系,确定所述N个代码文件各自的被引用次数。
可选地,所述根据所述N个代码文件各自的代码特征,确定所述N个代码文件各自的核心程度指数,包括:确定与所述代码特征关联的权重,其中,所述与所述代码特征关联的权重包括以下至少之一:与所述代码行数关联的权重,与所述调用函数的数量关联的权重,与所述被引用的次数关联的权重;根据所述N个代码文件各自的代码特征,以及所述与所述代码特征关联的权重,确定所述N个代码文件各自的核心程度指数。
可选地,所述根据所述N个代码文件各自的核心程度指数,在所述N个代码文件中确定出核心代码文件,包括:根据所述N个代码文件各自的核心程度指数,将所述N个代码文件排序,得到核心程度序列;确定在所述核心程度序列中的排序小于预定的第一阈值的代码文件为所述核心代码文件;和/或,确定核心程度指数大于预定的第二阈值的代码文件为所述核心代码文件。
为了实现上述目的,根据本申请的另一方面,提供了一种确定代码文件的装置。该装置包括:获取模块,用于获取N个代码文件,其中,N为大于1的整数;识别模块,用于识别所述N个代码文件各自的代码特征,其中,所述代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;第一确定模块,用于根据所述N个代码文件各自的代码特征,确定所述N个代码文件各自的核心程度指数,其中,所述核心程度指数表征关联的代码文件在所述N个代码文件中的重要程度;第二确定模块,根据所述N个代码文件各自的核心程度指数,在所述N个代码文件中确定出核心代码文件。
为了实现上述目的,根据本申请的另一方面,提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备上述中任意一项的确定代码文件的方法。
为了实现上述目的,根据本申请的另一方面,提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述中任意一项的确定代码文件的方法。
通过本申请,采用以下步骤:获取N个代码文件,其中,N为大于1的整数;识别所述N个代码文件各自的代码特征,其中,所述代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;根据所述N个代码文件各自的代码特征,确定所述N个代码文件各自的核心程度指数,其中,所述核心程度指数表征关联的代码文件在所述N个代码文件中的重要程度;根据所述N个代码文件各自的核心程度指数,在所述N个代码文件中确定出核心代码文件,达到了自动化地在N个代码文件中确定出核心代码文件的目的,解决了相关技术中由人工确定多个代码文件中的核心代码文件的效率低的技术问题,进而达到了提高确定多个代码文件中的核心代码文件的效率的技术效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的确定代码文件的方法的流程图;
图2是根据本申请实施例提供的确定代码文件的装置的示意图;
图3是根据本发明实施例提供的用于进行确定代码文件的方法的电子设备的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
相关技术中,前端开发人员在开发应用软件的时候,一般不会将所有代码都写在同一个文件中,而是会将各部分代码分别写在多个代码文件中。但是这种情况下,在应用软件出现问题的时候,开发人员对多个代码文件的维护会失去关注重点,导致维护效率较低等问题。所以,本发明提供一种确定代码文件的方法,在多个代码文件中,识别出核心代码文件,为开发人员对多个代码文件的维护提供指导,帮助开发人员在大型前端工程中理清哪些代码更重要,并提供维护重点。下面结合优选的实施步骤对本发明进行说明,图1是根据本申请实施例提供的确定代码文件的方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,获取N个代码文件,其中,N为大于1的整数。
本步骤中,N个代码文件即为开发人员编写的N段代码组成的文件,每个代码文件中都包括一段代码,这N段代码之间可以存在引用关系,可以共同实现应用软件中的某一项功能。
步骤S102,识别N个代码文件各自的代码特征,其中,代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数。
本步骤中,N个代码文件包括的N段代码分别有自身的代码特征,可以根据代码特征确定N个代码文件中较为重要的代码。代码特征可以包括代码行数、代码中调用函数的数量和代码被引用的次数,代码行数越多说明代码越复杂,类似地,代码中调用函数的数量越多也可以说明代码越复杂,代码被引用的次数越多也可以说明代码越复杂,而越复杂的代码的重要程度越高,因此,代码行数可以作为判断代码是否为核心代码的依据。
步骤S103,根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,其中,核心程度指数表征关联的代码文件在N个代码文件中的重要程度。
步骤S104,根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件。
以上两个步骤中,可以根据上述三个代码特征中的任意一个或多个特征,确定N个代码文件中的每个代码文件分别在所有的代码文件中的重要程度,也即,确定N个代码文件各自的核心程度指数,并根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件,进而为开发人员对多个代码文件的维护提供指导,帮助开发人员在大型前端工程中理清哪些代码更重要,并提供维护重点。
本申请实施例提供的确定代码文件的方法,通过获取N个代码文件,其中,N为大于1的整数;识别N个代码文件各自的代码特征,其中,代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,其中,核心程度指数表征关联的代码文件在N个代码文件中的重要程度;根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件,达到了自动化地在N个代码文件中确定出核心代码文件的目的,解决了相关技术中由人工确定多个代码文件中的核心代码文件的效率低的技术问题,进而达到了提高确定多个代码文件中的核心代码文件的效率的技术效果。
可选地,在本申请实施例提供的确定代码文件的方法中,获取N个代码文件,包括:获取工程文件;扫描工程文件包括的M个文件,得到M个文件各自的文件格式,其中,M为大于N的整数;确定M个文件中符合预定格式条件的文件为N个代码文件。
可选地,工程文件可以是开发人员在编写代码时建立的,工程文件一般包括代码文件以及运行代码文件时所必须的其他文件,例如,代码的可执行文件,以及运行代码时需要调用的图片、文本等文件。所以,在确定核心文件之前,可以先在工程文件包括的所有文件中,识别出N个代码文件。由于不同文件的文件格式是不同的,文件后缀也不同,所以可以先扫描工程文件包括的所有的M个文件,并确定M个文件各自的文件格式,然后根据M个文件各自的文件格式,确定符合预定格式条件的文件为N个代码文件,也就是说,可以确定与代码文件的格式一致的文件为N个代码文件。具体的确定方式可以是确定文件的格式是否为特定的格式,例如,判断M个文件中每个文件是否为js、vue、jsx文件,如果是,确定该文件为代码文件,如果不是,可以忽略该文件。
可选地,在本申请实施例提供的确定代码文件的方法中,在代码特征包括代码行数的情况下,识别N个代码文件各自的代码特征,包括:分别扫描N个代码文件各自包括的换行符号;确定N个代码文件各自包括的换行符号的数量;根据N个代码文件各自包括的换行符号的数量,确定N个代码文件各自的代码行数。
可选地,可以分别识别N个代码文件各自的代码行数,以下以识别一个代码文件的代码行数为例,提供一种确定N个代码文件各自的代码行数的步骤:可以先读入代码正文,并按照换行符对正文进行分割,得到按换行符分割的正文片段,可以确定分割后正文片段的数量即为该代码文件的行数;当然,一般情况下,换行符的数量会比分割后正文片段的数量少一个,所以也可以根据换行符号的数量确定该代码文件的行数。需要说明的是,此处提及的正文可以是包括注释的代码正文,也可以是不包括注释的纯代码,由于注释的多少也在一定程度上代表代码的重要程度,所以可以采用包括注释的代码正文统计代码行数,也可以只考虑代码本身的情况,采用不包括注释的纯代码统计代码行数。
可选地,在本申请实施例提供的确定代码文件的方法中,在代码特征包括调用函数的数量的情况下,识别N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,N棵抽象语法树分别为N个代码文件各自的抽象语法树;确定N棵抽象语法树包括的节点的类型,其中,N棵抽象语法树包括的节点表征关联的代码文件中代码的语法结构;分别确定N棵抽象语法树各自包括的方法类节点的数量,其中,方法类节点的节点类型属于预定的方法类范围;确定N棵抽象语法树各自包括的方法类节点的数量为N个代码文件各自的调用函数的数量。
可选地,可以分别识别N个代码文件各自的调用函数的数量,以下以识别一个代码文件的调用函数的数量为例,提供一种确定N个代码文件各自的调用函数的数量的步骤:可以先将代码转换为抽象语法树,其中,抽象语法树是一种用来表示代码结构的树状数据结构,抽象语法树将代码转化为一组抽象的语法结构,每个节点表示代码中的一个语法结构或操作符,树的根节点表示整个程序,而其他节点则表示程序中的各个语法结构,如语句、表达式、变量声明等,节点可以有不同的类型,每种类型对应不同的语法结构,例如,表达式节点可以表示算术表达式、逻辑表达式等;语句节点可以表示if语句、while语句等;因此,可以确定抽象语法树包括的节点的类型,确定节点类型属于预定的方法类范围的方法类节点的数量为该代码调用的函数的数量。具体地,方法类节点的节点类型可以为:ClassMethod、ArrowFunctionExpression、FunctionExpression、FunctionDeclaration,其中,ClassMethod表示类方法,ArrowFunctionExpression表示箭头函数方法,FunctionExpression表示函数的表达,FunctionDeclaration表示函数的声明。
可选地,在本申请实施例提供的确定代码文件的方法中,在代码特征包括被引用的次数的情况下,识别N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,N棵抽象语法树分别为N个代码文件各自的抽象语法树;确定N棵抽象语法树包括的节点的类型;识别N棵抽象语法树包括的引用类节点,其中,引用类节点的节点类型属于预定的引用类范围;确定N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系;根据N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系,确定N个代码文件各自的被引用次数。
可选地,在统计某个代码文件被引用的次数时,需要识别N个代码文件中除了这个代码文件之外的其他代码文件,确定其他代码文件中是否引用了这个代码文件。因此,可以确定N个代码文件中每个代码文件包括的引用关系,再对引用关系进行统计,确定每个代码文件被引用的次数,以下识别一个代码文件包括的引用关系的步骤:可以先将代码转换为抽象语法树,再确定抽象语法树包括的节点的类型,确定节点类型属于预定的引用类范围的引用类节点,并读取引用类节点表示的代码文件之间的引用关系。具体地,引用类节点的类型可以为ImportDeclaration,该类引用类节点以如下结构表示代码文件之间的引用关系:{local:a,imported:b},该结构表明代码b被代码a引用,此时,b的被引用次数加1。
可选地,在本申请实施例提供的确定代码文件的方法中,根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,包括:确定与代码特征关联的权重,其中,与代码特征关联的权重包括以下至少之一:与代码行数关联的权重,与调用函数的数量关联的权重,与被引用的次数关联的权重;根据N个代码文件各自的代码特征,以及与代码特征关联的权重,确定N个代码文件各自的核心程度指数。
可选地,可以为代码特征设置关联的权重,并根据权重确定N个代码文件各自的核心程度指数。具体地,核心程度指数的计算公式可以为“核心程度指数=A*代码行数+B*调用函数的数量+C*被引用次数”,其中A为与代码行数关联的权重,B为与调用函数的数量关联的权重,C为与被引用的次数关联的权重,A、B和C可根据需要自行调整。
可选地,在本申请实施例提供的确定代码文件的方法中,根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件,包括:根据N个代码文件各自的核心程度指数,将N个代码文件排序,得到核心程度序列;确定在核心程度序列中的排序小于预定的第一阈值的代码文件为核心代码文件;和/或,确定核心程度指数大于预定的第二阈值的代码文件为核心代码文件。
可选地,在确定出N个代码文件各自的核心程度指数后,可以选择采用以下任意一种方式,或结合两种方式共同确定出核心程度指数符合预定条件的代码文件为核心代码文件:方式一:按照核心程度指数将N个代码文件从高到低排序,排序小于预定的第一阈值的代码文件即为核心代码文件;方式二:确定核心程度指数阈值,确定核心程度指数阈值大于预定的第一阈值的代码文件即为核心代码文件。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种确定代码文件的装置,需要说明的是,本申请实施例的确定代码文件的装置可以用于执行本申请实施例所提供的用于确定代码文件的方法。以下对本申请实施例提供的确定代码文件的装置进行介绍。
图2是根据本申请实施例的确定代码文件的装置的示意图。如图2所示,该装置包括:获取模块21,用于获取N个代码文件,其中,N为大于1的整数;识别模块22,与获取模块21连接,用于识别N个代码文件各自的代码特征,其中,代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;第一确定模块23,与识别模块22连接,用于根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,其中,核心程度指数表征关联的代码文件在N个代码文件中的重要程度;第二确定模块24,与第二确定模块23连接,根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件。
本申请实施例提供的确定代码文件的装置,通过获取N个代码文件,其中,N为大于1的整数;识别N个代码文件各自的代码特征,其中,代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,其中,核心程度指数表征关联的代码文件在N个代码文件中的重要程度;根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件,达到了自动化地在N个代码文件中确定出核心代码文件的目的,解决了相关技术中由人工确定多个代码文件中的核心代码文件的效率低的技术问题,进而达到了提高确定多个代码文件中的核心代码文件的效率的技术效果。
确定代码文件的装置包括处理器和存储器,上述获取模块21、识别模块22、第一确定模块23和第二确定模块24等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来自动化地在N个代码文件中确定出核心代码文件。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述确定代码文件的方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述确定代码文件的方法。
图3是根据本发明实施例提供的用于进行确定代码文件的方法的电子设备的结构示意图,如图3所示,本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:获取N个代码文件,其中,N为大于1的整数;识别N个代码文件各自的代码特征,其中,代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,其中,核心程度指数表征关联的代码文件在N个代码文件中的重要程度;根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件。
可选地,获取N个代码文件,包括:获取工程文件;扫描工程文件包括的M个文件,得到M个文件各自的文件格式,其中,M为大于N的整数;确定M个文件中符合预定格式条件的文件为N个代码文件。
可选地,在代码特征包括代码行数的情况下,识别N个代码文件各自的代码特征,包括:分别扫描N个代码文件各自包括的换行符号;确定N个代码文件各自包括的换行符号的数量;根据N个代码文件各自包括的换行符号的数量,确定N个代码文件各自的代码行数。
可选地,在代码特征包括调用函数的数量的情况下,识别N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,N棵抽象语法树分别为N个代码文件各自的抽象语法树;确定N棵抽象语法树包括的节点的类型,其中,N棵抽象语法树包括的节点表征关联的代码文件中代码的语法结构;分别确定N棵抽象语法树各自包括的方法类节点的数量,其中,方法类节点的节点类型属于预定的方法类范围;确定N棵抽象语法树各自包括的方法类节点的数量为N个代码文件各自的调用函数的数量。
可选地,在代码特征包括被引用的次数的情况下,识别N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,N棵抽象语法树分别为N个代码文件各自的抽象语法树;确定N棵抽象语法树包括的节点的类型;识别N棵抽象语法树包括的引用类节点,其中,引用类节点的节点类型属于预定的引用类范围;确定N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系;根据N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系,确定N个代码文件各自的被引用次数。
可选地,根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,包括:确定与代码特征关联的权重,其中,与代码特征关联的权重包括以下至少之一:与代码行数关联的权重,与调用函数的数量关联的权重,与被引用的次数关联的权重;根据N个代码文件各自的代码特征,以及与代码特征关联的权重,确定N个代码文件各自的核心程度指数。
可选地,根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件,包括:根据N个代码文件各自的核心程度指数,将N个代码文件排序,得到核心程度序列;确定在核心程度序列中的排序小于预定的第一阈值的代码文件为核心代码文件;和/或,确定核心程度指数大于预定的第二阈值的代码文件为核心代码文件。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取N个代码文件,其中,N为大于1的整数;识别N个代码文件各自的代码特征,其中,代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,其中,核心程度指数表征关联的代码文件在N个代码文件中的重要程度;根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件。
可选地,获取N个代码文件,包括:获取工程文件;扫描工程文件包括的M个文件,得到M个文件各自的文件格式,其中,M为大于N的整数;确定M个文件中符合预定格式条件的文件为N个代码文件。
可选地,在代码特征包括代码行数的情况下,识别N个代码文件各自的代码特征,包括:分别扫描N个代码文件各自包括的换行符号;确定N个代码文件各自包括的换行符号的数量;根据N个代码文件各自包括的换行符号的数量,确定N个代码文件各自的代码行数。
可选地,在代码特征包括调用函数的数量的情况下,识别N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,N棵抽象语法树分别为N个代码文件各自的抽象语法树;确定N棵抽象语法树包括的节点的类型,其中,N棵抽象语法树包括的节点表征关联的代码文件中代码的语法结构;分别确定N棵抽象语法树各自包括的方法类节点的数量,其中,方法类节点的节点类型属于预定的方法类范围;确定N棵抽象语法树各自包括的方法类节点的数量为N个代码文件各自的调用函数的数量。
可选地,在代码特征包括被引用的次数的情况下,识别N个代码文件各自的代码特征,包括:分别生成N棵抽象语法树,其中,N棵抽象语法树分别为N个代码文件各自的抽象语法树;确定N棵抽象语法树包括的节点的类型;识别N棵抽象语法树包括的引用类节点,其中,引用类节点的节点类型属于预定的引用类范围;确定N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系;根据N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系,确定N个代码文件各自的被引用次数。
可选地,根据N个代码文件各自的代码特征,确定N个代码文件各自的核心程度指数,包括:确定与代码特征关联的权重,其中,与代码特征关联的权重包括以下至少之一:与代码行数关联的权重,与调用函数的数量关联的权重,与被引用的次数关联的权重;根据N个代码文件各自的代码特征,以及与代码特征关联的权重,确定N个代码文件各自的核心程度指数。
可选地,根据N个代码文件各自的核心程度指数,在N个代码文件中确定出核心代码文件,包括:根据N个代码文件各自的核心程度指数,将N个代码文件排序,得到核心程度序列;确定在核心程度序列中的排序小于预定的第一阈值的代码文件为核心代码文件;和/或,确定核心程度指数大于预定的第二阈值的代码文件为核心代码文件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种确定代码文件的方法,其特征在于,包括:
获取N个代码文件,其中,N为大于1的整数;
识别所述N个代码文件各自的代码特征,其中,所述代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;
根据所述N个代码文件各自的代码特征,确定所述N个代码文件各自的核心程度指数,其中,所述核心程度指数表征关联的代码文件在所述N个代码文件中的重要程度;
根据所述N个代码文件各自的核心程度指数,在所述N个代码文件中确定出核心代码文件。
2.根据权利要求1所述的方法,其特征在于,所述获取N个代码文件,包括:
获取工程文件;
扫描所述工程文件包括的M个文件,得到所述M个文件各自的文件格式,其中,M为大于N的整数;
确定所述M个文件中符合预定格式条件的文件为所述N个代码文件。
3.根据权利要求1所述的方法,其特征在于,在所述代码特征包括所述代码行数的情况下,所述识别所述N个代码文件各自的代码特征,包括:
分别扫描所述N个代码文件各自包括的换行符号;
确定所述N个代码文件各自包括的换行符号的数量;
根据所述N个代码文件各自包括的换行符号的数量,确定所述N个代码文件各自的代码行数。
4.根据权利要求1所述的方法,其特征在于,在所述代码特征包括所述调用函数的数量的情况下,所述识别所述N个代码文件各自的代码特征,包括:
分别生成N棵抽象语法树,其中,所述N棵抽象语法树分别为所述N个代码文件各自的抽象语法树;
确定所述N棵抽象语法树包括的节点的类型,其中,所述N棵抽象语法树包括的节点表征关联的代码文件中代码的语法结构;
分别确定所述N棵抽象语法树各自包括的方法类节点的数量,其中,所述方法类节点的节点类型属于预定的方法类范围;
确定所述N棵抽象语法树各自包括的方法类节点的数量为所述N个代码文件各自的调用函数的数量。
5.根据权利要求1所述的方法,其特征在于,在所述代码特征包括所述被引用的次数的情况下,所述识别所述N个代码文件各自的代码特征,包括:
分别生成N棵抽象语法树,其中,所述N棵抽象语法树分别为所述N个代码文件各自的抽象语法树;
确定所述N棵抽象语法树包括的节点的类型;
识别所述N棵抽象语法树包括的引用类节点,其中,所述引用类节点的节点类型属于预定的引用类范围;
确定所述N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系;
根据所述N棵抽象语法树包括的引用类节点表示的代码文件之间的引用关系,确定所述N个代码文件各自的被引用次数。
6.根据权利要求1所述的方法,其特征在于,所述根据所述N个代码文件各自的代码特征,确定所述N个代码文件各自的核心程度指数,包括:
确定与所述代码特征关联的权重,其中,所述与所述代码特征关联的权重包括以下至少之一:与所述代码行数关联的权重,与所述调用函数的数量关联的权重,与所述被引用的次数关联的权重;
根据所述N个代码文件各自的代码特征,以及所述与所述代码特征关联的权重,确定所述N个代码文件各自的核心程度指数。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述根据所述N个代码文件各自的核心程度指数,在所述N个代码文件中确定出核心代码文件,包括:
根据所述N个代码文件各自的核心程度指数,将所述N个代码文件排序,得到核心程度序列;确定在所述核心程度序列中的排序小于预定的第一阈值的代码文件为所述核心代码文件;
和/或,
确定核心程度指数大于预定的第二阈值的代码文件为所述核心代码文件。
8.一种确定代码文件的装置,其特征在于,包括:
获取模块,用于获取N个代码文件,其中,N为大于1的整数;
识别模块,用于识别所述N个代码文件各自的代码特征,其中,所述代码特征包括以下至少一种:代码行数、调用函数的数量、被引用的次数;
第一确定模块,用于根据所述N个代码文件各自的代码特征,确定所述N个代码文件各自的核心程度指数,其中,所述核心程度指数表征关联的代码文件在所述N个代码文件中的重要程度;
第二确定模块,根据所述N个代码文件各自的核心程度指数,在所述N个代码文件中确定出核心代码文件。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至6中任意一项所述的确定代码文件的方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至6中任意一项所述的确定代码文件的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311170674.1A CN117215537A (zh) | 2023-09-11 | 2023-09-11 | 确定代码文件的方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311170674.1A CN117215537A (zh) | 2023-09-11 | 2023-09-11 | 确定代码文件的方法、装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117215537A true CN117215537A (zh) | 2023-12-12 |
Family
ID=89036476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311170674.1A Pending CN117215537A (zh) | 2023-09-11 | 2023-09-11 | 确定代码文件的方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117215537A (zh) |
-
2023
- 2023-09-11 CN CN202311170674.1A patent/CN117215537A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296307B2 (en) | Method and system for template extraction based on source code similarity | |
CN110471949B (zh) | 数据血缘分析方法、装置、系统、服务器及存储介质 | |
CN108599973B (zh) | 一种日志关联方法、装置及设备 | |
CN106598828B (zh) | 一种源代码中的无效类确定方法及装置 | |
CN110019298B (zh) | 数据处理方法和装置 | |
JP2018515844A (ja) | データ処理方法及びシステム | |
CN116243919A (zh) | 一种解释渲染和代码渲染的界面渲染方法、设备及介质 | |
CN113535817B (zh) | 特征宽表生成及业务处理模型的训练方法和装置 | |
CN110895544B (zh) | 一种接口数据处理方法、装置、系统及存储介质 | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
CN105867886B (zh) | 一种写表格的方法及装置 | |
CN114297204A (zh) | 一种异构数据源的数据存储、检索方法及装置 | |
CN110928941B (zh) | 一种数据分片抽取方法及装置 | |
CN110825764A (zh) | 一种sql脚本的生成方法、系统、存储介质和处理器 | |
CN108536759B (zh) | 一种样本回放数据存取方法及装置 | |
CN116415156A (zh) | 一种文档相似度计算方法、设备及介质 | |
CN117215537A (zh) | 确定代码文件的方法、装置、存储介质和电子设备 | |
CN110968500A (zh) | 一种测试用例的执行方法及装置 | |
CN114817209A (zh) | 监控规则的处理方法和装置、处理器及电子设备 | |
CN115293243A (zh) | 数据资产智能匹配的实现方法、装置及设备 | |
CN112214494B (zh) | 检索方法及装置 | |
CN110019771B (zh) | 文本处理的方法及装置 | |
CN113391812A (zh) | 应用程序模块的分析方法、装置以及分析工具 | |
CN112749189A (zh) | 数据查询方法及装置 | |
CN111159192A (zh) | 基于大数据的数据入库方法、装置、存储介质和处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |