CN110716866A - 代码质量扫描方法、装置、计算机设备及存储介质 - Google Patents
代码质量扫描方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110716866A CN110716866A CN201910843704.8A CN201910843704A CN110716866A CN 110716866 A CN110716866 A CN 110716866A CN 201910843704 A CN201910843704 A CN 201910843704A CN 110716866 A CN110716866 A CN 110716866A
- Authority
- CN
- China
- Prior art keywords
- scanning
- code
- end application
- interface
- rule
- 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/3604—Software analysis for verifying properties of programs
-
- 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/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及APP功能测试,具体公开了一种代码质量扫描方法、装置、设备及存储介质,其中方法包括:获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址;根据所述路径地址获取所述前端应用的文件列表;运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数;调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。该方法可以提高前端应用的代码扫描效率以及代码质量标准。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种代码质量扫描方法、装置、计算机设备及存储介质。
背景技术
目前,代码质量扫描作为前端应用的安全解决方案,是指研发人员写好代码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,识别出代码中存在的一些质量问题,比如存在的一些语义缺陷、安全漏洞等等。然而目前,对每个前端应用进行代码扫描,均需要安装代码扫描工具以及制定相应的代码扫描规则,由此导致了大量的重复性工作,浪费了时间和人力,同时降低了代码扫描效率。
发明内容
本申请提供了一种代码质量扫描方法、装置、计算机设备及存储介质,以在。
第一方面,本申请提供了一种代码质量扫描方法,所述方法包括:
获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址;
根据所述路径地址获取所述前端应用的文件列表;
运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数;
调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
第二方面,本申请还提供了一种代码质量扫描装置,所述装置包括:
指令获取模块,用于获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址;
列表获取模块,用于根据所述路径地址获取所述前端应用的文件列表;
脚本运行模块,用于运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数;
调用扫描模块,用于调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的代码质量扫描方法。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的代码质量扫描方法。
本申请公开了一种代码质量扫描方法、装置、计算机设备及存储介质,通过扫描指令获取前端应用的路径地址;根据前端应用的路径地址并获取该前端应用的文件列表;运行预先创建的代码扫描脚本,调用接口扫描对象,根据对象属性参数遍历文件列表中代码文件实现代码质量扫描。该方法可以针对不同的前端应用进行代码扫描,无需针对每个前端应用均安装代码检测工具以及制定相应的代码扫描规则,因此提高了前端应用的代码扫描效率,同时利用统一的代码扫描规则,保证代码质量标准,以便后续维护修改。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的实施例提供的一种代码质量扫描方法的示意流程图;
图2是本申请的实施例提供的另一种代码质量扫描方法的示意流程图;
图3a是本申请的实施例提供的代码质量扫描方法的应用场景示意图;
图3b是本申请的实施例提供的又一种代码质量扫描方法的示意流程图;
图4为本申请的实施例提供的一种代码质量扫描装置的示意性框图;
图5为本申请的实施例提供的另一种代码质量扫描装置的示意性框图;
图6为本申请的实施例提供的一种计算机设备的结构示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本申请的实施例提供了一种代码质量扫描方法、装置、计算机设备及存储介质。其中,该代码质量扫描方法可以应用于服务器中,对开发的各种前端应用的代码文件进行扫描以确定相应的代码质量。其中,该服务器可以为独立的服务器,也可以为服务器集群。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1是本申请的实施例提供的一种代码质量扫描方法的示意流程图。该代码质量扫描方法可以快速确定前端应用的代码质量,比如是否存在语义缺陷以及安全漏洞等问题。
如图1所示,该代码质量扫描方法具体包括步骤S101至步骤S104。
S101、获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址。
具体地,在用户需要对某个前端应用进行代码质量扫描时,即扫描需求需,要提供前端应用的应用标识以及路径地址,所述应用标识可以为应用名称,比如平安好车主,所述路径地址为前端应用的代码文件对应的保存地址,可以为保存在开发该前端应用对应的终端或服务器中对应的地址。
具体地,可以是终端根据用户提供的扫描需求生成扫描指令,将生成的扫描指令发送给服务器;也可以是服务器根据扫描需求生成扫描指令。服务器在获取到扫描指令时,解析所述扫描指令以获取所述扫描指令中的前端应用的路径地址。
S102、根据所述路径地址获取所述前端应用的文件列表。
具体地,服务器根据用户通过扫描指令提供的前端应用的路径地址,获取所述前端应用的文件列表,所述文件列表包括前端应用中所有待扫描的代码文件,以便对所有的待扫描的代码文件中的源代码进行扫描。
S103、运行预设的代码扫描脚本。
其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数。所述代码扫描脚本包括通过引入代码检测工具创建的接口扫描对象以及接口扫描对象对应的对象属性参数。在接收到扫描指令后,服务器启动并运行该代码扫描脚本,由此为前端应用的代码扫描提供了基本的运行服务。
在一个实施例中,在所述运行预设的代码扫描脚本之前,还包括:获取预先创建的代码扫描脚本,在所述代码扫描脚本中添加ESLint代码检测工具;选择所述ESLint代码检测工具中的CLIEngine对象作为接口扫描对象;根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数。
具体地,利用Node.js创建代码扫描脚本,Node.js是运行在服务端的JavaScript,在相对较低的系统资源下也具有较高的性能以及出众的负载能力,适合用作依赖其它IO资源的中间层服务,因此可以利用Node.js开发代码扫描脚本,以便通过运行该代码扫描脚本时为多个前端应用的代码扫描提供的基本的运行服务。
在创建完代码扫描脚本后,在该代码扫描脚本中插入代码检测工具,插入的代码检测工具比如为ESLint,所述ESLint是一个插件化的JavaScript代码检测工具,ESLint代码检查是一种静态分析过程,用于寻找有问题的代码,比如存在语义缺陷或安全漏洞的代码,并不依赖于具体的编码风格。
由于代码扫描脚本是采用Node.js创建的,而ESLint也是使用Node.js编写,因此便于在代码扫描脚本中插入Elint代码扫描工具,同时二者结合可以提供一个快速的运行环境。
其中,根据代码检测工具创建接口扫描对象,是指通过代码检测工具创建一个接口对象,比如引入ESLint的CLIEngine对象作为接口扫描对象。根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数,预先制定的代码扫描规则是统一的扫描规则,具体可以一个公司内部制定的统一扫描规则,也可以是一个大的项目下制定的统一扫描规则。具体地,可以基于CLIEngine对象的executeOnFiles或getFormatter函数,根据获取的代码扫描规则对接口扫描对象进行配置,得到对象属性参数,以便在调用该接口扫描对象时利用该对象属性参数进行扫描。
在一个实施例中,所述根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数,包括:获取用户预先制定的扫描规则文本,将所述扫描规则文本转换成多种格式的配置文件;将多种格式的配置文件保存至所述ESLint代码检测工具的特定目录生成配置目录;从所述配置目录中读取相应的配置文件对所述接口扫描对象进行配置,得到对象属性参数。
具体地,所述扫描规则文本包括相应的代码规范要求,所述代码规范要求具体如下:
//禁止条件表达式中出现赋值操作符
"no-cond-assign":2,
//禁用console
"no-console":0,
//禁止在条件中使用常量表达式
//if(false){
//doSomethingUnfinished();
//}//cuowu
"no-constant-condition":2,
//禁止在正则表达式中使用控制字符:new RegExp("\x1f")
"no-control-regex":2,
//数组和对象键值对最后一个逗号,never参数:不能带末尾的逗号,always参数:必须带末尾的逗号,
//always-multiline:多行模式必须带逗号,单行模式不能带逗号
"comma-dangle":[1,"always-multiline"],
//禁用debugger
"no-debugger":2,
//禁止function定义中出现重名参数
"no-dupe-args":2,
//禁止对象字面量中出现重复的key
"no-dupe-keys":2,
//禁止重复的case标签
"no-duplicate-case":2,
//禁止空语句块
"no-empty":2,
将预先制定的扫描规则文本转换成多种格式的配置文件,其中,该多种格式包括:.ESLintrc.js格式、.ESLintrc.yaml格式、.ESLintrc.yml格式、.ESLintrc.json格式和package.json格式等,将多个不同格式的配置文件均保持在代码检测工具对应的特定目录,该特定目录为引入代码检测工具时生成一个配置目录用于保存配置文件。进而从所述配置目录中读取相应的配置文件对所述接口扫描对象进行配置,得到对象属性参数,该对象属性参数也包括多种格式参数,以便不同的前端应用的代码文件进行扫描。
在一个实施例中,所述获取用户预先制定的扫描规则文本,包括:显示规则显示界面以及在所述规则显示界面中显示默认扫描规则文本;监测用户是否对所述默认扫描规则文本进行修改操作;若用户对所述默认扫描规则文本进行修改操作,则保存并获取修改后的默认扫描规则文本作为预先制定的扫描规则文本。
具体地,为了让用户可以快速地创建自己的代码扫描规则。在代码扫描工具中内置了一些默认扫描规则文档,当加载代码扫描规则对接口扫描对象进行配置时,显示规则显示界面,该规则显示界面可以为弹框显示界面,以及在所述规则显示界面中显示默认扫描规则文本。监测用户是否对所述默认扫描规则文本进行修改操作,比如添加某些规则内容或删除某些规则内容;若用户对所述默认扫描规则文本进行修改操作,则保存并获取修改后的默认扫描规则文本作为预先制定的扫描规则文本,进而实现了用户快速创建自己的代码扫描规则,以便实现对接口扫描对象进行配置,得到对象属性参数。
S104、调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
具体地,在启动该并运行该代码扫描脚本后,自动调用代码扫描脚本中的接口扫描对象,并根据所述对象属性参数遍历文件列表中代码文件实现代码扫描,得到扫描结果。其中所述对象属性参数中包括用户统一制定的代码扫描规则,利用该统一的代码扫描规则扫描文件列表中的代码文件,得到扫描结果,该扫描结果可能包括:有语义缺陷、安全漏洞和不符合规定的代码等。
上述实施例提供的代码质量扫描方法可以对不同的前端应用进行扫描,无需针对每个前端应用均安装代码检测工具以及制定相应的代码扫描规则,因此该代码质量扫描方法提高了前端应用的代码扫描效率,同时利用统一的代码扫描规则,进而保证代码质量达到同一高水准,以便后续方便维护修改。
请参阅图2,图2是本申请的实施例提供的代码质量扫描方法的应用场景示意图。该代码质量扫描方法可以快速确定前端应用的代码质量,比如是否存在语义缺陷以及安全漏洞等问题。
如图2所示,该代码质量扫描方法具体包括步骤S201至步骤S206。
S201、接收终端发送的用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址。
终端在获取到用户提供的前端应用的应用标识以及路径地址,并根据前端应用的应用标识以及路径地址生成扫描指令,并发送该扫描指令至服务端,服务端接收终端发送的用于扫描前端应用的代码的扫描指令。
比如,可以在终端中设置一个扫描工具软件,用户需要对某个正在开发或者已经开发完成的前端应用进行代码质量扫描时,其可以打开该扫描工具软件,扫描工具软件可以显示一个信息输入界面,以便用户在该信息输入界面中应用标识以及路径地址后并进确认后,终端通过该扫描工具软件获取前端应用的应用标识以及路径地址,并根据前端应用的应用标识以及路径地址生成扫描指令。
S202、根据所述路径地址获取所述前端应用的各个代码文件。
具体地,服务器根据所述路径地址查询并获取所述前端应用的各个代码文件,是指获取该前端应用对应的路径地址中涉及的所有代码文件。
比如,提供的地址路径为E:\Document\learning\works\project\Item4\,其中,根据所述路径地址获取所述前端应用的各个代码文件,具体是指获取Document、learning、works、roject和Item4等目录下的所有代码文件。
S203、根据所述路径地址中路径关键字对各个代码文件进行分类,并将分类后的代码文件对应的文件名称记录在预设列表中,得到所述前端应用的文件列表。
其中,所述路径地址中路径关键字具体为路径地址中涉及目录名称,比如Document、learning、works、project和Item4均为路径关键字,因为不同的路径关键字对应路径目录下均会包括相应的代码文件,因此根据路径地址中路径关键字对所有代码文件进行分类,并将分类后的代码文件记录在预设列表中以生成文件列表。以便根据文件列表中代码文件的分类关系进行代码扫描,由此提供了扫描速度。
S204、运行预设的代码扫描脚本。
其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数。
S205、调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
在运行代码扫描脚本后,自动调用代码扫描脚本中的接口扫描对象,并根据所述对象属性参数遍历分类后生成的文件列表中代码文件实现代码扫描,得到扫描结果。其中,所述扫描结果可能包括:有语义缺陷、安全漏洞和不符合规定的代码等。
S206、根据所述扫描结果生成扫描报告,并将所述扫描报告发送至用户。
在得到扫描结果后,对所述扫描结果进行统计分析,比如统计每一个类型代码存在错误的数量等,并根据统计分析对应的统计结果生成扫描报告,在代码扫描脚本中插入Nodemailer,利用插件Nodemailer将扫描报告发送到用户指定邮箱,随时统计前端应用和评估前端应用的开发质量。
上述实施例提供的代码质量扫描方法可以对不同的前端应用的代码文件进行快速扫描,无需针对每个前端应用均安装代码检测工具以及制定相应的代码扫描规则,因此该代码质量扫描方法提高了前端应用的代码扫描效率,同时利用统一的代码扫描规则,进而保证代码质量达到同一高水准,以便后续方便维护修改。
请参阅图3a和图3b,图3a是本申请的实施例提供的代码质量扫描方法的应用场景示意图;图3b是本申请的实施例提供的另一种代码质量扫描方法的示意流程图。
其中,该应用场景包括服务器A、多个服务器N以及终端,其中服务器A与终端、服务器N配合完成代码质量扫描方法,服务器A中预先存储有代码扫描脚本,服务器N中存储有已开发的前端应用的代码文件,终端用于生成扫描指令。
需要说明的是,每个服务器N可以存储一个前端应用的代码文件。比如服务器1中存储前端应用1,服务器2中存储有前端应用2,前端应用1和前端应用2是两个完全不同的应用。
以下将结合图3a中的应用场景,对本申请的实施例提供的另一种代码质量扫描方法进行详细介绍。如图3b所示,该代码质量扫描方法具体包括步骤S301至步骤S311。
S301、当检测到用户输入预设指令字符时,输出提示信息。
其中,提示信息用于提示用户输入前端应用的应用标识和路径地址,具体可以是语音提示信息或文字提示信息。预设指令字符可以命令字符,比如输入ceshi字符等。
S302、获取用户输入的前端应用的应用标识和路径地址。
具体地,终端获取用户根据所述提示信息输入的前端应用的应用标识和路径地址。
S303、根据获取到的应用标识和路径地址生成扫描指令。
具体地,终端根据获取到的应用标识和路径地址生成扫描指令。该扫描指令用于指令服务器A启动并运行预设的代码扫描脚本,以及用于指令服务器N对代码文件进行分类,N为正整数。
S304、发送所述扫描指令。
其中,所述扫描指令包括存储所述前端应用对应的路径地址。具体地,分别发送扫描指令至服务器A和服务器N。
S305、接收所述扫描指令,根据所述路径地址获取所述前端应用的各个代码文件。
服务器N接收所述扫描指令,并根据所述路径地址获取应用标识对应的前端应用的各个代码文件。
S306、根据所述路径地址中路径关键字对各个代码文件进行分类。
其中,所述路径地址中路径关键字具体为路径地址中涉及目录名称,比如Document、learning、works、project和Item4均为路径关键字,因为不同的路径关键字对应路径目录下均会包括相应的代码文件。由服务器N根据路径地址中路径关键字对所有代码文件进行分类,得到分类后的代码文件。
S307、将分类后的代码文件对应的文件名称记录在预设列表中,得到所述前端应用的文件列表。
具体地,服务器N将分类后的代码文件记录在预设列表中以生成文件列表。
S308、发送所述文件列表以及所述文件列表中的代码文件。
具体地,服务器N发送所述文件列表以及所述文件列表中的代码文件至服务器A。
S309、接收所述扫描指令,运行预设的代码扫描脚本。
其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数。具体地,服务器A接收所述扫描指令,运行预设的代码扫描脚本。
S310、调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
具体地,服务器A调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
S311、根据所述扫描结果生成扫描报告,并将所述扫描报告发送至用户。
具体地,服务器A根据所述扫描结果生成扫描报告,并将所述扫描报告发送至用户使用的终端。
S312、显示所述扫描报告。
终端接收服务器A发送的扫描报告,并显示所述扫描报告,以便用户(应用开发人员)查看,了解前端应用的代码存在的质量问题。
上述实施例提供的代码质量扫描方法可以实现每个用户对自己开发的前端应用进行扫描,而无需针对每个前端应用均安装代码检测工具以及制定相应的代码扫描规则,同时利用前端应用对应的服务器对代码文件进行分类,进一步地提高了前端应用的代码扫描效率,同时利用统一的代码扫描规则,进而保证代码质量达到同一高水准,以便后续方便维护修改。
请参阅图4,图4是本申请的实施例提供一种代码质量扫描装置的示意性框图,该代码质量扫描装置用于执行前述的代码质量扫描方法。其中,该代码质量扫描装置可以配置于服务器。
如图6所示,该代码质量扫描装置400,包括:指令获取模块401、列表获取模块402、脚本运行模块403和调用扫描模块404。
指令获取模块401,用于获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址。
列表获取模块402,用于根据所述路径地址获取所述前端应用的文件列表。
脚本运行模块403,用于运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数。
在一些实施例中,脚本运行模块403,具体用于:获取预先创建的代码扫描脚本,在所述代码扫描脚本中添加ESLint代码检测工具;选择所述ESLint代码检测工具中的CLlEngine对象作为接口扫描对象;根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数。
在一些实施例中,脚本运行模块403,具体用于:获取用户预先制定的扫描规则文本,将所述扫描规则文本转换成多种格式的配置文件;将多种格式的配置文件保存至所述ESLint代码检测工具的特定目录生成配置目录;从所述配置目录中读取相应的配置文件对所述接口扫描对象进行配置,得到对象属性参数。
在一些实施例中,脚本运行模块403,具体用于:显示规则显示界面以及在所述规则显示界面中显示默认扫描规则文本;监测用户是否对所述默认扫描规则文本进行修改操作;若用户对所述默认扫描规则文本进行修改操作,则保存并获取修改后的默认扫描规则文本作为预先制定的扫描规则文本。
调用扫描模块404,用于调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
请参阅图5,图5是本申请的实施例提供另一种代码质量扫描装置的示意性框图,该代码质量扫描装置用于执行前述的代码质量扫描方法。其中,该代码质量扫描装置可以配置于服务器。
如图5所示,该代码质量扫描装置500,包括:指令获取模块501、文件获取模块502、分类记录模块503、脚本运行模块504、调用扫描模块505和生成发送模块506。
指令获取模块501,用于接收终端发送的用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址。
其中,所述扫描指令为所述终端根据用户输入的前端应用的应用标识和路径地址生成的扫描指令。
文件获取模块502,用于根据所述路径地址获取所述前端应用的各个代码文件。
分类记录模块503,用于根据所述路径地址中路径关键字对各个代码文件进行分类,并将分类后的代码文件对应的文件名称记录在预设列表中,得到所述前端应用的文件列表。
脚本运行模块504,用于运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数。
调用扫描模块505,用于调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
生成发送模块506,用于根据所述扫描结果生成扫描报告,并将所述扫描报告发送至用户。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
请参阅图6,图6是本申请的实施例提供的一种计算机设备的结构示意性框图。该计算机设备可以是服务器。
参阅图6,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种代码质量扫描方法。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种代码质量扫描方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址;根据所述路径地址获取所述前端应用的文件列表;运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数;调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
在一个实施例中,所述处理器在运行存储在存储器中的计算机程序,以实现如下步骤:
获取预先创建的代码扫描脚本,在所述代码扫描脚本中添加ESLint代码检测工具;选择所述ESLint代码检测工具中的CLIEngine对象作为接口扫描对象;根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数。
在一个实施例中,所述处理器在实现所述根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数时,具体用于实现:
获取用户预先制定的扫描规则文本,将所述扫描规则文本转换成多种格式的配置文件;将多种格式的配置文件保存至所述ESLint代码检测工具的特定目录生成配置目录;从所述配置目录中读取相应的配置文件对所述接口扫描对象进行配置,得到对象属性参数。
在一个实施例中,所述处理器在实现所述获取用户预先制定的扫描规则文本时,具体用于实现:
显示规则显示界面以及在所述规则显示界面中显示默认扫描规则文本;监测用户是否对所述默认扫描规则文本进行修改操作;若用户对所述默认扫描规则文本进行修改操作,则保存并获取修改后的默认扫描规则文本作为预先制定的扫描规则文本。
在一个实施例中,所述处理器在实现所述根据前端应用的路径地址获取所述前端应用的文件列表时,具体用于实现:
根据所述路径地址获取所述前端应用的各个代码文件;根据所述路径地址中路径关键字对各个代码文件进行分类,并将分类后的代码文件对应的文件名称记录在预设列表中,得到所述前端应用的文件列表。
在一个实施例中,所述处理器在实现所述获取用于扫描前端应用的代码的扫描指令时,具体用于实现:
接收终端发送的用于扫描前端应用的代码的扫描指令,其中,所述扫描指令为所述终端根据用户输入的前端应用的应用标识和路径地址生成的扫描指令。
在一个实施例中,所述处理器在实现调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果之后,还用于实现:
根据所述扫描结果生成扫描报告,并将所述扫描报告发送至用户。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项代码质量扫描方法。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种代码质量扫描方法,其特征在于,包括:
获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址;
根据所述路径地址获取所述前端应用的文件列表;
运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数;
调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
2.根据权利要求1所述的代码质量扫描方法,其特征在于,还包括:
获取预先创建的代码扫描脚本,在所述代码扫描脚本中添加ESLint代码检测工具;
选择所述ESLint代码检测工具中的CLIEngine对象作为接口扫描对象;
根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数。
3.根据权利要求2所述的代码质量扫描方法,其特征在于,所述根据预先制定的代码扫描规则对所述接口扫描对象进行配置,得到对象属性参数,包括:
获取用户预先制定的扫描规则文本,将所述扫描规则文本转换成多种格式的配置文件;
将多种格式的配置文件保存至所述ESLint代码检测工具的特定目录生成配置目录;
从所述配置目录中读取相应的配置文件对所述接口扫描对象进行配置,得到对象属性参数。
4.根据权利要求3所述的代码质量扫描方法,其特征在于,所述获取用户预先制定的扫描规则文本,包括:
显示规则显示界面以及在所述规则显示界面中显示默认扫描规则文本;
监测用户是否对所述默认扫描规则文本进行修改操作;
若用户对所述默认扫描规则文本进行修改操作,则保存并获取修改后的默认扫描规则文本作为预先制定的扫描规则文本。
5.根据权利要求1所述的代码质量扫描方法,其特征在于,所述根据前端应用的路径地址获取所述前端应用的文件列表,包括:
根据所述路径地址获取所述前端应用的各个代码文件;
根据所述路径地址中路径关键字对各个代码文件进行分类,并将分类后的代码文件对应的文件名称记录在预设列表中,得到所述前端应用的文件列表。
6.根据权利要求1所述的代码质量扫描方法,其特征在于,所述获取用于扫描前端应用的代码的扫描指令,包括:
接收终端发送的用于扫描前端应用的代码的扫描指令,其中,所述扫描指令为所述终端根据用户输入的前端应用的应用标识和路径地址生成的扫描指令。
7.根据权利要求1所述的代码质量扫描方法,其特征在于,还包括:
根据所述扫描结果生成扫描报告,并将所述扫描报告发送至用户。
8.一种代码质量扫描装置,其特征在于,包括:
指令获取模块,用于获取用于扫描前端应用的代码的扫描指令,其中,所述扫描指令包括存储所述前端应用对应的路径地址;
列表获取模块,用于根据所述路径地址获取所述前端应用的文件列表;
脚本运行模块,用于运行预设的代码扫描脚本,其中,所述代码扫描脚本中添加有用于创建接口扫描对象的代码检测工具以及根据预先制定的代码扫描规则对所述接口扫描对象进行配置生成的对象属性参数;
调用扫描模块,用于调用所述接口扫描对象,根据所述对象属性参数遍历所述文件列表中的代码文件进行代码扫描,得到扫描结果。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如权利要求1至7中任一项所述的代码质量扫描方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1至7中任一项所述的代码质量扫描方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910843704.8A CN110716866A (zh) | 2019-09-06 | 2019-09-06 | 代码质量扫描方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910843704.8A CN110716866A (zh) | 2019-09-06 | 2019-09-06 | 代码质量扫描方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110716866A true CN110716866A (zh) | 2020-01-21 |
Family
ID=69210354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910843704.8A Pending CN110716866A (zh) | 2019-09-06 | 2019-09-06 | 代码质量扫描方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716866A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338940A (zh) * | 2020-02-21 | 2020-06-26 | 中国建设银行股份有限公司 | 代码处理方法、装置及系统 |
CN112269594A (zh) * | 2020-10-30 | 2021-01-26 | 北京首都在线科技股份有限公司 | 项目代码质量评估方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320591A (zh) * | 2014-07-25 | 2016-02-10 | 腾讯科技(深圳)有限公司 | 代码检测方法及装置 |
CN108920370A (zh) * | 2018-07-02 | 2018-11-30 | 北京百度网讯科技有限公司 | 兼容性问题检测方法、装置及设备 |
CN109032949A (zh) * | 2018-08-02 | 2018-12-18 | 郑州悉知信息科技股份有限公司 | 一种前端代码质量检测方法及装置 |
CN109871319A (zh) * | 2019-01-18 | 2019-06-11 | 深圳壹账通智能科技有限公司 | 项目代码扫描方法、装置、计算机设备及存储介质 |
-
2019
- 2019-09-06 CN CN201910843704.8A patent/CN110716866A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320591A (zh) * | 2014-07-25 | 2016-02-10 | 腾讯科技(深圳)有限公司 | 代码检测方法及装置 |
CN108920370A (zh) * | 2018-07-02 | 2018-11-30 | 北京百度网讯科技有限公司 | 兼容性问题检测方法、装置及设备 |
CN109032949A (zh) * | 2018-08-02 | 2018-12-18 | 郑州悉知信息科技股份有限公司 | 一种前端代码质量检测方法及装置 |
CN109871319A (zh) * | 2019-01-18 | 2019-06-11 | 深圳壹账通智能科技有限公司 | 项目代码扫描方法、装置、计算机设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338940A (zh) * | 2020-02-21 | 2020-06-26 | 中国建设银行股份有限公司 | 代码处理方法、装置及系统 |
CN112269594A (zh) * | 2020-10-30 | 2021-01-26 | 北京首都在线科技股份有限公司 | 项目代码质量评估方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763091B (zh) | 用于回归测试的方法、装置及系统 | |
CN110795257A (zh) | 处理多集群作业记录的方法、装置、设备及存储介质 | |
CN110231994B (zh) | 内存分析方法、装置和计算机可读存储介质 | |
CN102012857B (zh) | 一种对Web页面进行自动化测试的装置及方法 | |
WO2015131804A1 (en) | Call stack relationship acquiring method and apparatus | |
US11449488B2 (en) | System and method for processing logs | |
EP3682324A1 (en) | Method and apparatus for finding long methods in code | |
CN111367595B (zh) | 数据处理方法、程序运行方法、装置及处理设备 | |
CN114546738B (zh) | 服务器通用测试方法、系统、终端及存储介质 | |
US10628584B1 (en) | Functional language source code vulnerability scanner | |
CN108694108B (zh) | 一种iOS崩溃数据分类与统计的方法和装置 | |
WO2017128952A1 (zh) | 堆栈的保护方法及装置 | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN110716866A (zh) | 代码质量扫描方法、装置、计算机设备及存储介质 | |
CN103631848A (zh) | 决策服务中的有效规则执行 | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
CN111258562A (zh) | Java代码质量检查方法、装置、设备和存储介质 | |
CN111666201A (zh) | 回归测试方法、装置、介质及电子设备 | |
JP2013077124A (ja) | ソフトウェアテストケース生成装置 | |
CN112783775B (zh) | 特殊字符输入测试方法及装置 | |
CN114691197A (zh) | 代码分析方法、装置、电子设备和存储介质 | |
CN112433943A (zh) | 基于抽象语法树的环境变量检测方法、装置、设备及介质 | |
CN112948478A (zh) | 基于链路的代码分析方法、装置、电子设备及存储介质 | |
CN114157439A (zh) | 漏洞扫描方法、计算设备及记录介质 | |
CN115543227B (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 |