CN112558982B - 代码检测方法、装置及计算机设备 - Google Patents
代码检测方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN112558982B CN112558982B CN202011542708.1A CN202011542708A CN112558982B CN 112558982 B CN112558982 B CN 112558982B CN 202011542708 A CN202011542708 A CN 202011542708A CN 112558982 B CN112558982 B CN 112558982B
- Authority
- CN
- China
- Prior art keywords
- code
- detection
- code detection
- plug
- detected
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 262
- 238000013515 script Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 9
- 238000011161 development Methods 0.000 abstract description 13
- 230000008569 process Effects 0.000 description 13
- 230000008859 change Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000010354 integration Effects 0.000 description 8
- 238000010276 construction Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000000969 carrier Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例涉及代码开发技术领域,提供了一种代码检测方法,包括:在代码版本管理工具中配置勾子脚本及代码检测插件;当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。本发明实施例可以及时并自动对待检测代码进行检测。
Description
技术领域
本发明实施例涉及软件开发技术领域,尤其涉及一种代码检测方法、装置及计算机设备。
背景技术
软件开发需要经历漫长的开发过程,且在开发过程中,开发者需要频繁地对代码进行修改。为了保证修改后代码的可用性,并方便后续的代码维护,修改后的代码需要经过代码检测。目前代码遗漏检测基本全凭人工检测,没有工具自动检测。人工检测存在检测不实时的问题。假设开发的需求代码出现有代码遗漏时,且在整个需求迭代流程中人工检测被安排得很靠后,则意味着检测出代码遗漏的时间点就越晚,其所造成浪费的成本越大。如系统测试通过之后才检查出,那么测试人员极有可能面临重测成本,如果再往后,极有可能出现发布事故或生产事故,不可避免带来业务价值流失。
同时,软件开发过程中代码可能需要进行大量修改,人工检测过程不仅容易产生遗漏且效率较低。
发明内容
有鉴于此,本发明实施例的目的是提供一种代码检测方法、装置、计算机设备及计算机可读存储介质,用于克服现有的人工检测过程容易产生遗漏且效率较低的问题。
为实现上述目的,本发明实施例提供了一种代码检测方法,包括:
在代码版本管理工具中配置勾子脚本及代码检测插件;
当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及
利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。
可选地,所述代码检测触发事件为代码提交操作,所述待检测代码为所述代码提交操作提交的目标代码,所述利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果的步骤,包括:
利用所述代码检测插件检测所述目标代码的代码分支中最后一个代码是否包含commit-id;
若所述目标代码的代码分支中最后一个代码包含commit-id,则生成代码检测正常的检测结果;或
若所述目标代码的代码分支中最后一个代码不包含commit-id,则生成代码遗漏的检测结果。
可选地,所述生成代码检测正常的检测结果的步骤之后,还包括:
显示用于表示允许所述目标代码的提交操作的快捷图标;
所述生成代码遗漏的检测结果的步骤之后,还包括:
显示用于表示中断所述目标代码的提交操作的快捷图标。
可选地,所述勾子脚本为GitHooks,所述待检测代码由所述代码版本管理工具下发给所述代码检测插件。
可选地,所述勾子脚本为Jenkins,所述代码检测方法还包括:
在所述Jenkins中配置每间隔预设时间生成一次所述代码检测触发事件。
可选地,所述Jenkins存储有所述待检测代码的存储地址,所述待检测代码由所述Jenkins下发给所述代码检测插件。
可选地,所述代码检测方法还包括:
汇总多次所述代码检测触发事件的代码检测结果,并生成代码检测报告;及
将所述代码检测报告通过邮件的方式发送至预先关联的邮件中。
为实现上述目的,本发明实施例还提供了一种代码检测装置,所述代码检测装置包括:
配置模块,用于在代码版本管理工具中配置勾子脚本及代码检测插件;
触发模块,用于在侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及
检测模块,用于利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。
为实现上述目的,本发明实施例还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的代码检测方法的步骤。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的代码检测方法的步骤。
本发明实施例提供的代码检测方法、装置、计算机设备及计算机可读存储介质,通过在代码版本管理工具中配置勾子脚本及代码检测插件;当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。本发明实施例通过预先在代码版本管理工具中配置勾子脚本及代码检测插件,如此当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件,就可以利用所述代码检测插件对待检测代码进行检测,可以实现及时进行代码检测且不容易发生代码遗漏。
附图说明
图1为本发明代码检测方法的一实施方式的步骤流程示意图。
图2为本发明一实施方式的代码检测装置的程序模块示意图。
图3为本发明一实施方式的计算机设备的硬件结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合附图与具体实施例进一步阐述本发明的优点。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本发明的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本发明及区别每一步骤,因此不能理解为对本发明的限制。
参阅图1,示出了本发明实施例一之代码检测方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以代码检测装置(下文以“检测装置”简称)为执行主体进行示例性描述,所述检测装置可以应用于计算机设备中,所述计算机设备可以是移动电话、平板个人计算机(tablet personal computer)、膝上型计算机(laptop computer)、服务器等具有数据传输功能的设备。具体如下:
步骤S10,在代码版本管理工具中配置勾子脚本及代码检测插件。
在一实施方式中,所述代码版本管理工具可以是Git版本管理工具,或者其他的版本管理工具,所述代码版本管理工具具有在特定事件发生之前或之后执行特定脚本代码的功能。所述代码版本管理工具可以获取版本日志,所述版本日志中包含项目中文件的文件变更信息,对版本日志进行分析,生成项目变更信息,项目变更信息用于指示项目的变更情况。所述代码版本管理工具还可以根据项目变更信息配置代码检测任务,向所述代码检测插件下发代码检测任务,使得所述代码检测插件可以针对变更项目的代码即待检测代码进行检测。软件项目开发过程中,各个版本的项目文件可以存储在版本控制服务器中。
在一实施方式中,所述勾子脚本可以为GitHooks或Jenkins(基于Java开发的一种持续集成工具)。所述GitHooks可以是那些可以在代码版本管理工具中执行特定事件(如commit、push、receive等)后触发运行的脚本。所述Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时所述Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性,此外还支持集成上百种插件,这些插件配置下即可使用,是非常方便的一个构建平台。
在一实施方式中,所述代码检测插件可以以插件的形式存在于代码版本管理工具中,通过所述GitHooks或所述Jenkins来配置所述代码检测插件的运行。当需要对代码进行检测时,可以在该代码版本管理工具中安装所述代码检测插件。可以将所述代码检测插件存放至代码所在的项目结构中。不同编程语言对应不同的代码运行环境,所述代码检测插件可以支持多种编程语言,用户可以在代码版本管理工具中根据需要自由选择。所述代码检测插件可以预先集成了不同编程语言的代码的运行载体,如NodeJS语言、Shell语言等,使得多种编程语言的目标代码可以在代码检测插件上直接运行。
步骤S11,当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件。
在一实施方式中,所述代码检测触发事件可以是诸如代码提交操作,或接收到代码检测指令。比如,当侦测到开发者的代码提交操作时,触发所述勾子脚本启动所述代码检测插件,以实现对待检测代码进行检测。
在一实施方式中,当所述勾子脚本为所述GitHooks时,所述代码检测触发事件为代码提交操作。当侦测到开发者的代码提交操作时,触发所述GitHooks并启动所述代码检测插件,以实现对待检测代码进行检测。
在一实施方式中,当所述勾子脚本为所述Jenkins时,可以在所述Jenkins中配置每间隔预设时间生成一次所述代码检测触发事件,即所述代码检测触发事件由所述Jenkins以隔预设时间生成的触发事件。所述预设间隔可以根据用户的需求在Jenkins工具进行配置,实现定时检测代码功能。
步骤S12,利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。
在一实施方式中,可以利用所述代码检测插件检测所述待检测代码的代码分支中最后一个代码是否包含commit-id,以确定待检测代码是否有遗漏。所述commit-id中的id指的是哈希值,所述哈希值是根据文件的内容的数据通过逻辑运算得到的数值,不同的文件(即使是相同的文件名)得到的哈希值也是不同的,所以哈希值可以作为识别每一个文件的身份证。
在一实施方式中,当所述勾子脚本为GitHooks时,所述待检测代码为所述代码提交操作提交的目标代码,所述待检测代码可以由所述代码版本管理工具下发给所述代码检测插件。在获取所述目标代码后,所述代码检测插件可以检测所述目标代码的代码分支中最后一个代码是否包含commit-id,若所述目标代码的代码分支中最后一个代码包含commit-id,表明所述目标代码无遗漏,则生成代码检测正常的检测结果并显示用于表示允许所述目标代码的提交操作的快捷图标;若所述目标代码的代码分支中最后一个代码不包含commit-id,表明所述目标代码有遗漏,则生成代码遗漏的检测结果并显示用于表示中断所述目标代码的提交操作的快捷图标。比如显示“代码有遗漏,请确认并重新提交”的快捷图标,以提醒开发者代码有遗漏,方便开发者及时处理。
在一实施方式中,当所述勾子脚本为Jenkins时,所述Jenkins存储有所述待检测代码的存储地址,所述待检测代码可以由所述Jenkins下发给所述代码检测插件。可以通过所述Jenkins以隔预设时间生成一次所述代码检测触发事件并触发启动所述代码检测插件进行代码检测。
在一实施方式中,可以将多个待检测代码的存储地址添加至所述Jenkins,使得所述Jenkins可以根据该存储地址来获取待检测代码,然后启动所述代码检测插件对待检测代码进行检测,并生成代码检测结果,保证了代码检测的实时性。可以理解,当多个代码开发项目的代码的存储地址被添加至所述Jenkins时,可以通过所述Jenkins以隔预设时间启动所述代码检测插件对多个代码开发项目的多个代码分支进行检测,并生成多个代码检测结果。开发者也可以查自行看Jenkins的console.log的日志,来获取多个代码开发项目的代码检测结果。
在一实施方式中,所述代码检测结果可以包括仓库地址(存储代码开发项目代码的仓库)、分支名称及代码遗漏状态。所述代码检测结果中还可以携带有发生错误的代码的内容及数量的告警信息。所述代码检测结果可以以邮件的方式被推送至预先关联的邮件中,以及时告知对应开发者,避免了开发者自行查阅检测结果的过程,进一步提高了开发者的工作效率。比如,可以在Jenkins中预先配置关联的邮件,然后通过Jenkins将代码检测结果以邮件的方式推送至预先关联的邮件。
在一实施方式中,可以定时汇总多次所述代码检测触发事件的代码检测结果,并生成代码检测报告,然后将所述代码检测报告通过邮件的方式发送至预先关联的邮件中。
本发明实施例通过在代码版本管理工具中配置勾子脚本及代码检测插件;当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。本发明实施例通过预先在代码版本管理工具中配置勾子脚本及代码检测插件,如此当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件,就可以利用所述代码检测插件对待检测代码进行检测,使得及时进行代码检测且不容易发生代码遗漏。进一步地,汇总多次所述代码检测触发事件的代码检测结果,并生成代码检测报告;及将所述代码检测报告通过邮件的方式发送至预先关联的邮件中,可以及时告知对应开发者,避免了开发者自行查阅检测结果的过程,进一步提高了开发者的工作效率。
请参阅图2,示出了本发明实施例之代码检测装置300(以下简称为“检测装置”300)的程序模块示意图。所述检测装置300可以应用于计算机设备中,所述计算机设备可以是移动电话、平板个人计算机(tablet personal computer)、膝上型计算机(laptopcomputer)、服务器等具有数据传输功能的设备。在本实施例中,所述检测装置300可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述代码检测方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述代码检测方法在存储介质中的执行过程。在本实施例中,所述代码检测装置300包括配置模块301、触发模块302及检测模块303。以下描述将具体介绍本实施例各程序模块的功能:
配置模块301,用于在代码版本管理工具中配置勾子脚本及代码检测插件。
在一实施方式中,所述代码版本管理工具可以是Git版本管理工具,或者其他的版本管理工具,所述代码版本管理工具具有在特定事件发生之前或之后执行特定脚本代码的功能。所述代码版本管理工具可以获取版本日志,所述版本日志中包含项目中文件的文件变更信息,对版本日志进行分析,生成项目变更信息,项目变更信息用于指示项目的变更情况。所述代码版本管理工具还可以根据项目变更信息配置代码检测任务,向所述代码检测插件下发代码检测任务,使得所述代码检测插件可以针对变更项目的代码即待检测代码进行检测。软件项目开发过程中,各个版本的项目文件可以存储在版本控制服务器中。
在一实施方式中,所述勾子脚本可以为GitHooks或Jenkins(基于Java开发的一种持续集成工具)。所述GitHooks可以是那些可以在代码版本管理工具中执行特定事件(如commit、push、receive等)后触发运行的脚本。所述Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时所述Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性,此外还支持集成上百种插件,这些插件配置下即可使用,是非常方便的一个构建平台。
在一实施方式中,所述代码检测插件可以以插件的形式存在于代码版本管理工具中,配置模块301通过所述GitHooks或所述Jenkins来配置所述代码检测插件的运行。当需要对代码进行检测时,配置模块301可以在该代码版本管理工具中安装所述代码检测插件。可以将所述代码检测插件存放至代码所在的项目结构中。不同编程语言对应不同的代码运行环境,所述代码检测插件可以支持多种编程语言,用户可以在代码版本管理工具中根据需要自由选择。所述代码检测插件可以预先集成了不同编程语言的代码的运行载体,如NodeJS语言、Shell语言等,使得多种编程语言的目标代码可以在代码检测插件上直接运行。
触发模块302,用于在侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件。
在一实施方式中,所述代码检测触发事件可以是诸如代码提交操作,或接收到代码检测指令。比如,当侦测到开发者的代码提交操作时,触发所述勾子脚本启动所述代码检测插件,以实现对待检测代码进行检测。
在一实施方式中,当所述勾子脚本为所述GitHooks时,所述代码检测触发事件为代码提交操作。当侦测到开发者的代码提交操作时,触发模块302触发所述GitHooks并启动所述代码检测插件,以实现对待检测代码进行检测。
在一实施方式中,当所述勾子脚本为所述Jenkins时,可以在所述Jenkins中配置每间隔预设时间生成一次所述代码检测触发事件,即所述代码检测触发事件由所述Jenkins以隔预设时间生成的触发事件。所述预设间隔可以根据用户的需求在Jenkins工具进行配置,实现定时检测代码功能。
检测模块303,用于利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。
在一实施方式中,检测模块303可以利用所述代码检测插件检测所述待检测代码的代码分支中最后一个代码是否包含commit-id,以确定待检测代码是否有遗漏。所述commit-id中的id指的是哈希值,所述哈希值是根据文件的内容的数据通过逻辑运算得到的数值,不同的文件(即使是相同的文件名)得到的哈希值也是不同的,所以哈希值可以作为识别每一个文件的身份证。
在一实施方式中,当所述勾子脚本为GitHooks时,所述待检测代码为所述代码提交操作提交的目标代码,所述待检测代码可以由所述代码版本管理工具下发给所述代码检测插件。在获取所述目标代码后,所述代码检测插件可以检测所述目标代码的代码分支中最后一个代码是否包含commit-id,若所述目标代码的代码分支中最后一个代码包含commit-id,表明所述目标代码无遗漏,则生成代码检测正常的检测结果并显示用于表示允许所述目标代码的提交操作的快捷图标;若所述目标代码的代码分支中最后一个代码不包含commit-id,表明所述目标代码有遗漏,则生成代码遗漏的检测结果并显示用于表示中断所述目标代码的提交操作的快捷图标。比如显示“代码有遗漏,请确认并重新提交”的快捷图标,以提醒开发者代码有遗漏,方便开发者及时处理。
在一实施方式中,当所述勾子脚本为Jenkins时,所述Jenkins存储有所述待检测代码的存储地址,所述待检测代码可以由所述Jenkins下发给所述代码检测插件。可以通过所述Jenkins以隔预设时间生成一次所述代码检测触发事件并触发启动所述代码检测插件进行代码检测。
在一实施方式中,可以将多个待检测代码的存储地址添加至所述Jenkins,使得所述Jenkins可以根据该存储地址来获取待检测代码,然后启动所述代码检测插件对待检测代码进行检测,并生成代码检测结果,保证了代码检测的实时性。可以理解,当多个代码开发项目的代码的存储地址被添加至所述Jenkins时,可以通过所述Jenkins以隔预设时间启动所述代码检测插件对多个代码开发项目的多个代码分支进行检测,并生成多个代码检测结果。开发者也可以查自行看Jenkins的console.log的日志,来获取多个代码开发项目的代码检测结果。
在一实施方式中,所述代码检测结果可以包括仓库地址(存储代码开发项目代码的仓库)、分支名称及代码遗漏状态。所述代码检测结果中还可以携带有发生错误的代码的内容及数量的告警信息。所述代码检测结果可以以邮件的方式被推送至预先关联的邮件中,以及时告知对应开发者,避免了开发者自行查阅检测结果的过程,进一步提高了开发者的工作效率。比如,可以在Jenkins中预先配置关联的邮件,然后通过Jenkins将代码检测结果以邮件的方式推送至预先关联的邮件。
在一实施方式中,可以定时汇总多次所述代码检测触发事件的代码检测结果,并生成代码检测报告,然后将所述代码检测报告通过邮件的方式发送至预先关联的邮件中。
本发明实施例通过在代码版本管理工具中配置勾子脚本及代码检测插件;当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果。本发明实施例通过预先在代码版本管理工具中配置勾子脚本及代码检测插件,如此当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件,就可以利用所述代码检测插件对待检测代码进行检测,使得及时进行代码检测且不容易发生代码遗漏。进一步地,汇总多次所述代码检测触发事件的代码检测结果,并生成代码检测报告;及将所述代码检测报告通过邮件的方式发送至预先关联的邮件中,可以及时告知对应开发者,避免了开发者自行查阅检测结果的过程,进一步提高了开发者的工作效率。
参阅图3,是本发明实施例之计算机设备400的硬件架构示意图。在本实施例中,所述计算机设备400是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。如图所示,所述计算机设备400至少包括,但不限于,可通过装置总线相互通信连接存储器401、处理器402、网络接口403。其中:
本实施例中,存储器401至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器401可以是计算机设备400的内部存储单元,例如所述计算机设备400的硬盘或内存。在另一些实施例中,存储器401也可以是计算机设备400的外部存储设备,例如所述计算机设备400上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器401还可以既包括计算机设备400的内部存储单元也包括其外部存储设备。本实施例中,存储器401通常用于存储安装于计算机设备400的操作装置和各类应用软件,例如代码检测装置300的程序代码等。此外,存储器401还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器402在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。所述处理器402通常用于控制计算机设备400的总体操作。本实施例中,处理器402用于运行存储器401中存储的程序代码或者处理数据,例如运行代码检测装置300,以实现上述各个实施例中的代码检测方法。
所述网络接口403可包括无线网络接口或有线网络接口,所述网络接口403通常用于在所述计算机设备400与其他电子装置之间建立通信连接。例如,所述网络接口403用于通过网络将所述计算机设备400与外部终端相连,在所述计算机设备400与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯装置(Global System of Mobile communication,GSM)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图3仅示出了具有部件401-403的计算机设备400,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器401中的所述代码检测装置300还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器401中,并由一个或多个处理器(本实施例为处理器402)所执行,以完成本发明之代码检测方法。
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储代码检测装置300,以被处理器执行时实现本发明之代码检测方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种代码检测方法,其特征在于,包括:
在代码版本管理工具中配置勾子脚本及代码检测插件;
当侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及
利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果;
所述代码检测触发事件为代码提交操作,所述待检测代码为所述代码提交操作提交的目标代码,所述利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果的步骤,包括:
利用所述代码检测插件检测所述目标代码的代码分支中最后一个代码是否包含commit-id;
若所述目标代码的代码分支中最后一个代码包含commit-id,则生成代码检测正常的检测结果;或
若所述目标代码的代码分支中最后一个代码不包含commit-id,则生成代码遗漏的检测结果。
2.如权利要求1所述的代码检测方法,其特征在于,所述生成代码检测正常的检测结果的步骤之后,还包括:
显示用于表示允许所述目标代码的提交操作的快捷图标;
所述生成代码遗漏的检测结果的步骤之后,还包括:
显示用于表示中断所述目标代码的提交操作的快捷图标。
3.如权利要求1所述的代码检测方法,其特征在于,所述勾子脚本为GitHooks,所述待检测代码由所述代码版本管理工具下发给所述代码检测插件。
4.如权利要求1所述的代码检测方法,其特征在于,所述勾子脚本为Jenkins,所述代码检测方法还包括:
在所述Jenkins中配置每间隔预设时间生成一次所述代码检测触发事件。
5.如权利要求4所述的代码检测方法,其特征在于,所述Jenkins存储有所述待检测代码的存储地址,所述待检测代码由所述Jenkins下发给所述代码检测插件。
6.如权利要求4所述的代码检测方法,其特征在于,所述代码检测方法还包括:
汇总多次所述代码检测触发事件的代码检测结果,并生成代码检测报告;及
将所述代码检测报告通过邮件的方式发送至预先关联的邮件中。
7.一种代码检测装置,其特征在于,所述代码检测装置包括:
配置模块,用于在代码版本管理工具中配置勾子脚本及代码检测插件;
触发模块,用于在侦测到代码检测触发事件时,触发所述勾子脚本启动所述代码检测插件;及
检测模块,用于利用所述代码检测插件对待检测代码进行检测,并生成代码检测结果;
所述代码检测触发事件为代码提交操作,所述待检测代码为所述代码提交操作提交的目标代码,所述检测模块还用于:利用所述代码检测插件检测所述目标代码的代码分支中最后一个代码是否包含commit-id;若所述目标代码的代码分支中最后一个代码包含commit-id,则生成代码检测正常的检测结果;或若所述目标代码的代码分支中最后一个代码不包含commit-id,则生成代码遗漏的检测结果。
8.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述的代码检测方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1-6中任一项所述的代码检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011542708.1A CN112558982B (zh) | 2020-12-23 | 2020-12-23 | 代码检测方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011542708.1A CN112558982B (zh) | 2020-12-23 | 2020-12-23 | 代码检测方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112558982A CN112558982A (zh) | 2021-03-26 |
CN112558982B true CN112558982B (zh) | 2024-06-21 |
Family
ID=75031834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011542708.1A Active CN112558982B (zh) | 2020-12-23 | 2020-12-23 | 代码检测方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112558982B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117032834B (zh) * | 2023-09-25 | 2024-01-16 | 广州嘉为科技有限公司 | 一种价值流插件运行方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542769A (zh) * | 2018-10-25 | 2019-03-29 | 武汉精立电子技术有限公司 | 一种持续集成的自动化测试方法 |
CN111142884A (zh) * | 2019-12-12 | 2020-05-12 | 北京达佳互联信息技术有限公司 | 小程序的版本部署方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015112170A1 (en) * | 2014-01-27 | 2015-07-30 | Hewlett-Packard Development Company, L.P. | Continuous integration with reusable context aware jobs |
US10754761B2 (en) * | 2016-11-11 | 2020-08-25 | Atlassian Pty Ltd | Systems and methods for testing source code |
-
2020
- 2020-12-23 CN CN202011542708.1A patent/CN112558982B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542769A (zh) * | 2018-10-25 | 2019-03-29 | 武汉精立电子技术有限公司 | 一种持续集成的自动化测试方法 |
CN111142884A (zh) * | 2019-12-12 | 2020-05-12 | 北京达佳互联信息技术有限公司 | 小程序的版本部署方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112558982A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399132B (zh) | 一种调度测试方法、装置及存储介质 | |
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
US9940225B2 (en) | Automated error checking system for a software application and method therefor | |
CN107193750B (zh) | 一种脚本录制方法和装置 | |
CN108595329B (zh) | 一种应用测试方法、装置及计算机存储介质 | |
US9098375B2 (en) | Automatic management of software patch installation | |
US8954930B2 (en) | System and method for reducing test effort by object risk analysis | |
CN108196878B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
US9170921B2 (en) | Application testing automation | |
CN110457211B (zh) | 脚本性能测试方法、装置和设备及计算机存储介质 | |
CN111475401A (zh) | 一种测试方法及相关设备 | |
CN113448862B (zh) | 软件版本测试方法、装置及计算机设备 | |
CN110647471A (zh) | 接口测试用例生成方法、电子装置及存储介质 | |
CN112650658A (zh) | 应用程序的异常记录和复现方法、装置及存储介质 | |
CN111309602A (zh) | 一种软件测试方法、装置及系统 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN112558982B (zh) | 代码检测方法、装置及计算机设备 | |
CN111367531A (zh) | 代码处理方法及装置 | |
CN113434180A (zh) | 应用的数据处理方法、装置、服务器和存储介质 | |
CN110231921B (zh) | 日志打印方法、装置、设备及计算机可读存储介质 | |
CN111538659A (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
CN112416648A (zh) | 数据校验方法及装置 | |
CN113419949B (zh) | 数据处理的异常检测方法、装置、设备及存储介质 | |
CN111209197B (zh) | 应用程序持续集成测试方法、系统、设备和存储介质 | |
US11301246B2 (en) | Automatically generating continuous integration pipelines |
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 |