CN112114861A - 统计程序开发中使用的技能的方法、装置及电子设备 - Google Patents
统计程序开发中使用的技能的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112114861A CN112114861A CN202011053900.4A CN202011053900A CN112114861A CN 112114861 A CN112114861 A CN 112114861A CN 202011053900 A CN202011053900 A CN 202011053900A CN 112114861 A CN112114861 A CN 112114861A
- Authority
- CN
- China
- Prior art keywords
- node
- name
- development
- code
- library
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000011161 development Methods 0.000 claims abstract description 83
- 230000008676 import Effects 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种统计程序开发中使用的技能的方法、装置及电子设备,包括:获取待分析的代码文件的语法树,所述语法树包括至少一个节点;针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段;在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称;根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称;对所述代码文件所对应的开发技能进行统计,得到统计结果。上述过程无需人工参与,效率高。
Description
技术领域
本申请涉及软件开发技术领域,具体而言,涉及一种统计程序开发中使用的技能的方法、装置及电子设备。
背景技术
为了对开发人员所具备的开发技能进行合理地评估,通常是通过对开发员在编写代码过程中所使用的开发技能进行统计来实现的,在现有技术中,通常是依靠人工对开发员编写的代码文件中的代码进行分析,确定出代码文件中所涉及的开发技能,继而完成对代码文件中所涉及的开发技能进行统计,得到统计结果。然而,这种方式需要依靠人工来对代码文件中代码进行分析,工作量大,且效率低。
发明内容
鉴于此,本申请实施例的目的在于提供一种统计程序开发中使用的技能的方法、装置及电子设备,以解决上述问题。
第一方面,本申请实施例提供一种统计程序开发中使用的技能的方法,所述方法包括:获取待分析的代码文件的语法树,所述语法树包括至少一个节点;针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段;在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称;根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称;对所述代码文件所对应的开发技能进行统计,得到统计结果。
在程序开发中,每出现一次库名称,均需要通过一个表征库导入的字段来引入该库名称;其次,针对语法树中的每个节点,在该节点为父节点(即语法树中存在与该节点关联的节点)时,该节点的节点信息中不会包括库名称,只有与该节点关联的节点才会包含库名称;在该节点不为父节点(即语法树中不存在与该节点关联的节点)时,该节点可能会包含库名称,因此,在上述实现过程中,通过预先存储库名称和开发技能的对应关系,继而在获取到待分析的代码文件的语法树之后,针对语法树中的每个节点,在确定该节点的节点信息中包括表征库导入的字段时,才会确定所述语法树中是否存在与该节点关联的节点,在确定不存在与该节点关联的节点时,才会从该节点的节点信息中获取第一库名称,继而从所述对应关系中快速查找出与该第一库名称对应的开发技能,继而实现对所述代码文件所对应的开发技能的快速统计,上述过程无需人工参与,效率高。
基于第一方面,在一种可能的设计中,在所述对所述代码文件所对应的开发技能进行统计,得到统计结果之前,所述方法还包括:在确定存在所述关联的节点时,针对每个关联的节点,从该关联的节点的节点信息中获取第二库名称;根据所述第二库名称,从所述对应关系中查找出与所述第二库名称对应的开发技能的名称。
在该节点为父节点(即语法树中存在与该节点关联的节点)时,该节点的节点信息中不会包括库名称,只有与该节点关联的节点才会包含库名称;假设一段代码包括两个库名称,那么在语法树中会包括与该段代码对应的三个节点,其中,一个为父节点,另外两个为与该父节点关联的两个节点,其中,所述关联的两个节点中的各个节点的节点信息中分别包括一个库名称,因此,在上述实现过程中,在确定存在所述关联的节点时,针对每个关联的节点,从该关联的节点的节点信息中获取第二库名称;根据所述第二库名称,从所述对应关系中查找出与所述第二库名称对应的开发技能的名称,继而能保证获取该代码中的全部库名称,最终保证能确定出该段代码中所涉及的开发技能。
基于第一方面,在一种可能的设计中,该节点信息中包括:与该节点对应的第一代码行号;所述从该节点信息中获取第一库名称,包括:从该节点信息中获取所述第一库名称和所述第一代码行号;在所述对所述代码文件所对应的开发技能进行统计之前,所述方法还包括:从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称;对应的,所述对所述代码文件所对应的开发技能进行统计,得到统计结果,包括:针对所述代码文件,分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
由于代码文件中的代码可能是由至少两个开发员一起编写的,一行代码通常只会由一个开发员来单独编写,不会由至少两个开员共同编写,一行代码可能对应语法树中的一个节点,也可能对应语法树中的至少两个节点,因此,为了准确地统计出各个开发员在所述代码文件中所使用的开发技能,继而在上述实现过程中,从该节点信息中获取所述第一库名称和所述第一代码行号之后,从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称,继而在确定出各行代码所对应的开发技能和开发人员之后,针对所述代码文件,能够分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
基于第一方面,在一种可能的设计中,所述对所述代码文件所对应的开发技能进行统计,得到统计结果,包括:分别对所述代码文件所对应的各个开发技能的使用次数进行统计,得到所述统计结果。
在上述实现过程中,分别对所述代码文件所对应的各个开发技能的使用次数进行统计,以更为全面地评估开发人员的能力。
基于第一方面,在一种可能的设计中,在所述针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点之前,所述方法还包括:确定所述待分析的代码文件的第一文件格式;根据所述第一文件格式,从预先存储的文件格式和关键字段的对应关系中,查找出与所述第一文件格式对应的关键字段;其中,所述对应的关键字段为所述预先确定的关键字段。
由于代码语言的种类和代码文件的文件格式是一一对应的;其次,针对不同的代码语言,用于表征库导入的字段不同,因此,为了准确地确定出与待分析的代码文件中的代码语言对应的表征库导入的字段,保证后续能利用该字段,准确地对代码文件所对应的开发技能进行统计,继而在上述实现过程中,通过预先建立并存储文件格式和关键字段的对应关系,继而根据所述待分析的代码文件的第一文件格式,从预先存储的文件格式和关键字段的对应关系中,准确地查找出与所述第一文件格式对应的关键字段。
第二方面,本申请实施例提供一种统计程序开发中使用的技能的装置,所述装置包括:获取单元,用于获取待分析的代码文件的语法树,所述语法树包括至少一个节点;确定单元,用于针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段;第一库名称获取单元,用于在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称;第一查找单元,用于根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称;统计单元,用于对所述代码文件所对应的开发技能进行统计,得到统计结果。
基于第二方面,在一种可能的设计中,所述装置还包括:第二库名称获取单元,用于在确定存在所述关联的节点时,针对每个关联的节点,从该关联的节点的节点信息中获取第二库名称;第二查找单元,用于根据所述第二库名称,从所述对应关系中查找出与所述第二库名称对应的开发技能的名称。
基于第二方面,在一种可能的设计中,该节点信息中包括:与该节点对应的第一代码行号;所述第一库名称获取单元,具体用于从该节点信息中获取所述第一库名称和所述第一代码行号;所述装置还包括:开发人员名称确定单元,用于在所述对所述代码文件所对应的开发技能进行统计之前,从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称;对应的,所述统计单元,具体用于针对所述代码文件,分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
基于第二方面,在一种可能的设计中,所述统计单元,还用于分别对所述代码文件所对应的各个开发技能的使用次数进行统计,得到所述统计结果。
基于第二方面,在一种可能的设计中,所述装置还包括:关键字段确定单元,用于确定所述待分析的代码文件的第一文件格式;以及根据所述第一文件格式,从预先存储的文件格式和关键字段的对应关系中,查找出与所述第一文件格式对应的关键字段;其中,所述对应的关键字段为所述预先确定的关键字段。
第三方面,本申请实施例提供一种电子设备,包括处理器以及与所述处理器连接的存储器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行第一方面所述的方法。
第四方面,本申请实施例提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行第一方面所述的方法。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的统计程序开发中使用的技能的方法的流程示意图。
图2为本申请实施例提供的统计程序开发中使用的技能的装置的结构示意图。
图3为本申请实施例提供的电子设备的结构示意图。
图标:200-统计程序开发中使用的技能的装置;210-获取单元;220-确定单元;230-第一库名称确定单元;240-第一查找单元;250-统计单元;300-电子设备;301-处理器;302-存储器;303-通信接口。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1为本申请实施例提供的一种统计程序开发中使用的技能的方法的流程图,下面将对图1所示的流程进行详细阐述,所述方法包括步骤:S11、S12、S13、S14和S15。
S11:获取待分析的代码文件的语法树,所述语法树包括至少一个节点。
S12:针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段。
S13:在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称。
S14:根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称。
S15:对所述代码文件所对应的开发技能进行统计,得到统计结果。
下面对上述方法进行详细介绍。
S11:获取待分析的代码文件的语法树,所述语法树包括至少一个节点。
在实际实施过程中,S11可以按照如下方式实施,在获取到待分析的代码文件之后,基于抽象语法树技术对所述代码文件进行解析,获取语法树,其中,所述语法树包括至少一个节点和各个节点之间的关联关系。
其中,在程序开发中,每出现一次库名称,均需要通过一个表征库导入的字段来引入该库名称;其次,针对语法树中的每个节点,在该节点为父节点(即语法树中存在与该节点关联的节点)时,该节点的节点信息中不会包括库名称,只有与该节点关联的节点才会包含库名称;在该节点不为父节点(即语法树中不存在与该节点关联的节点)时,该节点可能会包含库名称,也可能不会包括库名称。
其中,代码文件中的一段代码可能会对应语法树中的一个节点,也可能会对应语法树中的至少两个节点,这与该段代码中包括的库名称的数量有关。
在该段代码中未包括库名称或包括一个库名称时,则该段代码对应语法树中的一个节点;在该段代码包括两个库名称,那么在语法树中会包括与该段代码对应的三个节点,其中,一个为父节点,另外两个为与该父节点关联的两个节点,其中,所述关联的两个节点中的各个节点的节点信息中分别包括一个库名称。
作为一种实施方式,在S11中,也可以从第三方获取待分析的代码文件的语法树。
在获取到所述语法树之后,执行步骤S12。
S12:针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段。
其中,针对不同的程序语言,用于表征库导入的字段不同。
例如,针对pathon语言,用于表征库导入的字段包括include字段和import字段。
在获取到所述语法树之后,由于所述语法树中包括至少一个节点,因此,针对每个节点,从该节点中提取出该节点的节点信息,并将所述节点信息与所述预先确定关键字段进行比较,以确定该节点的节点信息中是否包括所述预先确定的关键字段,在确定该节点的节点信息中包括所述预先确定的关键字段时,根据所述语法树中的各个节点之间的关联关系,确定所述语法树中是否存在与该节点关联的节点。
在确定不存在与该节点关联的节点时,执行步骤S13。
S13:在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称。
在确定不存在与该节点关联的节点时,且在从该节点中提取出该节点的节点信息之后,从该节点的节点信息中提取出第一库名称。
作为一种实施方式,该节点信息中包括:与该节点对应的第一代码行号;所述从该节点的节点信息中获取第一库名称,包括:从该节点信息中获取所述第一库名称和所述第一代码行号。
其中,一个节点的节点信息中只包括一个代码行号。
可以理解的是,该节点的节点信息中的代码行号为与该节点对应的代码行的行号。
在获取到所述第一库名称之后,执行步骤S14。
S14:根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称。
将所述第一库名称与所述对应关系中的库名称进行比较,继而从所述对应关系中查找出与该第一库名称对应的开发技能的名称。
S15:对所述代码文件所对应的开发技能进行统计,得到统计结果。
在实际实施过程中,S15可以按照如下方式实施,对所述代码文件中所涉及到不同的开发技能的名称进行统计,得到所述统计结果,可以理解的是,所述统计结果中包括各个开发技能的名称。
作为一种实施方式,S15包括:分别对所述代码文件所对应的各个开发技能的使用次数进行统计,得到所述统计结果。
针对所述代码文件中所涉及到的各个开发技能,对该开发技能在所述代码文件中被使用的次数进行统计,继而得到所述统计结果,可以理解的是,所述统计结果中包括:各个开发技能的名称和各个开发技能分别被使用的次数。
在该节点为父节点(即语法树中存在与该节点关联的节点)时,该节点的节点信息中不会包括库名称,只有与该节点关联的节点才会包含库名称;假设一段代码包括两个库名称,那么在语法树中会包括与该段代码对应的三个节点,其中,一个为父节点,另外两个为与该父节点关联的两个节点,其中,所述关联的两个节点中的各个节点的节点信息中分别包括一个库名称,因此,作为一种实施方式,在S15之前,所述方法还包括步骤:A1和A2。
A1:在确定存在所述关联的节点时,针对每个关联的节点,从该关联的节点的节点信息中获取第二库名称。
针对该节点,在所述语法树中存在与该节点关联的节点时,其中,所述关联的节点的数量为至少两个,因此,针对每个关联的节点,从该关联节点中提取出节点信息,并从该关联的节点的节点信息中提取出第二库名称。
作为一种实施方式,该节点信息中包括:与该关联节点对应的第二代码行号;所述从该关联的节点的节点信息中获取第二库名称,包括:从该关联的节点的节点信息中获取所述第二库名称和所述第二代码行号。
其中,一个节点的节点信息中只包括一个代码行号。
A2:根据所述第二库名称,从所述对应关系中查找出与所述第二库名称对应的开发技能的名称。
其中,A2的具体实施方式请参照步骤S14,因此,在此不再赘述。
由于代码文件中的代码可能是由至少两个开发员一起编写的,一行代码通常只会由一个开发员来单独编写,不会由至少两个开员共同编写,一行代码可能对应语法树中的一个节点,也可能对应语法树中的至少两个节点,因此,为了准确地统计出各个开发员在所述代码文件中所使用的开发技能,继而在该节点信息中包括:与该节点对应的第一代码行号时,作为一种实施方式,在S15之前,所述方法还包括:从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称。
其中,所述代码行号与开发人员的名称的对应关系是针对所述代码文件确定的。
可以理解的是,针对每个节点,在获取到与该节点对应的第一代码行号之后,从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称。
对应的,S15包括:针对所述代码文件,分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
针对同时包括库名称和代码行号的各个节点,根据各个节点的库名称所对应的开发技能,以及各个节点的代码行号所对应的开发人员信息,对不同开发人员所使用的开发技能的名称进行统计,得到所述统计结果。
作为一种实施方式,分别对不同开发人员所使用的开发技能的名称和使用次数进行统计,得到所述统计结果。
同理,若该节点信息中包括:与该关联节点对应的第二代码行号,作为一种实施方式,在S15之前,所述方法还包括:从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第二代码行号对应的开发人员的名称。
对应的,S15包括:针对所述代码文件,分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
由于代码语言的种类和代码文件的文件格式是一一对应的;其次,针对不同的代码语言,用于表征库导入的字段不同,因此,为了准确地确定出与待分析的代码文件中的代码语言对应的表征库导入的字段,保证后续能利用该字段,准确地对代码文件所对应的开发技能进行统计,因此,作为一种实施方式,在S15之前,所述方法还包括步骤:B1和B2。
B1:确定所述待分析的代码文件的第一文件格式。
在获取到所述待分析的代码文件之后,解析出所述代码文件的文件名称后缀,继而确定出所述代码文件的第一文件格式。
其中,所述第一文件格式可以为所述代码文件的文件名称后缀,也可以为其他。
其中,不同的文件名称后缀所对应的文件格式不同,相同的文件名称后缀所对应的文件格式相同。
在确定出实施第一文件格式之后,执行步骤B2。
B2:根据所述第一文件格式,从预先存储的文件格式和关键字段的对应关系中,查找出与所述第一文件格式对应的关键字段;其中,所述对应的关键字段为所述预先确定的关键字段。
通过将所述第一文件格式与文件格式和关键字段的对应关系中的文件格式进行比较,继而从文件格式和关键字段的对应关系中,查找出与所述第一文件格式对应的关键字段。
请参照图2,图2是本申请实施例提供的一种统计程序开发中使用的技能的装置200的结构框图。下面将对图2所示的结构框图进行阐述,所示装置包括:
获取单元210,用于获取待分析的代码文件的语法树,所述语法树包括至少一个节点。
确定单元220,用于针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段。
第一库名称获取单元230,用于在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称。
第一查找单元240,用于根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称。
统计单元250,用于对所述代码文件所对应的开发技能进行统计,得到统计结果。
作为一种实施方式,所述装置还包括:第二库名称获取单元,用于在确定存在所述关联的节点时,针对每个关联的节点,从该关联的节点的节点信息中获取第二库名称;第二查找单元,用于根据所述第二库名称,从所述对应关系中查找出与所述第二库名称对应的开发技能的名称。
作为一种实施方式,该节点信息中包括:与该节点对应的第一代码行号;所述第一库名称获取单元230,具有用于从该节点信息中获取所述第一库名称和所述第一代码行号;所述装置还包括:开发人员名称确定单元,用于在所述对所述代码文件所对应的开发技能进行统计之前,从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称;对应的,所述统计单元250,具体用于针对所述代码文件,分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
作为一种实施方式,所述统计单元250,还用于分别对所述代码文件所对应的各个开发技能的使用次数进行统计,得到所述统计结果。
作为一种实施方式,所述装置还包括:关键字段确定单元,用于确定所述待分析的代码文件的第一文件格式;以及根据所述第一文件格式,从预先存储的文件格式和关键字段的对应关系中,查找出与所述第一文件格式对应的关键字段;其中,所述对应的关键字段为所述预先确定的关键字段。
本实施例对的各功能单元实现各自功能的过程,请参见上述图1所示实施例中描述的内容,此处不再赘述。
请参照图3,图3为本申请实施例提供一种电子设备300的结构示意图,电子设备300可以包括:存储器302、处理301、通信接口303和通信总线,通信总线用于实现这些组件的连接通信。
所述存储器302用于存储本申请实施例提供的统计程序开发中使用的技能的方法和装置对应的计算程序指令等各种数据,其中,存储器302可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable ProgrammableRead-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable ProgrammableRead-Only Memory,EEPROM)等。
处理器301用于读取并运行存储于存储器中的统计程序开发中使用的技能的方法和装置对应的计算机程序指令,以获取待分析的代码文件的语法树,所述语法树包括至少一个节点;针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段;在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称;根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称;对所述代码文件所对应的开发技能进行统计,得到统计结果。
其中,处理器301可能是一种集成电路芯片,具有信号的处理能力。上述的处理器301可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口303,用于接收或者发送数据。
此外,本申请实施例还提供了一种存储介质,在该存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行本申请任一项实施方式所提供的方法。
综上所述,本申请各实施例提出的统计程序开发中使用的技能的方法、装置及电子设备,通过预先存储库名称和开发技能的对应关系,继而在获取到待分析的代码文件的语法树之后,针对语法树中的每个节点,在确定该节点的节点信息中包括表征库导入的字段时,才会确定所述语法树中是否存在与该节点关联的节点,在确定不存在与该节点关联的节点时,才会从该节点的节点信息中获取第一库名称,继而从所述对应关系中快速查找出与该第一库名称对应的开发技能,继而实现对所述代码文件所对应的开发技能的快速统计,上述过程无需人工参与,效率高。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
Claims (10)
1.一种统计程序开发中使用的技能的方法,其特征在于,所述方法包括:
获取待分析的代码文件的语法树,所述语法树包括至少一个节点;
针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段;
在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称;
根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称;
对所述代码文件所对应的开发技能进行统计,得到统计结果。
2.根据权利要求1所述的方法,其特征在于,在所述对所述代码文件所对应的开发技能进行统计,得到统计结果之前,所述方法还包括:
在确定存在所述关联的节点时,针对每个关联的节点,从该关联的节点的节点信息中获取第二库名称;
根据所述第二库名称,从所述对应关系中查找出与所述第二库名称对应的开发技能的名称。
3.根据权利要求1所述的方法,其特征在于,该节点信息中包括:与该节点对应的第一代码行号;所述从该节点信息中获取第一库名称,包括:
从该节点信息中获取所述第一库名称和所述第一代码行号;
在所述对所述代码文件所对应的开发技能进行统计之前,所述方法还包括:
从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称;
对应的,所述对所述代码文件所对应的开发技能进行统计,得到统计结果,包括:
针对所述代码文件,分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
4.根据权利要求1所述的方法,其特征在于,所述对所述代码文件所对应的开发技能进行统计,得到统计结果,包括:
分别对所述代码文件所对应的各个开发技能的使用次数进行统计,得到所述统计结果。
5.根据权利要求1所述的方法,其特征在于,在所述针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点之前,所述方法还包括:
确定所述待分析的代码文件的第一文件格式;
根据所述第一文件格式,从预先存储的文件格式和关键字段的对应关系中,查找出与所述第一文件格式对应的关键字段;其中,所述对应的关键字段为所述预先确定的关键字段。
6.一种统计程序开发中使用的技能的装置,其特征在于,所述装置包括:
获取单元,用于获取待分析的代码文件的语法树,所述语法树包括至少一个节点;
确定单元,用于针对每个节点,在确定该节点的节点信息中包括预先确定的关键字段时,确定所述语法树中是否存在与该节点关联的节点,其中,所述预先确定的关键字段为表征库导入的字段;
第一库名称获取单元,用于在确定不存在与该节点关联的节点时,从该节点的节点信息中获取第一库名称;
第一查找单元,用于根据所述第一库名称,从预先确定的库名称和开发技能的名称的对应关系中,查找出与所述第一库名称对应的开发技能的名称;
统计单元,用于对所述代码文件所对应的开发技能进行统计,得到统计结果。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二库名称获取单元,用于在确定存在所述关联的节点时,针对每个关联的节点,从该关联的节点的节点信息中获取第二库名称;
第二查找单元,用于根据所述第二库名称,从所述对应关系中查找出与所述第二库名称对应的开发技能的名称。
8.根据权利要求6所述的装置,其特征在于,该节点信息中包括:与该节点对应的第一代码行号;所述第一库名称获取单元,具有用于从该节点信息中获取所述第一库名称和所述第一代码行号;以及在所述对所述代码文件所对应的开发技能进行统计之前,所述方法还包括:从预先获取的代码行号与开发人员的名称的对应关系中,查找出与所述第一代码行号对应的开发人员的名称;
对应的,所述统计单元,具体用于针对所述代码文件,分别对不同开发人员所使用的开发技能进行统计,得到所述统计结果。
9.一种电子设备,其特征在于,包括存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行如权利要求1-5中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序指令,所述计算机程序指令被计算机读取并运行时,执行如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011053900.4A CN112114861B (zh) | 2020-09-29 | 2020-09-29 | 统计程序开发中使用的技能的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011053900.4A CN112114861B (zh) | 2020-09-29 | 2020-09-29 | 统计程序开发中使用的技能的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112114861A true CN112114861A (zh) | 2020-12-22 |
CN112114861B CN112114861B (zh) | 2024-03-26 |
Family
ID=73798040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011053900.4A Active CN112114861B (zh) | 2020-09-29 | 2020-09-29 | 统计程序开发中使用的技能的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114861B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002055854A (ja) * | 2000-08-07 | 2002-02-20 | Hitachi Software Eng Co Ltd | 計算機プログラム計測装置 |
JP2011257965A (ja) * | 2010-06-09 | 2011-12-22 | Mitsubishi Electric Corp | メトリクス算出装置 |
CN107239396A (zh) * | 2017-05-11 | 2017-10-10 | 东南大学 | 一种基于代码圈复杂度度量的软件演化评估方法 |
CN110413307A (zh) * | 2019-07-26 | 2019-11-05 | 网易(杭州)网络有限公司 | 代码功能的关联方法、装置及电子设备 |
CN111078863A (zh) * | 2019-12-16 | 2020-04-28 | 北京明略软件系统有限公司 | 数据获取方法、装置、数据处理设备及存储介质 |
CN111158665A (zh) * | 2019-12-27 | 2020-05-15 | 网易(杭州)网络有限公司 | 代码生成方法及装置、电子设备和存储介质 |
-
2020
- 2020-09-29 CN CN202011053900.4A patent/CN112114861B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002055854A (ja) * | 2000-08-07 | 2002-02-20 | Hitachi Software Eng Co Ltd | 計算機プログラム計測装置 |
JP2011257965A (ja) * | 2010-06-09 | 2011-12-22 | Mitsubishi Electric Corp | メトリクス算出装置 |
CN107239396A (zh) * | 2017-05-11 | 2017-10-10 | 东南大学 | 一种基于代码圈复杂度度量的软件演化评估方法 |
CN110413307A (zh) * | 2019-07-26 | 2019-11-05 | 网易(杭州)网络有限公司 | 代码功能的关联方法、装置及电子设备 |
CN111078863A (zh) * | 2019-12-16 | 2020-04-28 | 北京明略软件系统有限公司 | 数据获取方法、装置、数据处理设备及存储介质 |
CN111158665A (zh) * | 2019-12-27 | 2020-05-15 | 网易(杭州)网络有限公司 | 代码生成方法及装置、电子设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
MOHAMMED ALAWAIRDHI 等: "Static analysis based business logic modelling from legacy system code_ Business process model notation (BPMN) extraction using abstract syntax tree (AST)", 《2015 INTERNATIONAL SYMPOSIUM ON NETWORKS, COMPUTERS AND COMMUNICATIONS (ISNCC)》, pages 1 - 6 * |
孙辞海: "基于专家系统的程序代码知识点自动识别方法研究", 《中国优秀硕士学位论文全文数据库》, no. 2010, pages 140 - 52 * |
钟金荣: "程序调试过程测量系统的设计与实现", 《中国优秀硕士学位论文全文数据库》, no. 2020, pages 138 - 826 * |
Also Published As
Publication number | Publication date |
---|---|
CN112114861B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114422267B (zh) | 流量检测方法、装置、设备及介质 | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN109271315B (zh) | 脚本代码检测方法、装置、计算机设备及存储介质 | |
CN112181430B (zh) | 代码变更统计方法、装置、电子设备及存储介质 | |
CN112149136A (zh) | loT设备固件漏洞的检测方法、系统及电子设备 | |
CN110990350B (zh) | 日志的解析方法及装置 | |
CN111506342A (zh) | 版本差异检测方法、装置、电子设备及存储介质 | |
CN113778864A (zh) | 一种测试用例的生成方法和装置、电子设备和存储介质 | |
CN115118582A (zh) | 日志分析的方法和装置 | |
CN111290961A (zh) | 接口测试的管理方法、装置及终端设备 | |
CN113641873B (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN112671878A (zh) | 一种区块链的信息订阅方法、装置、服务器和存储介质 | |
CN112114861B (zh) | 统计程序开发中使用的技能的方法、装置及电子设备 | |
CN116662302A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116185393A (zh) | 接口文档的生成方法、装置、设备、介质及产品 | |
CN112882707B (zh) | 一种渲染方法、装置、存储介质及电子设备 | |
CN110442370B (zh) | 一种测试用例查询方法及装置 | |
CN113806231A (zh) | 一种代码覆盖率分析方法、装置、设备和介质 | |
CN109189369B (zh) | 一种压缩代码的方法及装置 | |
CN111736848A (zh) | 包冲突定位方法、装置、电子设备及可读存储介质 | |
CN112433943A (zh) | 基于抽象语法树的环境变量检测方法、装置、设备及介质 | |
CN112003837A (zh) | 基于Modbus协议的设备智能适配方法、装置及存储介质 | |
CN112737831A (zh) | 一种固件升级包处理方法、装置、电子设备和存储介质 | |
CN116680171B (zh) | 测试方法、装置、存储介质及电子设备 | |
CN111787007B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |