CN113672517A - 一种代码检查方法、装置、电子设备和介质 - Google Patents
一种代码检查方法、装置、电子设备和介质 Download PDFInfo
- Publication number
- CN113672517A CN113672517A CN202111038241.1A CN202111038241A CN113672517A CN 113672517 A CN113672517 A CN 113672517A CN 202111038241 A CN202111038241 A CN 202111038241A CN 113672517 A CN113672517 A CN 113672517A
- Authority
- CN
- China
- Prior art keywords
- code
- error reporting
- developer
- checking
- monitoring tool
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种代码检查方法、装置、电子设备和可读存储介质,所述方法包括:接收版本监控工具推送的代码提交记录;根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果;若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员;执行针对所述开发人员的提醒操作。根据本发明实施例,提供一种基于增量的代码检查方法,通过版本监控工具实时监控代码更新情况,生成对应的代码提交记录,根据该代码提交记录确定更新代码,进而只对更新代码进行静态代码检查,可以避免对代码进行全量检查时过于耗时的问题。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种代码检查方法、一种代码检查装置、一种电子设备和一种计算机可读存储介质。
背景技术
在软件产品的开发过程中,代码不规范或者语法错误等导致的代码缺陷,通常会使测试和开发人员花费大量精力和时间去寻找问题原因和解决办法。这种代码缺陷,通常是使用静态代码检查来进行预警和报错,以此来缩短产品的开发周期的。
然而,现有的静态代码检查方法虽然能够扫描出部分代码缺陷并进行预警,但仍然需要耗费大量的时间,且对于后续代码缺陷的跟进处理没有便捷有效的解决方案。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种代码检查方法和相应的一种代码检查装置、一种电子设备,以及一种计算机可读存储介质。
本发明实施例公开了一种代码检查方法,所述方法包括:
接收版本监控工具推送的代码提交记录;
根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果;
若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员;
执行针对所述开发人员的提醒操作;所述提醒操作用于提醒所述开发人员进行代码修正。
可选地,所述接收版本监控工具推送的代码提交记录,包括:
接收所述版本监控工具的钩子推送的所述代码提交记录,并将所述代码提交记录进行记录;所述代码提交记录包括提交代码的路径信息。
可选地,所述根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果,包括:
从存储有所述更新后的代码的第一数据仓库中,提取与所述代码提交记录对应的更新代码;
将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果。
可选地,所述若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员,包括:
若所述检查结果中包括代码报错信息,则采用预设的检查规则对所述报错代码进行分类,并确定每一类别对应的处理优先级;
按照所述处理优先级的顺序,依次通过所述版本监控工具确定所述报错代码对应的所述开发人员。
可选地,所述通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员之前,还包括:
判断所述报错代码是否符合预设的黑名单条件;
若符合,则忽略所述报错代码;
否则,执行所述确定所述代码报错信息中报错代码对应的开发人员的步骤。
可选地,所述执行针对所述开发人员的提醒操作,包括:
生成并发送针对所述开发人员的代码修正订单。
可选地,所述将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果之后,还包括:
将所述代码报错信息记录于预设数据库中;
记录完成后,清空所述第二数据仓库。
本发明实施例还公开了一种代码检查装置,所述装置包括:
接收模块,用于接收版本监控工具推送的代码提交记录;
检查模块,用于根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果;
确定模块,用于若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员;
提醒模块,用于执行针对所述开发人员的提醒操作;所述提醒操作用于提醒所述开发人员进行代码修正。
可选地,所述接收模块,包括:
接收子模块,用于接收所述版本监控工具的钩子推送的所述代码提交记录,并将所述代码提交记录进行记录;所述代码提交记录包括提交代码的路径信息。
可选地,所述检查模块,包括:
提取子模块,用于从存储有所述更新后的代码的第一数据仓库中,提取与所述代码提交记录对应的更新代码;
检查子模块,用于将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果。
可选地,所述确定模块,包括:
分类子模块,用于若所述检查结果中包括代码报错信息,则采用预设的检查规则对所述报错代码进行分类,并确定每一类别对应的处理优先级;
确定子模块,用于按照所述处理优先级的顺序,依次通过所述版本监控工具确定所述报错代码对应的所述开发人员。
可选地,所述装置,还包括:
判断模块,用于判断所述报错代码是否符合预设的黑名单条件;
若符合,则忽略所述报错代码;
否则,执行所述确定所述代码报错信息中报错代码对应的开发人员的步骤。
可选地,所述提醒模块,包括:
生成子模块,用于生成并发送针对所述开发人员的代码修正订单。
可选地,所述装置,还包括:
记录模块,用于将所述代码报错信息记录于预设数据库中;
清空模块,用于记录完成后,清空所述第二数据仓库。
本发明实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的一种代码检查方法的步骤。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的一种代码检查方法的步骤。
本发明实施例包括以下优点:
在本发明实施例中,可以根据版本监控工具推送的代码提交记对更新后的代码进行静态代码检查,并可以通过版本监控工具快速定位提交报错代码相应的开发人员。通过采用上述方法,提供一种基于增量的代码检查方法,通过版本监控工具实时监控代码更新情况,生成对应的代码提交记录,根据该代码提交记录确定更新代码,进而只对更新代码进行静态代码检查,可以避免对代码进行全量检查时过于耗时的问题,此外,对于检查出的报错代码,无需通过人工进行认领或者分配,而是通过版本监控工具直接指派负责的开发人员进行代码修正,可以提高代码的开发效率。
附图说明
图1是本发明实施例提供的一种代码检查方法的步骤流程图;
图2是本发明实施例提供的另一种代码检查方法的步骤流程图;
图3是本发明实施例的一种代码检查方法的流程图;
图4是本发明实施例的一种代码检查方法的原理流程图;
图5是本发明实施例提供的一种代码检查装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
Git,是用于跟踪任何一组文件中的更改的软件,通常用于在软件开发期间协调开发源代码的程序员之间的工作。其目标包括速度、数据完整性以及对分布式非线性工作流(在不同***上运行的数千个并行分支)的支持。
Subversion(简称SVN,svn),一个开放源代码的版本控制***,相较于RCS(Revision Control System)、CVS(Concurrent Version System),它采用了分支管理***,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS转移到Subversion。
静态代码检查,是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。
在软件产品的开发过程中,代码不规范或者语法错误等导致的代码缺陷,通常会使测试和开发人员花费大量精力和时间去寻找问题原因和解决办法。多数产品会通过使用静态代码检查来进行预警和报错,以此来缩短产品的开发周期。
不同于动态测试方法需要运行代码程序来检测软件的缺陷,静态代码检查不需要执行代码,而是通过分析源代码的语法和结构是否错误,或者通过一些自定义的规则来检查某些特定接口,以此来实现对代码缺陷的识别和定位。包括但不限于变量检查、错误引用、违背编程风格的格式问题、以及代码语法和结构检查等。另外,静态代码检查通常是一个自动化的流程,不需要人工参与,通过工具自动化地完成对代码的扫描,因此节省了大量人力。由于其成本低且效果明显,静态代码检查被广泛用于各类软件产品开发中。现有的静态代码检查方法通常是开发人员在某个特定的时间执行工具,进行所要检查代码的全量扫描。而对于代码规模较大的程序,全量扫描往往会耗费大量时间。对于修改后的回归检查,又需要再次进行全量静态代码测试。
另外,目前的软件产品多数是由多人合作开发,为了便于多人合作的开发方式以及代码更改记录,团队通常会采用一些版本监控***来进行代码管理,如SVN(Subversion)、GIT等。这些版本控制***通常会自带钩子功能用于跟踪和管理代码,以及通过追溯的方式可以定位到具体代码的提交信息。
目前对静态代码检查的扫描和后续处理方案,主要有以下几种方式:
1、最常见的方式是由人工手动执行代码检查脚本,对所要检查的代码进行全量扫描,并将扫描出的报错信息进行人工识别,再分配给相对应的开发人员做修改。
2、另一种为增量检查,通过确定新增的源文件,对新增文件和其有依赖关系的源文件进行增量的静态代码检查。但这种方式也需要人工确定新增文件以及人工识别报错信息。
3、对于报错信息的后续处理,通常是由执行人员将结果放到某个平台上,由开发人员人工进行认领或者分配。
4、将扫描出的报错信息,以人工的方式将信息直接交给开发人员。
由此可见,现有的静态代码检查方法虽然能够扫描出代码问题进行预警,但过于耗时且对于后续问题的跟进处理并没有好的解决方案,具体而言,现有的代码检查方法存在以下问题:
1、对于代码规模较大的项目,传统的全量静态代码检查过于耗时。当开发人员对报错代码进行修复后,又需要再次进行全量检查,耗费的时间会成倍增长。
2、增量检查的方式能够大幅解决耗时的问题。但仍需要通过人工确认增量代码,过于浪费人力。
3、对于检查出的报错问题,后续由人工进行认领或者分配,会降低开发效率且浪费人力。
4、对于检测出的报错问题没有***的划分,导致报错信息过多且处理优先级不明。对于需要紧急处理的代码问题,开发人员不能及时反馈。
本发明实施例的核心构思之一在于,可以根据版本监控工具推送的代码提交记对更新后的代码进行静态代码检查,并可以通过版本监控工具快速定位提交报错代码相应的开发人员。通过采用上述方法,提供一种基于增量的代码检查方法,通过版本监控工具实时监控代码更新情况,生成对应的代码提交记录,根据该代码提交记录确定更新代码,进而只对更新代码进行静态代码检查,可以避免对代码进行全量检查时过于耗时的问题,此外,对于检查出的报错代码,无需通过人工进行认领或者分配,而是通过版本监控工具直接指派负责的开发人员进行代码修正,可以提高代码的开发效率。
参照图1,示出了本发明实施例提供的一种代码检查方法的步骤流程图,具体可以包括如下步骤:
步骤101,接收版本监控工具推送的代码提交记录。
在本发明实施例中,可以接收版本监控工具推送的代码提交记录。
其中,版本监控工具是指用于跟踪和管理源代码文件变化的版本控制工具。举例而言,可以将Git或者Subversion等作为本发明实施例中的版本监控工具,对于版本监控工具的种类,本发明实施例不加以具体限定。
版本监控工具可以实时监控开发过程中源代码文件的代码变更情况,将开发人员每次提交的代码信息生成相应的代码提交记录,并将该代码提交记录发送到进行代码检查的服务器或者***中。
步骤102,根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果。
在本发明实施例中,可以根据代码提交记录,对更新后的代码进行静态代码检查,并得到相应的代码检查结果。该过程可以在静态代码检查服务器中进行。
步骤103,若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员。
在本发明实施例中,如果检查结果中包括代码报错信息,即表示更新后的代码存在代码缺陷,则可以通过版本监控工具确定存在代码缺陷的报错代码,以及确定提交该报错代码的开发人员。
步骤104,执行针对所述开发人员的提醒操作。
其中,提醒操作用于提醒开发人员进行代码修正。
在本发明实施例中,在确定提交报错代码的开发人员后,即可以执行针对该开发人员的提醒操作,以提醒该开发人员进行代码修正。
综上,在本发明实施例中,可以根据版本监控工具推送的代码提交记对更新后的代码进行静态代码检查,并可以通过版本监控工具快速定位提交报错代码相应的开发人员。通过采用上述方法,提供一种基于增量的代码检查方法,通过版本监控工具实时监控代码更新情况,生成对应的代码提交记录,根据该代码提交记录确定更新代码,进而只对更新代码进行静态代码检查,可以避免对代码进行全量检查时过于耗时的问题,此外,对于检查出的报错代码,无需通过人工进行认领或者分配,而是通过版本监控工具直接指派负责的开发人员进行代码修正,可以提高代码的开发效率。
参照图2,示出了本发明实施例提供的另一种代码检查方法的步骤流程图,具体可以包括如下步骤:
步骤201,接收版本监控工具推送的代码提交记录。
在本发明实施例中,可以接收版本监控工具推送的开发人员的代码提交记录。版本监控工具是指用于跟踪和管理源代码文件变化的版本控制工具。
针对步骤201,可以执行以下子步骤:
子步骤S11,接收所述版本监控工具的钩子推送的所述代码提交记录,并将所述代码提交记录进行记录。
其中,代码提交记录包括提交代码的路径信息。
版本监控工具中具有代码追踪工具:钩子。钩子可以实时监控代码变更信息。在一种示例中,可以通过版本监控工具(git/svn)中自带的代码追踪工具:钩子(hook)。将开发人员每次提交的代码提交记录都推送给静态代码检查服务器。静态代码检查服务器通过http协议(HyperTextTransferProtocol,HTTP)做接收,将所有提交过的代码进行记录。
步骤202,从存储有所述更新后的代码的第一数据仓库中,提取与所述代码提交记录对应的更新代码。
在本发明实施例中,可以从存储有更新后的代码的第一数据仓库中,提取与代码提交记录对应的更新代码。其中,第一数据仓库用于存储完整代码。根据代码提交记录,可以从存储有完整代码的第一数据仓库中,提取与该代码提交记录对应的更新代码。
在一种可选的实施例中,可以从推送的代码提交记录中,提取其所包含的提交代码的路径信息,并将该路径信息存储于一文件中。当接收到代码检查指令时,可以直接从该文件中获取提交代码的路径信息,并按照该路径信息将相应的代码从第一数据仓库中提取出来。
步骤203,将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果。
在本发明实施例中,将与代码提交记录对应的更新代码提取出来后,可以将该更新代码存储于第二数据仓库中。第二数据仓库为代码检查仓库,其用于存储需要进行检查的代码。
定时对第二数据仓库进行扫描,以对存储其中的更新代码进行静态代码检查,静态代码检查结束后,得到对应的检查结果。检查结果中可能包括代码报错信息。
由于开发人员提交代码的时间通常是不确定的,因此,接收到代码提交记录的时间也不确定,第二数据仓库中的更新代码是动态变化的,可以定时对第二数据仓库进行扫描,以对一段时间内的更新代码进行检查。
在一种可选的实施例中,所述将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果之后,还包括:
将所述代码报错信息记录于预设数据库中;记录完成后,清空所述第二数据仓库。
在一种实施例中,如果检查结果中包括代码报错信息,可以将该代码报错信息记录于本地的一个数据库中,并在记录完成后,清空第二数据仓库,从而释放存储空间。
步骤204,若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员。
在本发明实施例中,如果检查结果中包括代码报错信息,则确定开发人员提交的代码存在代码缺陷。可以通过版本监控工具的追溯功能确定提交报错代码的开发人员。在一种示例中,可以获取代码报错信息中报错代码所在的源代码文件名和行数,通过版本监控工具(git/svn)中自带的追溯功能(blame),确定此报错代码的提交信息。提交信息中可以包括提交时间、提交人员和提交版本号。
针对步骤204,可以执行以下子步骤:
子步骤S21,若所述检查结果中包括代码报错信息,则采用预设的检查规则对所述报错代码进行分类,并确定每一类别对应的处理优先级。
子步骤S22,按照所述处理优先级的顺序,依次通过所述版本监控工具确定所述报错代码对应的所述开发人员。
静态代码检查可以采用python中pylint作为检查原理,其中检查规则根据项目需要选取pylint中自带的部分规则,如E0001(syntax-error,语法错误)、E0602(undefined-variable,未定义变量)等;以及根据项目情况自定义的规则进行检查,如调用某些特殊方法时进行报警。此外,还可以采用其他的检查原理进行静态代码检查,对此,本发明实施例不加以具体限制。
在本发明实施例中,可以对检查规则进行分类,并确定每一类别对应的处理优先级。当检测结果中包括代码报错信息时,可以将该代码报错信息中的报错代码按照预设的检查规则进行分类,并确定与该类别对应的处理优先级。可以按照处理优先级的顺序,对报错代码进行处理,即可以按照处理优先级的顺序,依次确定报错代码相应的开发人员。举例而言,进行处理优先级的划分,可以为对不能调用的方法或者语法错误等标为‘紧急’、使用中文等标为‘高’、注释中带有TODO未处理字段等标为‘可忽略’。
对报错代码进行处理优先级的划分之后,在检查结果抛出时即可以根据处理优先级来判断是否优先处理,使开发人员能够更高效地解决问题。
在一种可选的实施例中,所述通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员之前,还包括:
判断所述报错代码是否符合预设的黑名单条件;若符合,则忽略所述报错代码;否则,执行所述确定所述代码报错信息中报错代码对应的开发人员的步骤。
在本发明实施例中,对于误报或者其他特殊情况的报错,可以作忽略处理,即可以判断报错代码是否符合预设的黑名单条件,若符合,则可以对该报错代码进行忽略处理,否则,需要开发人员对该报错代码进行修正。其中,可以忽略处理的类型,如某些工具文件代码无需强制遵守、或者某些规则不适用于当前项目工程等。在后续的代码检查过程中,还可以设置屏蔽此类文件或规则。
步骤205,执行针对所述开发人员的提醒操作。
其中,提醒操作用于提醒开发人员进行代码修正。
在本发明实施例中,在确定提交报错代码对应的开发人员后,可以执行针对开发人员的提醒操作。在一种示例中,如果开发人员对高处理优先级的报错代码没有进行修改,则会每隔一段时间进行一次提醒。
针对步骤205,可以执行以下子步骤:
子步骤S31,生成并发送针对所述开发人员的代码修正订单。
在本发明实施例中,可以生成针对开发人员的代码修正订单,并将该订单发送到开发人员使用的终端设备中。
通过自动创建需求单的方式,对开发人员进行提醒和备忘。当开发人员修复代码缺陷并重新提交后,将再次进行自动代码检查,以此循环。
为了使本领域技术人员能够更好地理解本发明实施例步骤201至步骤205,下面通过一个例子加以说明:
参照图3所示为本发明实施例的一种代码检查方法的流程图。该方法应用于静态代码检查服务器中,具体流程如下:
1、版本监控工具对本地代码仓库中的源代码文件进行监控管理,当开发人员提交代码后,版本监控工具可以生成相应的代码提交记录。静态代码检查服务器可以接收版本监控工具的钩子推送的代码提交记录。其中,该推送时间可以根据实际项目情况进行设置;
2、静态代码检查服务器负责对更新后的代码进行定时检查,参照图4所示为本发明实施例的一种代码检查方法的原理流程图。具体细节如下:
1)通过版本监控工具(git/svn)中自带的代码追踪工具:钩子(hook)。将开发人员每次提交的代码提交记录都推送给静态代码检查服务器。静态代码检查服务器通过http协议接收。
2)通过推送的代码提交记录,提取所有提交代码的路径信息,并将该路径信息存储在某个本地文件A中。在本地拷贝一份完整的代码作为本地代码仓库B(即第一数据仓库)。创建一个真正需要作扫描检查的检查仓库C(即第二数据仓库)。定时更新本地代码仓库B,并通过文件A中的路径信息,将所有提交的更新代码从本地代码仓库B拉取到检查仓库C中;然后定时扫描检查仓库C,并把代码报错信息记录在本地数据库D中,最后再清空检查仓库C。此外,对于代码报错,还可以判断是否在黑名单中,若是,则可以忽略该报错代码,否则,需要对该报错代码进行修复处理。
3、若检查结果表示有报错代码,则通过版本监控工具(git/svn)中自带的追溯功能,确定提交此报错代码的开发人员,并可以通过通讯软件的接口发送相应的提醒信息给该开发人员,例如,可以在报错群中发送通知;或者可以通过项目管理软件的接口将报错信息以订单的形式发送给相应的开发人员。
4、当开发人员进行修改,重新提交相应的代码后,又会触发一次静态代码检查流程,直到无报错为止。另外,开发人员也可以通过反馈接口,屏蔽某些代码报错信息,服务器将详细信息记录在‘黑名单’中后,下次推送会对‘黑名单’中的信息进行判断,若在其中,则将不再推送相关信息。
综上,在本发明实施例中,可以根据版本监控工具推送的代码提交记对更新后的代码进行静态代码检查,并可以通过版本监控工具快速定位提交报错代码相应的开发人员。通过采用上述方法,提供一种基于增量的代码检查方法,通过版本监控工具实时监控代码更新情况,生成对应的代码提交记录,根据该代码提交记录确定更新代码,进而只对更新代码进行静态代码检查,可以避免对代码进行全量检查时过于耗时的问题,此外,对于检查出的报错代码,无需通过人工进行认领或者分配,而是通过版本监控工具直接指派负责的开发人员进行代码修正,可以提高代码的开发效率。
本发明通过增量的方式进行自动静态代码检查,并以检查规则分类对报错代码作处理优先级的划分,最后以自动追溯的方式找到提交代码的开发人员进行认领。其中,增量的方式是通过版本监控工具的钩子,实时监控近期所有变更过的代码,将其文件名称和路径进行保存,在一定时间后,提取所有收集到的变更源代码文件再作静态代码检查。通过版本监控的方式确定增量文件,无需人工操作就能实时监控,节省了人力。在减少全量检查过于耗时的情况下,也避免了频繁报错的尴尬。通过对检查规则的分类,定义报错代码的处理优先级,在检查结果抛出时即可以判断是否需要进行优先处理,使开发人员能够更高效地解决问题。对于部分误报或者特殊情况的报错,开发人员可作忽略处理,可以解决部分由于特殊代码无需处理的情况,提高了代码检查的报错精度。通过版本监控工具中的自动追溯方式,快速定位提交报错代码的开发人员,并通过自动创建需求单的方式,对相关人员进行提醒和备忘。当开发人员修复代码缺陷提交后,将会再一次进行自动代码检查,以此循环。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明实施例提供的一种代码检查装置的结构框图,具体可以包括如下模块:
接收模块501,用于接收版本监控工具推送的代码提交记录;
检查模块502,用于根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果;
确定模块503,用于若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员;
提醒模块504,用于执行针对所述开发人员的提醒操作;所述提醒操作用于提醒所述开发人员进行代码修正。
在本发明实施例中,所述接收模块,包括:
接收子模块,用于接收所述版本监控工具的钩子推送的所述代码提交记录,并将所述代码提交记录进行记录;所述代码提交记录包括提交代码的路径信息。
在本发明实施例中,所述检查模块,包括:
提取子模块,用于从存储有所述更新后的代码的第一数据仓库中,提取与所述代码提交记录对应的更新代码;
检查子模块,用于将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果。
在本发明实施例中,所述确定模块,包括:
分类子模块,用于若所述检查结果中包括代码报错信息,则采用预设的检查规则对所述报错代码进行分类,并确定每一类别对应的处理优先级;
确定子模块,用于按照所述处理优先级的顺序,依次通过所述版本监控工具确定所述报错代码对应的所述开发人员。
在本发明实施例中,所述装置,还包括:
判断模块,用于判断所述报错代码是否符合预设的黑名单条件;
若符合,则忽略所述报错代码;
否则,执行所述确定所述代码报错信息中报错代码对应的开发人员的步骤。
在本发明实施例中,所述提醒模块,包括:
生成子模块,用于生成并发送针对所述开发人员的代码修正订单。
在本发明实施例中,所述装置,还包括:
记录模块,用于将所述代码报错信息记录于预设数据库中;
清空模块,用于记录完成后,清空所述第二数据仓库。
综上,在本发明实施例中,可以根据版本监控工具推送的代码提交记对更新后的代码进行静态代码检查,并可以通过版本监控工具快速定位提交报错代码相应的开发人员。通过采用上述方法,提供一种基于增量的代码检查方法,通过版本监控工具实时监控代码更新情况,生成对应的代码提交记录,根据该代码提交记录确定更新代码,进而只对更新代码进行静态代码检查,可以避免对代码进行全量检查时过于耗时的问题,此外,对于检查出的报错代码,无需通过人工进行认领或者分配,而是通过版本监控工具直接指派负责的开发人员进行代码修正,可以提高代码的开发效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述一种代码检查方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述一种代码检查方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种代码检查方法和一种代码检查装置、一种电子设备和一种计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种代码检查方法,其特征在于,所述方法包括:
接收版本监控工具推送的代码提交记录;
根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果;
若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员;
执行针对所述开发人员的提醒操作;所述提醒操作用于提醒所述开发人员进行代码修正。
2.根据权利要求1所述的方法,其特征在于,所述接收版本监控工具推送的代码提交记录,包括:
接收所述版本监控工具的钩子推送的所述代码提交记录,并将所述代码提交记录进行记录;所述代码提交记录包括提交代码的路径信息。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果,包括:
从存储有所述更新后的代码的第一数据仓库中,提取与所述代码提交记录对应的更新代码;
将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果。
4.根据权利要求1所述的方法,其特征在于,所述若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员,包括:
若所述检查结果中包括代码报错信息,则采用预设的检查规则对所述报错代码进行分类,并确定每一类别对应的处理优先级;
按照所述处理优先级的顺序,依次通过所述版本监控工具确定所述报错代码对应的所述开发人员。
5.根据权利要求1所述的方法,其特征在于,所述通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员之前,还包括:
判断所述报错代码是否符合预设的黑名单条件;
若符合,则忽略所述报错代码;
否则,执行所述确定所述代码报错信息中报错代码对应的开发人员的步骤。
6.根据权利要求1所述的方法,其特征在于,所述执行针对所述开发人员的提醒操作,包括:
生成并发送针对所述开发人员的代码修正订单。
7.根据权利要求4所述的方法,其特征在于,所述将所述更新代码存储于第二数据仓库中,并定时扫描所述第二数据仓库,以对所述更新代码进行静态代码检查,得到对应的所述检查结果之后,还包括:
将所述代码报错信息记录于预设数据库中;
记录完成后,清空所述第二数据仓库。
8.一种代码检查装置,其特征在于,所述装置包括:
接收模块,用于接收版本监控工具推送的代码提交记录;
检查模块,用于根据所述代码提交记录对更新后的代码进行静态代码检查,得到对应的检查结果;
确定模块,用于若所述检查结果中包括代码报错信息,则通过所述版本监控工具确定所述代码报错信息中报错代码对应的开发人员;
提醒模块,用于执行针对所述开发人员的提醒操作;所述提醒操作用于提醒所述开发人员进行代码修正。
9.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-7中任一项所述的一种代码检查方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的一种代码检查方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111038241.1A CN113672517A (zh) | 2021-09-06 | 2021-09-06 | 一种代码检查方法、装置、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111038241.1A CN113672517A (zh) | 2021-09-06 | 2021-09-06 | 一种代码检查方法、装置、电子设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113672517A true CN113672517A (zh) | 2021-11-19 |
Family
ID=78548733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111038241.1A Pending CN113672517A (zh) | 2021-09-06 | 2021-09-06 | 一种代码检查方法、装置、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672517A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114175A (zh) * | 2022-08-30 | 2022-09-27 | 平安银行股份有限公司 | 一种前端项目规范化检测方法及装置 |
CN115422433A (zh) * | 2022-11-03 | 2022-12-02 | 平安银行股份有限公司 | 页面查询方法、页面查询装置以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528427A (zh) * | 2016-11-24 | 2017-03-22 | 上海携程商务有限公司 | 代码质量检查方法和*** |
CN107168872A (zh) * | 2017-05-11 | 2017-09-15 | 网易(杭州)网络有限公司 | 代码检查的方法、装置、存储介质和处理器 |
CN107678957A (zh) * | 2017-09-25 | 2018-02-09 | 中国银行股份有限公司 | 一种网银代码自动化检查方法及装置 |
CN109359028A (zh) * | 2018-08-22 | 2019-02-19 | 平安科技(深圳)有限公司 | 代码质量监控方法、装置、计算机设备及存储介质 |
CN109871313A (zh) * | 2018-12-30 | 2019-06-11 | 贝壳技术有限公司 | 基于特定时间的代码检查方法及装置 |
-
2021
- 2021-09-06 CN CN202111038241.1A patent/CN113672517A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528427A (zh) * | 2016-11-24 | 2017-03-22 | 上海携程商务有限公司 | 代码质量检查方法和*** |
CN107168872A (zh) * | 2017-05-11 | 2017-09-15 | 网易(杭州)网络有限公司 | 代码检查的方法、装置、存储介质和处理器 |
CN107678957A (zh) * | 2017-09-25 | 2018-02-09 | 中国银行股份有限公司 | 一种网银代码自动化检查方法及装置 |
CN109359028A (zh) * | 2018-08-22 | 2019-02-19 | 平安科技(深圳)有限公司 | 代码质量监控方法、装置、计算机设备及存储介质 |
CN109871313A (zh) * | 2018-12-30 | 2019-06-11 | 贝壳技术有限公司 | 基于特定时间的代码检查方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114175A (zh) * | 2022-08-30 | 2022-09-27 | 平安银行股份有限公司 | 一种前端项目规范化检测方法及装置 |
CN115422433A (zh) * | 2022-11-03 | 2022-12-02 | 平安银行股份有限公司 | 页面查询方法、页面查询装置以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107622014B (zh) | 测试报告生成方法、装置、可读存储介质和计算机设备 | |
Maldonado et al. | Detecting and quantifying different types of self-admitted technical debt | |
US9575752B2 (en) | Inferring a defect's cause in updated source code | |
US7757125B2 (en) | Defect resolution methodology and data defects quality/risk metric model extension | |
Rosa et al. | Evaluating szz implementations through a developer-informed oracle | |
CN113672517A (zh) | 一种代码检查方法、装置、电子设备和介质 | |
Bigonha et al. | The usefulness of software metric thresholds for detection of bad smells and fault prediction | |
Wen et al. | Blimp tracer: Integrating build impact analysis with code review | |
CN112148614B (zh) | 回归测试方法及装置 | |
KR102269286B1 (ko) | 어노테이션 자동 진단 시스템 | |
CN108776643A (zh) | 一种基于版本控制流程的目标代码合并控制方法及*** | |
Yang et al. | Vuldigger: A just-in-time and cost-aware tool for digging vulnerability-contributing changes | |
CN112131116A (zh) | 一种嵌入式软件自动化回归测试方法 | |
Kashiwa et al. | An empirical study on self-admitted technical debt in modern code review | |
JP2020102209A (ja) | ソフトウェアプログラム不良位置の識別 | |
CN115269444A (zh) | 代码静态检测方法、装置及服务器 | |
Petrulio et al. | SZZ in the time of pull requests | |
Sosnowski et al. | Analysing problem handling schemes in software projects | |
Rio et al. | PHP code smells in web apps: Evolution, survival and anomalies | |
Dhanalaxmi et al. | A fault prediction approach based on the probabilistic model for improvising software inspection | |
Aktaş et al. | A learning-based bug predicition method for object-oriented systems | |
CN115629956A (zh) | 一种基于接口自动化测试的软件缺陷管理方法及*** | |
Ware et al. | The application of product measures in directing software maintenance activity | |
CN112748950B (zh) | 一种软件代码审查方法及装置 | |
Yan et al. | Revisiting the correlation between alerts and software defects: A case study on myfaces, camel, and cxf |
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 |