代码评审方法及装置制造方法及图纸

技术编号:38899051 阅读:12 留言:0更新日期:2023-09-22 14:19
本申请提供代码评审方法及装置,其中代码评审方法包括:获取项目源代码,并遍历项目源代码,查找设定文件类型的至少一个待分析文件;确定第一待分析文件是否为数据对象文件,其中,第一待分析文件为至少一个待分析文件中的任一个;若第一待分析文件为数据对象文件,则获取第一待分析文件的抽象语法树中的各个类节点;遍历各个类节点,提取各个类节点下基本类型的字段声明,根据提取到的字段声明是否为空,确定项目源代码中是否存在基本类型的类型变量。如此,自动化扫描项目源代码,根据项目源代码提取出抽象语法树,快速查找项目源代码中是否存在基本类型的类型变量,查找时间快,准确度高,减少了人工成本。减少了人工成本。减少了人工成本。

【技术实现步骤摘要】
代码评审方法及装置


[0001]本申请涉及计算机
,特别涉及一种代码评审方法。本申请同时涉及一种代码评审装置,一种计算设备,以及一种计算机可读存储介质。

技术介绍

[0002]随着计算机技术和互联网技术的快速发展,互联网行业已然发展成为炙手可热的行业,工作和生活的角落都充斥着各种互联网产品,而每个互联网产品都需要基于开发人员编写的代码实现。开发人员在开发互联网产品时,往往需要对数据变量进行定义,由于开发人员的开发经验及对代码理解不同,在代码的开发过程中,对数据传输组件内部的变量进行定义时,有时会使用一些基本类型(Primitive)对变量进行定义,这种写法并不会触发语法错误,代码编译也不会发生异常,但是由于基本类型(Primitive)在面向对象的编程模式下缺乏对空值(NULL)的处理,在一些对外的接口中,若调用者传入空值(NULL)的时候,可能会导致程序异常,造成严重的线上问题。
[0003]由于这种写法并不会引起编译错误,很难通过编译器发现此类问题,同时也很难通过测试发现该类问题,现有技术中,为了避免出现类似问题,往往是通过人工进行代码评审,查找代码中是否使用基本类型(Primitive)的类型变量,以解决该类问题。然而,上述方法中,人工进行代码评审这种方式往往可能存在遗漏、误判等问题,且一个项目的代码可能上万行,完全通过人工进行代码评审的方式,需要耗费大量的时间,影响项目进度。

技术实现思路

[0004]有鉴于此,本申请实施例提供了一种代码评审方法。本申请同时涉及一种代码评审装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的遗漏、误判等技术问题,以及需要耗费大量的时间,影响项目进度等技术问题。
[0005]根据本申请实施例的第一方面,提供了一种代码评审方法,包括:
[0006]获取项目源代码,并遍历项目源代码,查找设定文件类型的至少一个待分析文件;
[0007]确定第一待分析文件是否为数据对象文件,其中,第一待分析文件为至少一个待分析文件中的任一个;
[0008]若第一待分析文件为数据对象文件,则获取第一待分析文件的抽象语法树中的各个类节点;
[0009]遍历各个类节点,提取各个类节点下基本类型的字段声明,根据提取到的字段声明是否为空,确定项目源代码中是否存在基本类型的类型变量。
[0010]根据本申请实施例的第二方面,提供了一种代码评审装置,包括:
[0011]查找模块,被配置为获取项目源代码,并遍历项目源代码,查找设定文件类型的至少一个待分析文件;
[0012]第一确定模块,被配置为确定第一待分析文件是否为数据对象文件,其中,第一待分析文件为至少一个待分析文件中的任一个;
[0013]获取模块,被配置为若第一待分析文件为数据对象文件,则获取第一待分析文件的抽象语法树中的各个类节点;
[0014]第二确定模块,被配置为遍历各个类节点,提取各个类节点下基本类型的字段声明,根据提取到的字段声明是否为空,确定项目源代码中是否存在基本类型的类型变量。
[0015]根据本申请实施例的第三方面,提供了一种计算设备,包括:
[0016]存储器和处理器;
[0017]存储器用于存储计算机可执行指令,处理器用于执行计算机可执行指令,以实现上述的代码评审方法的步骤。
[0018]根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述的代码评审方法的步骤。
[0019]本申请实施例提供的代码评审方法,获取项目源代码,并遍历项目源代码,查找设定文件类型的至少一个待分析文件;确定第一待分析文件是否为数据对象文件,其中,第一待分析文件为至少一个待分析文件中的任一个;若第一待分析文件为数据对象文件,则获取第一待分析文件的抽象语法树中的各个类节点;遍历各个类节点,提取各个类节点下基本类型的字段声明,根据提取到的字段声明是否为空,确定项目源代码中是否存在基本类型的类型变量。
[0020]这种情况下,获取到项目源代码后,可以遍历项目源代码的整个文件夹,筛选出设定文件类型的待分析文件,然后进一步筛选待分析文件是否为数据对象文件,针对数据对象文件,再基于其抽象语法树中的各个类节点,提取各个类节点下基本类型的字段声明,根据提取到的字段声明是否空,确定项目源代码中是否存在基本类型的类型变量。如此,自动化扫描项目源代码,根据项目源代码提取出抽象语法树,快速查找项目源代码中是否存在基本类型的类型变量,查找时间快,且通过自动化扫描的方式,避免了人工查找的漏查、误判等问题,查找准确度高,再者查询过程不再依赖人工,完全通过自动化脚本实现,减少了人工成本。
附图说明
[0021]图1是本申请一实施例提供的一种代码评审方法的流程图;
[0022]图2是本申请一实施例提供的一种应用于java编程语言下的代码评审方法的处理流程图;
[0023]图3是本申请一实施例提供的一种代码评审装置的结构示意图;
[0024]图4是本申请一实施例提供的一种计算设备的结构框图。
具体实施方式
[0025]在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
[0026]在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0027]应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0028]首先,对本申请一个或多个实施例涉及的名词术语进行解释。
[0029]POJO(PlainOrdinaryjavaObject)类:是不包含业务逻辑的透明组件,有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection(连接)之类的方法,就像其命名那样,它的确简单只用作单纯的DTO(DataTransportObject,数据传输对象)或者VO(ValueObject,值对象),它通常的构成形式为一个包含私有变量作为属性以及访问其属性的getter和setter方法的类,根据需要可以为其添加con本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码评审方法,其特征在于,所述方法包括:获取项目源代码,并遍历所述项目源代码,查找设定文件类型的至少一个待分析文件;确定第一待分析文件是否为数据对象文件,其中,所述第一待分析文件为所述至少一个待分析文件中的任一个;若所述第一待分析文件为数据对象文件,则获取所述第一待分析文件的抽象语法树中的各个类节点;遍历所述各个类节点,提取所述各个类节点下基本类型的字段声明,根据提取到的字段声明是否为空,确定所述项目源代码中是否存在基本类型的类型变量。2.根据权利要求1所述的代码评审方法,其特征在于,所述确定第一待分析文件是否为数据对象文件,包括:确定所述第一待分析文件的文件命名是否以设定标识结尾,其中,所述设定标识为编程语言中数据对象文件对应的标识;若不以设定标识结尾,则确定所述第一待分析文件不是数据对象文件,跳过所述第一待分析文件;若以设定标识结尾,则将所述第一待分析文件解析成抽象语法树,根据所述抽象语法树确定所述第一待分析文件是否为数据对象文件。3.根据权利要求2所述的代码评审方法,其特征在于,所述根据所述抽象语法树确定所述第一待分析文件是否为数据对象文件,包括:确定所述抽象语法树中是否存在注解节点;若不存在注解节点,则确定所述第一待分析文件不是数据对象文件,跳过所述第一待分析文件;若存在注解节点,则获取所述注解节点下的待确认注解信息,根据所述待确认注解信息,确定所述第一待分析文件是否为数据对象文件。4.根据权利要求3所述的代码评审方法,其特征在于,所述根据所述待确认注解信息,确定所述第一待分析文件是否为数据对象文件,包括:确定所述待确认注解信息是否为数据对象对应的注解信息;若各个注解节点下的待确认注解信息均不是数据对象对应的注解信息,则确定所述第一待分析文件不是数据对象文件,跳过所述第一待分析文件;若任一注解节点下的待确认注解信息是数据对象对应的注解信息,则确定所述第一待分析文件是数据对象文件。5.根据权利要求4所述的代码评审方法,其特征在于,所述数据对象对应的注解信息包括第一注解、第二注解和第三注解;所述确定所述待确认注解信息是否为数据对象对应的注解信息,包括:确定所述待确认注解信息是否为所述第一注解、第二注解和第三注解中的任一个;若是,则确定所述待确认注解信息为数据对象对应的注解信息;若否,则确...

【专利技术属性】
技术研发人员:欧阳旭
申请(专利权)人:上海哔哩哔哩科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1