CN109002295B - 一种静态代码扫描方法、系统、服务器及存储介质 - Google Patents
一种静态代码扫描方法、系统、服务器及存储介质 Download PDFInfo
- Publication number
- CN109002295B CN109002295B CN201811219252.8A CN201811219252A CN109002295B CN 109002295 B CN109002295 B CN 109002295B CN 201811219252 A CN201811219252 A CN 201811219252A CN 109002295 B CN109002295 B CN 109002295B
- Authority
- CN
- China
- Prior art keywords
- branch
- code
- scanning
- result
- latest
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000003068 static effect Effects 0.000 title claims abstract description 27
- 230000008859 change Effects 0.000 claims abstract description 38
- 238000012544 monitoring process Methods 0.000 claims abstract description 13
- 230000003213 activating effect Effects 0.000 claims abstract description 8
- 238000004590 computer program Methods 0.000 claims description 12
- 230000004913 activation Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 9
- 238000007726 management method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/43—Checking; Contextual analysis
-
- 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
- G06F8/658—Incremental updates; Differential updates
Abstract
本发明公开了一种静态代码扫描方法、系统、服务器及存储介质,应用于代码管理领域。本发明提供的方法包括:获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab数据库,并标识所述分支;激活所述分支的监控组件;定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;当标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器。本发明不仅可以有效避免扫描全部代码的资源耗费,且能完整扫描增量代码的规则配置,并实现代码扫描流程的全自动化。
Description
技术领域
本发明涉及代码管理领域,尤其涉及一种静态代码扫描方法、系统、服务器及存储介质。
背景技术
随着计算机技术的快速发展,对应的应用开发技术也日趋成熟。通常在应用程序开发过程中,会涉及代码由不同分支来开发,并对代码版本进行管理。通过代码的版本管理多是通过一些扫描工具实现,这些工具大同小异,侧重点会各有不同。
目前,常用的代码版本管理会扫描所有分支中代码,这种方式扫描时间较长,而最新的改进方案中,会分别对原始代码和增量代码进行扫描,这种方式可以有效提高代码扫描效率,但这样难以得到最新提交代码的一些规则,扫描结果不完整。
发明内容
本发明实施例提供了一种静态代码扫描方法、系统、服务器及存储介质,能够高效完整扫描发生变更的分支的全量静态代码。
结合本发明实施例的第一方面,提供了一种静态代码扫描方法,包括:
获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab数据库,并标识所述分支;
激活所述分支的监控组件;
定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;
当当前每个已激活分支的标识与最新提交分支的标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;
比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器。
结合本发明实施例的第二方面,提供了一种静态代码扫描的系统,包括:
入库模块:用于获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab数据库,并标识所述分支;
激活模块:用于激活所述分支的监控组件;
判断模块:用于定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;
扫描模块:用于当当前每个已激活分支的标识与最新提交分支的标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;
上传模块:用于比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器。
结合本发明实施例的第三方面,提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请第一方面提供的方法的步骤。
结合本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请第一方面提供的方法的步骤。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本申请第一方面提供的所述方法的步骤。
本发明实施例中,通过监控所有已入库分支,定时判定新提交分支发生变更后,全量扫描该分支中静态代码,并根据增量代码改动点,确定有效扫描结果,可以有效减少全扫描部代码耗费的资源,而且基于变更分支的全量扫描,使得能完整扫描规则配置。同时,定时触发变更分支的扫描,可以实现代码扫描流程的全自动化,无需人工介入,大大提高扫描效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的静态代码扫描方法的流程示意图;
图2为本发明实施例二提供的静态代码扫描方法的另一流程示意图;
图3为本发明实施例三提供的步骤S105的具体实现流程示意图;
图4为本发明实施例四提供的静态代码扫描的系统的结构示意图;
图5为本发明实施例五提供的服务器的结构示意图。
具体实施方式
本发明实施例提供了一种静态代码扫描方法、系统、服务器及存储介质,用于提升扫描代码效率,有效定位代码问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
请参阅图1,本发明实施例提供的静态代码扫描方法的实现流程图,包括以下步骤:
S101、获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab数据库,并标识所述分支;
所述gitlab是一种基于网络的git仓库管理工具。使用git作为代码管理工具,并可在此基础上搭建web服务。通过git命令可以创建分支。
通过获取所述gitlab数据库中所有已经存在的分支,比对创建的新分支是否已经存在,不存在时,设定新分支的标识,并存入数据库。
优选的,每当所述分支中代码发生改动时,所述分支的标识也会发生改变。
S102、激活所述分支的监控组件;
所述监控组件一种代码扫描监控器,当分支中有新代码提交,就会触发静态代码扫描。
每个新存入的分支都默认为未激活状态,即不会监控分支代码。当激活所述分支的监控组件后,在所述分支有代码提交时就会自动监控并触发扫描。
S103、定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;
预设一定时间间隔,如2分钟,获取数据库中所有已激活分支,判断这些分支在当前时刻是否为最新提交分支。所有最新提交分支即已存在于gitlab数据库,并通过gitlabAPI获取的远程提交的分支。
分支代码若发生变更,则每次提交时,都会生成一个新的分支标识,该分支标识用于唯一标识当前存在的分支。通过分支标识,就可以确定分支中代码是否发生变更。
在本发明实施例中,定时远程获取新提交分支,根据判断结果,触发新提交分支的扫描,可以实现代码扫描及管理的自动化,方便高效。
S104、当当前每个已激活分支的标识与最新提交分支的标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;
比较确定gitlab数据库中不存在新提交分支的标识,则用新提交分支覆盖数据库中对应的分支。具体的,根据新提交分支标识确定新提交分支是否发生代码变更,若变更,则根据分支名称,用新提交分支覆盖旧的分支。
所述Jenkins用于持续的软件版本发布或测试,并监控外部调用执行的工作,通过所述Jenkins的API,可以获取到新提交分支及其代码,在Jenkins上配置扫描任务,即可进行分支代码的全量扫描。
可选的,调用代码扫描工具,并将扫描结果存储到json文件中。所述代码扫描工具即常用的一些外部静态代码扫描工具,如Android Lint、FindBugs、360火线等,调用这些扫描工具,并配置扫描规则即可进行代码扫描。在所述扫描结果中包含提交后代码的全量扫描结果。
S105、比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器。
通过调用外部的扫描工具,例如360火线扫描,可以查找分支代码中存在的问题,所述扫描工具获得的扫描结果会被存储到json文件。
进一步的,根据所述扫描结果和分支代码的改动点,通过对应文件即行数的比对。可以筛选获得新增代码对应扫描结果中的有效结果。
可选的,获取所述最新提交分支初次激活后提交的代码与当前最新提交代码之间的代码变更位置;获取所述代码变更位置对应文件名及变更的行数;根据所述代码变更位置对应文件名及变更的行数,比对所述最新提交分支的扫描结果,获取增量有效结果。
优选的,根据所述增量有效效果,查找增量有效结果对应的指定文件及指定行数,进而获取指定文件及指定行数对应的提交时间、责任人和代码上下文。
根据代码增量扫描结果,以及对应问题的记录信息,可以快速定位到对应的负责人及问题所在,通过方便根据增量代码统计数据,进行分析展示。
上述步骤,通过确定变更的分支,对该分支全量扫描,再筛选有效结果,基于新提交分支的全量扫描可以对新提交代码进行完整的规则扫描,而且可以不用对所有分支进行扫描,保证扫描效率,减少资源消耗。
实施例二:
在图1的基础上,图2示出了静态代码扫描方法的另一流程示意图,详述如下:
通过gitlab创建的每个新分支默认为未激活状态,当切换到激活状态后,该分支内有新提交代码就会被监控到。
在S202中所述最新提交分支,是在开发人员提交分支后,当前时刻被远程获取到的分支。
在一定时间间隔内,代码管理平台会获取最新提交的分支,以及当前gitlab数据库中存在的已激活分支。所述最新提交分支可以通过gitlab API远程获取,一旦分支进行提交,就可以被定时扫描任务捕获,进行判断。
在本发明实施例中,可以通过开发的移动测试平台定时设定获取数据库所有分支,并对新提交分支判断,进而触发扫描,就可以实现全自动的代码扫描,减少人力成本消耗。
当所述最新提交分支中存在代码变更,该分支的标识会发生改变。为所有入库的分支创建基始标识,每当分支中代码发生变更,并提交分支,分支标识便会发生改变,根据分支标识就可以判断分支代码是否发生变更,进而判定是否进行扫描。
若已激活分支与最新提交分支标识不一致,最新提交分支标识会覆盖对应旧分支的标识,具体可以根据分支的名称判定对应的分支。
在判定最新提交分支发生代码变更后,S204中会调用Jenkins的API获取该最新提交分支的参数,获取但该分支就可以通过外部扫描工具,对该分支进行扫描。
实施例三:
结合图1,图3示出了步骤S105的具体实现流程示意图,具体的:
在步骤S104中,调用外部扫描工具扫描最新提交分支,对新提交分支全量扫描后,可以得到对应的扫描结果。以360火线扫描为例,对新提交分支中代码扫描后,将扫描结果存储到json文件中。
得到的json文件是全量扫描结果,还需要根据新提交分支中代码增量更新部分进行筛选。
在最新提交分支的代码改动位置,可以通过与初始提交分支或上一次提交的分支进行比对,通过与初始提交分支比对,可以获取当前最新提交分支的所有改动点,与上一次提交的分支比对,则S1054中可以获知当前提交分支中的改动点。
根据代码改动发行的文件名及行数,可以和扫描结果中对应的文件名和行数一一比对。
当代码改动位置与扫描结果中存在问题的位置一致时,即可以确定当前改动位置对应的扫描结果为增量有效结果。
可选的,通过git的API获取diff代码。
优选的,根据所述增量有效结果,解析获取对应的问题负责人、代码上下文以及代码提交时间。
服务器接收到增量有效结果,可以在对应的代码管理测试平台进行展示。还可以对增量有效结果进行分析,通过问题增长趋势,将各个问题反映到对应的负责人。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例四:
上面主要描述了一种静态代码扫描方法,下面将对一种静态代码扫描的系统进行详细描述。
图4示出了本发明实施例提供的静态代码扫描系统的结构示意图。
入库模块410:用于获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab数据库,并标识所述分支;
可选的,所述判定所述分支为新创建的分支具体为:
查找所述gitlab数据库是否存在与所述分支名称相同的分支。
激活模块420:用于激活所述分支的监控组件;
新入库分支默认为未激活状态,即不会被系统监控组件监听分支代码的更改。在分支管理平台中,可以触发对所有分支的监控管理。
判断模块430:用于定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;
扫描模块440:用于当当前每个已激活分支的标识与最新提交分支的标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;
可选的,所述扫描所述最新提交分支的全量代码还包括:
调用代码扫描工具,并将扫描结果存储到json文件中。
上传模块450:用于比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器。
可选的,所述上传模块450具体包括:
获取一单元:获取所述最新提交分支初次激活后提交的代码与当前最新提交代码之间的代码变更位置;
获取二单元:获取所述代码变更位置对应文件名及变更的行数;
比对单元:根据所述代码变更位置对应文件名及变更的行数,比对所述最新提交分支的扫描结果,获取增量有效结果。
可选的,所述获取增量有效结果还包括:
解析所述增量有效结果,获取问题代码提交时间、负责人和代码上下文。
实施例五:
图5是本发明一实施例提供的静态代码扫描的服务器结构的示意图。所述服务器,为提供计算服务的设备,通常指具有较高计算能力,通过网络提供给多个用户使用的计算机。如图5所示,该实施例的服务器5包括:存储器510、处理器520以及系统总线530,所述存储器510包括存储其上的可运行的程序5101,本领域技术人员可以理解,图5中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图5对服务器的各个构成部件进行具体的介绍:
存储器510可用于存储软件程序以及模块,处理器520通过运行存储在存储器510的软件程序以及模块,从而执行服务器的各种功能应用以及数据处理。存储器510可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器510可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在存储器510上包含网络请求方法的可运行程序5101,所述可运行程序5101可以被分割成一个或多个模块/单元,所述一个或多个模块/单元被存储在所述存储器510中,并由处理器520执行,以扫描增量代码,所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序5101在所述服务器5中的执行过程。例如,所述计算机程序5101可以被分割为模块、关联模块、存储模块及同步模块。
处理器520是服务器的控制中心,利用各种接口和线路连接整个服务器设备的各个部分,通过运行或执行存储在存储器510内的软件程序和/或模块,以及调用存储在存储器510内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器520可包括一个或多个处理单元;优选的,处理器520可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器520中。
系统总线530是用来连接计算机内部各功能部件,可以传送数据信息、地址信息、控制信息,其种类可以是例如PCI总线、ISA总线、VESA总线等。处理器520的指令通过总线传递至存储器510,存储器510反馈数据给处理器520,系统总线530负责处理器520与存储器510之间的数据、指令交互。当然系统总线530还可以接入其他设备,例如网络接口、显示设备等。
所述服务器应至少包括网卡、输出设备等,其他构成部件在此不再赘述。
在本发明实施例中,该服务器所包括的处理器520执行的可运行程序具体为:
一种静态代码扫描方法,包括:
获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab数据库,并标识所述分支;
激活所述分支的监控组件;
定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;
当当前每个已激活分支的标识与最新提交分支的标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;
比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器。
进一步的,所述判定所述分支为新创建的分支具体为:
查找所述gitlab数据库是否存在与所述分支名称相同的分支。
进一步的,所述扫描所述最新提交分支的全量代码还包括:
调用代码扫描工具,并将扫描结果存储到json文件中。
进一步的,所述比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果具体为:
获取所述最新提交分支初次激活后提交的代码与当前最新提交代码之间的代码变更位置;
获取所述代码变更位置对应文件名及变更的行数;
根据所述代码变更位置对应文件名及变更的行数,比对所述最新提交分支的扫描结果,获取增量有效结果。
进一步的,所述获取增量有效结果还包括:
解析所述增量有效结果,获取问题代码提交时间、负责人和代码上下文。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。、
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种静态代码扫描方法,其特征在于,包括:
获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab
数据库,并标识所述分支;
激活所述分支的监控组件;
定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;
当当前每个已激活分支的标识与最新提交分支的标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;
比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器,当代码改动位置与扫描结果中存在问题的位置一致时,即可以确定当前改动位置对应的扫描结果为增量有效结果。
2.根据权利要求1所述的方法,其特征在于,所述判定所述分支为新创建的分支具体为:
查找所述gitlab数据库是否存在与所述分支名称相同的分支。
3.根据权利要求1所述的方法,其特征在于,所述扫描所述最新提交分支的全量代码还包括:
调用代码扫描工具,并将扫描结果存储到json文件中。
4.根据权利要求1所述的方法,其特征在于,所述比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果具体为:
获取所述最新提交分支初次激活后提交的代码与当前最新提交代码之间的代码变更位置;
获取所述代码变更位置对应文件名及变更的行数;
根据所述代码变更位置对应文件名及变更的行数,比对所述最新提交分支的扫描结果,获取增量有效结果。
5.根据权利要求1或4所述的方法,其特征在于,所述获取增量有效结果还包括:
解析所述增量有效结果,获取问题代码提交时间、负责人和代码上下文。
6.一种静态代码扫描系统,其特征在于,所包括:
入库模块:用于获取通过gitlab创建的分支,判定所述分支为新创建的分支后,存入gitlab数据库,并标识所述分支;
激活模块:用于激活所述分支的监控组件;
判断模块:用于定时获取所有已激活分支,并判断当前每个已激活分支的标识与最新提交分支的标识是否相同;
扫描模块:用于当当前每个已激活分支的标识与最新提交分支的标识不一致时,调用Jenkins的API,扫描所述最新提交分支的全量代码;
上传模块:用于比对所述最新提交分支的扫描结果和所述最新提交分支的代码变更位置,获取增量有效结果,并将所述增量有效结果传送至服务器,当代码改动位置与扫描结果中存在问题的位置一致时,即可以确定当前改动位置对应的扫描结果为增量有效结果。
7.根据权利要求6所述的系统,其特征在于,所述判定所述分支为新创建的分支具体为:
查找所述gitlab数据库是否存在与所述分支名称相同的分支。
8.根据权利要求6所述的系统,其特征在于,所述扫描所述最新提交分支的全量代码还包括:
调用代码扫描工具,并将扫描结果存储到json文件中。
9.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的静态代码扫描方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述静态代码扫描方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811219252.8A CN109002295B (zh) | 2018-10-19 | 2018-10-19 | 一种静态代码扫描方法、系统、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811219252.8A CN109002295B (zh) | 2018-10-19 | 2018-10-19 | 一种静态代码扫描方法、系统、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109002295A CN109002295A (zh) | 2018-12-14 |
CN109002295B true CN109002295B (zh) | 2022-01-04 |
Family
ID=64590184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811219252.8A Active CN109002295B (zh) | 2018-10-19 | 2018-10-19 | 一种静态代码扫描方法、系统、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109002295B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704309A (zh) * | 2019-09-12 | 2020-01-17 | 上海麦克风文化传媒有限公司 | 一种自动化代码质量检查方法及系统 |
CN110674035A (zh) * | 2019-09-12 | 2020-01-10 | 上海麦克风文化传媒有限公司 | 一种自动化代码扫描方法、系统、装置及存储介质 |
CN112306516A (zh) * | 2020-02-24 | 2021-02-02 | 北京字节跳动网络技术有限公司 | 用于更新代码的方法和装置 |
CN112947907B (zh) * | 2020-03-23 | 2024-03-12 | 深圳市明源云科技有限公司 | 一种创建代码分支的方法 |
CN111639019B (zh) * | 2020-04-24 | 2023-08-25 | 北京五八信息技术有限公司 | 代码测试方法、装置及可读存储介质 |
CN112925552B (zh) * | 2021-02-26 | 2023-07-28 | 北京百度网讯科技有限公司 | 代码处理方法、装置、设备及存储介质 |
CN113742736A (zh) * | 2021-09-22 | 2021-12-03 | 中国银行股份有限公司 | 一种增量代码安全扫描方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445476A (zh) * | 2015-08-11 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 一种代码变更信息确定方法、装置及电子设备 |
CN108319854A (zh) * | 2017-12-29 | 2018-07-24 | 上海瑞家信息技术有限公司 | 一种增量代码静态扫描方法、设备及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10332073B2 (en) * | 2016-09-08 | 2019-06-25 | International Business Machines Corporation | Agile team structure and processes recommendation |
US10339311B2 (en) * | 2017-02-17 | 2019-07-02 | Sap Se | Anomalous commit detection |
-
2018
- 2018-10-19 CN CN201811219252.8A patent/CN109002295B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445476A (zh) * | 2015-08-11 | 2017-02-22 | 腾讯科技(深圳)有限公司 | 一种代码变更信息确定方法、装置及电子设备 |
CN108319854A (zh) * | 2017-12-29 | 2018-07-24 | 上海瑞家信息技术有限公司 | 一种增量代码静态扫描方法、设备及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
Git做代码增量发布的重要用法;x3d;《https://www.cnblogs.com/x3d/p/7551359.html》;20170919;全文 * |
jenkins+git+cppcheck静态代码检查应用;Qtest之道;《http://www.voidcn.com/article/p-pjybfgwq-qr.html》;20160707;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109002295A (zh) | 2018-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109002295B (zh) | 一种静态代码扫描方法、系统、服务器及存储介质 | |
US10496532B1 (en) | Automatically reconfiguring a performance test environment | |
CN111125444A (zh) | 大数据任务调度管理方法、装置、设备及存储介质 | |
CN106970880A (zh) | 一种分布式自动化软件测试方法及系统 | |
CN109144701A (zh) | 一种任务流管理方法、装置、设备及系统 | |
CN108255735B (zh) | 关联环境测试方法、电子装置及计算机可读存储介质 | |
CN109614325B (zh) | 一种确定控件属性的方法及装置、电子设备和存储介质 | |
EP3413149B1 (en) | Field device commissioning system and field device commissioning method | |
CN111782452A (zh) | 接口对比测试的方法、系统、设备和介质 | |
CN115292026A (zh) | 容器集群的管理方法、装置、设备及计算机可读存储介质 | |
CN110109684B (zh) | 区块链节点管理代理服务安装方法、电子装置及存储介质 | |
CN111552521A (zh) | 应用数据上报方法、装置、服务器及存储介质 | |
CN113190286B (zh) | 动态远程加载功能插件的mes系统、加载方法、终端及介质 | |
CN110138833B (zh) | APP中React Native模块的快速调试方法、装置、介质和设备 | |
CN112306471A (zh) | 一种任务的调度方法和装置 | |
CN112379944A (zh) | 一种资源文件的加载方法、装置、存储介质及终端设备 | |
CN111984660A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN114564856A (zh) | 一种基于fmea的数据共享方法及电子设备 | |
CN112367205B (zh) | 一种对http调度请求的处理方法及调度系统 | |
CN112905306A (zh) | 多集群容器管理方法、装置、电子设备和存储介质 | |
CN114064503A (zh) | 一种ui自动化测试方法、装置、电子设备及存储介质 | |
CN112667463A (zh) | 一种应用系统基线状态监控方法及装置 | |
CN109150993B (zh) | 一种获取网络请求切面的方法、终端装置及存储介质 | |
CN113282308A (zh) | 一种镜像构建方法、装置、存储介质及电子装置 | |
CN105302604A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240102 Address after: 310000, Building 4, 3rd Floor, Building C2, No. 590 Changhe Road, Changhe Street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Hangzhou Tiansoft Technology Co.,Ltd. Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |