一种SVN集成JSHint代码检测方法及其系统的制作方法

文档序号:10724811阅读:219来源:国知局
一种SVN集成JSHint代码检测方法及其系统的制作方法
【专利摘要】本发明涉及一种SVN集成JSHint代码检测方法及其系统,该方法包括开发人员提交源代码至SVN服务器;触发SVN钩子pre?commit;版本库传给该钩子程序相应参数,钩子程序执行调用Nodejs模块并运行JSHint指令步骤;Nodejs模块将检测结构反馈给SVN钩子;SVN钩子通过返回结果决定是通过代码提交还是阻塞代码提交并给出检测结果,并将结果告知开发人员,若SVN钩子阻塞代码提交,开发人员进行代码修改,直至代码提交。本发明通过融合了SVN版本管理工具和JavaScript代码检测工具JSHint,实现了开发人员在利用SVN提交源代码时,系统自动进行代码过滤,获取JavaScript文件并分析和检测,快速告知检测结果,有效提高版本提交的JavaScript代码质量,统一代码规范,提升软件工程开发软件源代码质量和团队开发效率。
【专利说明】
一种SVN集成JSH i nt代码检测方法及其系统
技术领域
[0001]本发明涉及代码检测方法,更具体地说是指一种SVN集成JSHint代码检测方法及 SVN集成JSHint代码检测系统。【背景技术】
[0002]SVN是Subvers1n的简称,是一个开放源代码(指SVN软件本身的源代码开放)的集中式版本控制管理工具。所以,SVN是对软件源代码的提交和管理工具。
[0003]目前,大部分软件都是由团队合作编写的,经由不同的编程人员,不同的IDE编辑器编写。但是不同的开发人员能力参差不齐,风格各异,而现有的IDE编辑器只能检测一般性的语法错误,并不能检测软件源代码的编写规范和相关安全问题,并且,中大型团队协作开发过程中依赖于版本控制管理工具管理代码。但是版本管理工具只能管理代码文件的版本迭代,开发人员有无提交权限及提交代码冲突等问题。并不能检测待提交代码的编写规范和安全性问题,当然也无法实时告知检测结果。而随着开发周期的持续以及版本的快速迭代,系统的稳定性,可维护性和可扩展性会逐渐下降,并最终导致系统出现漏洞,开发人员又难以修改和维护。
[0004]对于JavaScript代码检测,目前存在着很多检测方案和工具,但大多是手动运行相关检测工具,检测指定的JavaScript代码片段或JavaScript文件,无法结合版本控制管理工具,在有相关代码提交的时候自动触发。另外,单一的JavaScript代码检测工具理所应当只能对JavaScript代码文件进行检查,但实际管理软件源代码的过程中,我们需要对多种类型的源代码文件进行编写规范和安全性检查,单一的JavaScript代码检测工具无法结合现有的其他类型代码检测工具一起工作。也无法部署在版本控制管理工具中自动触发, 并实时反馈代码检测结果。
[0005]中国专利201310616319.2公开了一种源代码宏配对检测方法,包括接收待检测的源代码程序包:判断源代码程序包是否为强制提交文件;若是,则将所述源代码程序包直接提交至所述代码库服务器;若否,则查询所述源代码程序包中的文件列表,对所述源代码程序包中的源代码文件进行过滤,获得新增或修改的源代码文件;对所述新增或修改的源代码文件逐一进行宏配对检测,并在所有新增或修改的源代码文件的宏配对检测无误时,将所述源代码程序包提交至所述代码库服务器。中国专利201310492007.5公开了一种Java源代码的合规性检测方法和装置,方法包括:构建Java源代码的编码规范库,根据编码规范库中的编码规范,生成合规性检测规则集合,构建带检测的Java源代码的合规性检测模型,该模型包括:类集合C、方法集合M、变量集合V和指令集合I,将合规性检测规则集合中的各个规则一一与合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息, 根据激励的匹配结果信息。
[0006]上述的两个专利中,并不是利用管理工具管理代码以及检测待提交代码的编写规范和安全性问题,无法节省人工代码审核时间和自动化白盒测试时间。
[0007]因此有必要设计一种利用管理工具管理代码以及检测待提交代码的编写规范和安全性问题的检测方法。
【发明内容】

[0008]本发明的目的在于克服现有技术的缺陷,提供一种SVN集成JSHint代码检测方法及其系统。
[0009]为实现上述目的,本发明采用以下技术方案:一种SVN集成JSHint代码检测方法, 包括以下具体步骤:
[0010]步骤一.启动步骤,开发人员提交源代码至SVN服务器;
[0011]步骤二?触发步骤,触发SVN钩子pre-commit;
[0012]步骤三.调用运行步骤,版本库传给该钩子程序相应参数,钩子程序执行调用 Node js模块并运行JSHint指令步骤;[〇〇13] 步骤四.反馈步骤,Nodejs模块将检测结果反馈给SVN钩子,SVN钩子通过返回结果决定是通过代码提交还是阻塞代码提交并给出检测结果,并将结果告知开发人员,若SVN钩子阻塞代码提交,开发人员进行代码修改,直至代码提交。
[0014]其进一步技术方案为:在所述步骤三中,SVN服务器首先根据SVN版本库指令步骤行工具SVNlook获取到等待提交的文件名和文件路径,然后执行Nodejs模块打开Check, js 指令步骤,参数即为刚获取的文件名和文件路径。[0〇15]其进一步技术方案为:在所述步骤三中,上述的执行Nodejs模块的具体步骤如下: [0〇16] 步骤一.筛选步骤,打开Check.js指令步骤,筛选js文件;[〇〇17] 步骤二.配置步骤,JSHint模块配置js代码规范;[〇〇18]步骤三.检测步骤,JSHint模块检测待提交js代码。[0〇19]其进一步技术方案为:所述Nodejs文件中以模块方式调用JSHint检测JavaScript 文件。[0〇2〇]其进一步技术方案为:所述Check, js为编写好的放在指定文件夹的JavaScript文件,用于调用JSHint模块,检测JavaScript代码规范。[〇〇21]其进一步技术方案为:在所述步骤三中,调用运行步骤中调用Nodejs前需要在系统安装Nodejs环境,并且Nodejs安装了JSHint包的前提下,Nodejs会执行预先编写好的 Check, js文件,Check, js引用JSHint模块,JSHint就会检测传入的js文件。
[0022] 其进一步技术方案为:所述步骤二中,触发步骤中SVN钩子脚本在Windows系统下用批处理文件编写,在Linux系统下一般用Shell脚本编写。[〇〇23]其进一步技术方案为:所述JSHint模块内设有用户设定的规则集。[〇〇24]本发明还提供了一种SVN集成JSHint代码检测系统,包括启动模块,用于接收开发人员所提交的源代码,且触发SVN钩子;
[0025]触发模块,用于触发SVN钩子获取代码信息并发送执行指令步骤到调用运行模块, 且根据由调用运行模块的检测结果判断待提交文件能否通过检测而提交并将结果反馈给开发人员,与所述启动模块连接;[〇〇26]调用运行模块,用于调用JSHint模块,检测JavaScript代码规范,且将检测的结果反馈到触发模块,与所述触发模块连接;
[0027]反馈模块,用于将调用运行模块检测的结果发送至开发人员,与调用运行模块连接。
[0028]其进一步技术方案为:所述调用运行模块包括筛选子模块、配置子模块以及检测子模块;[0〇29]所述筛选子模块为编写好的放在指定文件夹的JavaScript文件,用于接收触发模块的指令步骤后调用所述检测子模块,与所述触发模块连接;
[0030]所述配置子模块,用于所述筛选子模块筛选后的代码配置js代码规范,以供所述检测子模块检测,分别与所述检测子模块以及所述筛选子模块;
[0031]所述检测子模块,用于检测JavaScript代码规范。[〇〇32]本发明与现有技术相比的有益效果是:本发明的一种SVN集成JSHint代码检测方法,通过融合了SVN版本管理工具和JavaScript代码检测工具JSHint,实现了开发人员在利用SVN提交源代码时,系统自动进行代码过滤,获取JavaScript文件并分析和检测,快速告知检测结果,若不符合配置的代码规范或者出现安全问题,均会阻塞代码提交,只有开发人员依照检测结果修改,再次检测确保没有问题才能顺利提交,从而能有效提高版本提交的 JavaScript代码质量,统一代码规范,提升软件工程开发软件源代码质量和团队开发效率, 提高系统运行过程中的性能及系统的可扩展性,节省了人工代码审核时间和自动化白盒测试时间,并且培养开发人员正确的编码习惯。[〇〇33]下面结合附图和具体实施例对本发明作进一步描述。【附图说明】[〇〇34]图1为本发明具体实施例提供的一种SVN集成JSHint代码检测方法的流程框图; [〇〇35]图2为本发明具体实施例提供的一种SVN集成JSHint代码检测系统的结构示意图;
[0036]附图标记
[0037]1〇启动模块20SVNlook模块[〇〇38] 30筛选子模块40配置子模块[〇〇39] 50检测子模块60反馈模块【具体实施方式】
[0040]为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。[0041 ]如图1?2所示的具体实施例,本实施例提供的一种SVN集成JSHint代码检测方法, 可以运用在中大型团队协作开发过程中,实现开发人员在利用SVN提交源代码时,系统自动进行代码过滤,获取JavaScript文件并分析和检测。[〇〇42] 一种SVN集成JSHint代码检测方法,包括以下具体步骤:
[0043]步骤一.启动步骤,开发人员提交源代码至SVN服务器;[0〇44] 步骤二.触发步骤,触发SVN钩子pre-commit;
[0045]步骤三.调用运行步骤,版本库传给该钩子程序相应参数,钩子程序执行调用 Node js模块并运行JSHint指令步骤;[〇〇46] 步骤四.反馈步骤,Nodejs模块将检测结果反馈给SVN钩子,SVN钩子通过返回结果决定是通过代码提交还是阻塞代码提交并给出检测结果,并将结果告知开发人员,若SVN钩子阻塞代码提交,开发人员进行代码修改,直至代码提交。
[0047]上述的一种SVN集成JSHint代码检测方法,通过融合了 SVN版本管理工具和 JavaScript代码检测工具JSHint,实现了开发人员在利用SVN提交源代码时,系统自动进行代码过滤,获取JavaScript文件并分析和检测,快速告知检测结果,若不符合配置的代码规范或者出现安全问题,均会阻塞代码提交,只有开发人员依照检测结果修改,再次检测确保没有问题才能顺利提交,从而能有效提高版本提交的JavaScript代码质量,统一代码规范, 提升软件工程开发软件源代码质量和团队开发效率,提高系统运行过程中的性能及系统的可扩展性,节省了人工代码审核时间和自动化白盒测试时间,并且培养开发人员正确的编码习惯。[〇〇48]更进一步的,在所述步骤三中,SVN服务器首先根据SVN版本库指令步骤行工具 SVNlook获取到等待提交的文件名和文件路径,然后执行Node js模块打开Check, js指令步骤,参数即为刚获取的文件名和文件路径。[0〇49]并且,在所述步骤三中,上述的执行Node js模块的具体步骤如下:
[0050] 步骤一.筛选步骤,打开Check.js指令步骤,筛选js文件;[〇〇51] 步骤二.配置步骤,JSHint模块配置js代码规范;[〇〇52]步骤三.检测步骤,JSHint模块检测待提交js代码。[0〇53]具体的,Node js文件中以模块方式调用JSHint检测JavaScript文件。
[0054]另外,上述的Check, js为编写好的放在指定文件夹的JavaScript文件,用于调用 JSHint模块,检测JavaScript代码规范。[0〇55] 并且,调用运行步骤中在调用Node js前需要在系统安装node js环境,并且node js 安装了 JSHint包的前提下,Node js会执行预先编写好的Check, js文件,Check, js引用 JSHint模块,JSHint就会检测传入的js文件。[0〇56]依据JSHint特性,用户可以自定义JavaScript代码检测规则,根据SVN服务器部署系统环境的不同,具体的,上述的步骤二中,触发步骤中,SVN钩子脚本在Windows系统下用批处理文件编写,在Linux系统下一般用Shell脚本编写。[〇〇57]另外,JSHint模块内设有用户设定的规则集。并且,默认提供的规则集包含了 Web 开发人员多年积累下来的认为好的开发规范和不好的开发风格,用户可以根据自己项目的需求选择构建一套特定的规则,也就是以键值对:[param: opt 1n ]的形式自定义检测规则; 利用该规则集来检测执行代码质量检测。[0〇58]在本实施例中,Nodejs打开Check, js的过程中,程序代码会过滤待检测的文件名, 从所有文件名中选择以.js后缀结尾的文件进行检测。[〇〇59]本发明还提供了一种SVN集成JSHint代码检测系统,包括启动模块10,用于接收开发人员所提交的源代码,且触发SVN钩子;触发模块,用于触发SVN钩子获取代码信息并发送执行指令步骤到调用运行模块,且根据由调用运行模块的检测结果判断待提交文件能否通过检测而提交并将结果反馈给开发人员,与启动模块10连接;调用运行模块,用于调用 JSHint模块,检测JavaScript代码规范,且将检测的结果反馈到触发模块,与触发模块连接;反馈模块60,用于将调用运行模块检测的结果发送至开发人员,与调用运行模块连接。
[0060]在本实施例中,上述的调用运行模块包括筛选子模块30、配置子模块40以及检测子模块40,筛选子模块30为编写好的放在指定文件夹的JavaScript文件,用于接收触发模块的指令步骤后调用检测子模块40,检测JavaScript代码规范,与触发模块连接;配置子模块40,用于所述筛选子模块30筛选后的代码配置js代码规范,以供所述检测子模块40检测, 分别与所述检测子模块40以及所述筛选子模块30;所述检测子模块40,用于检测 JavaScript代码规范。
[0061]另外,触发模块内设有SVNlook模块20,用于获取到等待提交的文件名和文件路径,与筛选子模块30连接。[0〇62] 通过node js环境作为桥梁,整合了SVN钩子的脚本文件和JavaScript代码检测工具,从而实现代码提交事件触发SVN钩子脚本,钩子脚本执行JavaScript文件,JavaScript 文件调用JSHint检测代码并返回检测结果这一整套流程。[〇〇63] 其中,SVN钩子脚本可以用shell脚本编写从而运行在linux系统环境,也可以用批处理脚本编写运行在windows系统环境。脚本中可以串行编写其他检测业务逻辑。
[0064]于其他实施例,本发明还可以拓展为SVN集成csslint检测css文件。[〇〇65]上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。
【主权项】
1.一种SVN集成JSHint代码检测方法,其特征在于,包括以下具体步骤:步骤一.启动步骤,开发人员提交源代码至SVN服务器;步骤二.触发步骤,触发SVN钩子pre-commit;步骤三.调用运行步骤,版本库传给该钩子程序相应参数,钩子程序执行调用Nodejs模 块并运"TxJSHint指令步骤;步骤四.反馈步骤,Nodejs模块将检测结果反馈给SVN钩子,SVN钩子通过返回结果决定 是通过代码提交还是阻塞代码提交并给出检测结果,并将结果告知开发人员,若SVN钩子阻 塞代码提交,开发人员进行代码修改,直至代码提交。2.根据权利要求1所述的一种SVN集成JSHint代码检测方法,其特征在于,在所述步骤 三中,SVN服务器首先根据SVN版本库指令步骤行工具SVNlook获取到等待提交的文件名和 文件路径,然后执行Nodejs模块打开Check, js指令步骤,参数即为刚获取的文件名和文件 路径。3.根据权利要求2所述的一种SVN集成JSHint代码检测方法,其特征在于,在所述步骤 三中,上述的执行Nodejs模块的具体步骤如下:步骤一.筛选步骤,打开Check.js指令步骤,筛选js文件;步骤二.配置步骤,JSHint模块配置js代码规范;步骤三.检测步骤,JSHint模块检测待提交js代码。4.根据权利要求3所述的一种SVN集成JSHint代码检测方法,其特征在于,所述Nodejs 文件中以模块方式调用JSHint检测JavaScript文件。5.根据权利要求3所述的一种SVN集成JSHint代码检测方法,其特征在于,所述 Check, js为编写好的放在指定文件夹的JavaScript文件,用于调用JSHint模块,检测 JavaScript代码规范。6.根据权利要求1至5任一项所述的一种SVN集成JSHint代码检测方法,其特征在于,在 所述步骤三中,调用运行步骤中调用Nodejs前需要在系统安装Nodejs环境,并且Nodejs安 装了 JSHint包的前提下,Nodejs会执行预先编写好的Check, js文件,Check, js引用JSHint 模块,JSHint就会检测传入的js文件。7.根据权利要求1至5任一项所述的一种SVN集成JSHint代码检测方法,其特征在于,所 述步骤二中,触发步骤中SVN钩子脚本在Windows系统下用批处理文件编写,在Linux系统下 一般用Shell脚本编写。8.根据权利要求3所述的一种SVN集成JSHint代码检测方法,其特征在于,所述JSHint 模块内设有用户设定的规则集。9.一种SVN集成JSHint代码检测系统,其特征在于,包括启动模块,用于接收开发人员 所提交的源代码,且触发SVN钩子;触发模块,用于触发SVN钩子获取代码信息并发送执行指令步骤到调用运行模块,且根 据由调用运行模块的检测结果判断待提交文件能否通过检测而提交并将结果反馈给开发 人员,与所述启动模块连接;调用运行模块,用于调用JSHint模块,检测JavaScript代码规范,且将检测的结果反馈 到触发模块,与所述触发模块连接;反馈模块,用于将调用运行模块检测的结果发送至开发人员,与调用运行模块连接。10.根据权利要求9所述的一种SVN集成JSHint代码检测系统,其特征在于,所述调用运 行模块包括筛选子模块、配置子模块以及检测子模块;所述筛选子模块为编写好的放在指定文件夹的JavaScript文件,用于接收触发模块的 指令步骤后调用所述检测子模块,与所述触发模块连接;所述配置子模块,用于所述筛选子模块筛选后的代码配置js代码规范,以供所述检测 子模块检测,分别与所述检测子模块以及所述筛选子模块;所述检测子模块,用于检测JavaScript代码规范。
【文档编号】G06F11/36GK106095681SQ201610416605
【公开日】2016年11月9日
【申请日】2016年6月14日 公开号201610416605.8, CN 106095681 A, CN 106095681A, CN 201610416605, CN-A-106095681, CN106095681 A, CN106095681A, CN201610416605, CN201610416605.8
【发明人】吴澳
【申请人】深圳市彬讯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1