一种代码规范强制检查方法及系统的制作方法

文档序号:6550960阅读:95来源:国知局
一种代码规范强制检查方法及系统的制作方法
【专利摘要】本发明涉及一种代码规范强制检查方法,包括:步骤1,在执行源代码编译命令前,判断当前用户是否具有检查权限,若有则执行步骤2,否则结束流程;步骤2,基于基本规范、程序CORE规范、内存泄露规范和SQL规范四个类别检查源代码是否符合规范,若符合则执行源代码编译命令,否则输出不符合规范的代码段。本发明将检查功能植入到编译命令中,存在不符合代码规范的代码段,不予编译,从根本上规避不规范的代码,且排查问题较为主动,灵活性高,易于执行。
【专利说明】一种代码规范强制检查方法及系统

【技术领域】
[0001] 本发明涉及电信行业的代码检测【技术领域】,与Linux/Unix shell编程技术和 Linux/Unix C/C++编程技术相关,特别是涉及一种代码规范强制检查方法及系统。

【背景技术】
[0002] 目前的软件行业,编程语言种类繁多,如java、c、C++、c#、jsp、perl、php、delphi 等等,涉及各个领域,代码规范也格式各样,开发人员除了具备过硬的编程技术外,更需要 一个良好的编码规范和编码习惯。然而,除了共性编码规范之外,每一种语言的要求也不 尽相同,甚至尽管是同一种编程语言,每个研发人员的能力和编码风格也各不相同,如何能 有效地规范代码编写呢?是规范文档,组织培训,代码审核,还是导师指导?列举的这样方 法,已有很多软件公司都尝试过,但事实证明达不到期望的效果,归根结底的原因只有一 个:规范检查无法强制执行。
[0003] 因此,为了规范研发人员的代码排版、规避代码存在的内存泄露、规避SQL语句存 在的性能问题,基于代码在实际研发和运行阶段存在并总结的具体问题,基于研发规范执 行难、效果差等等,造成的后期代码在维护过程中的可读性差、耦合度高、灵活性差等等问 题,基于在生产过程中代码问题排查过于被动(尤其是内存占用和程序C0REDUMP)等,本发 明提出了一种代码规范强制检查方法及系统。


【发明内容】

[0004] 本发明所要解决的技术问题是提供一种代码规范强制检查方法及系统,用于解决 有效规范代码编写的问题。
[0005] 本发明解决上述技术问题的技术方案如下:一种代码规范强制检查方法,包括:
[0006] 步骤1,在执行源代码编译命令前,判断当前用户是否具有检查权限,若有则执行 步骤2,否则结束流程;
[0007] 步骤2,基于基本规范、程序CORE规范、内存泄露规范和SQL规范四个类别检查源 代码是否符合规范,若符合则执行源代码编译命令,否则输出不符合规范的代码段。
[0008] 在上述技术方案的基础上,本发明还可以做如下改进。
[0009] 进一步,所述步骤1中设有用于判断用户权限的程序配置文件。
[0010] 进一步,所述步骤2还包括:增加代码规范,并检查源代码是否符合新增的代码规 范。
[0011] 进一步,所述基本规范包括标点符号规范和段落设置规范;
[0012] 所述程序CORE规范包括输出格式规范、字符初始化规范和类型变量设置规范;
[0013] 所述内存泄露规范包括utClone使用规范和utype类型返回函数规范;
[0014] 所述SQL规范包括绑定变量规范和警示级提示规范。
[0015] 进一步,还包括:若符合规范的源代码增加有代码段,则对新增的代码段重复步骤 1和步骤2,只检查新增的代码段是否符合规范。
[0016] 本发明的技术方案还包括一种代码规范强制检查系统,包括:
[0017] 权限判断模块,用于在执行源代码编译命令前,判断当前用户是否具有检查权 限;
[0018] 规范检查模块,用于对具有检查权限的用于,基于基本规范、程序CORE规范、内存 泄露规范和SQL规范四个类别检查源代码是否符合规范;
[0019] 代码执行模块,用于执行符合规范的源代码的编译命令;
[0020] 代码输出模块,用于输出不符合规范的代码段。
[0021] 进一步,权限判断模块中设有用于判断用户权限的程序配置文件。
[0022] 进一步,所述规范检查模块还用于:增加代码规范,并检查源代码是否符合新增的 代码规范。
[0023] 进一步,所述基本规范包括标点符号规范和段落设置规范;
[0024] 所述程序CORE规范包括输出格式规范、字符初始化规范和类型变量设置规范;
[0025] 所述内存泄露规范包括utClone使用规范和utype类型返回函数规范;
[0026] 所述SQL规范包括绑定变量规范和警示级提示规范。
[0027] 进一步,若符合规范的源代码增加有代码段,则规范检查模块只检查新增的代码 段是否符合规范。
[0028] 本发明的有益效果是:本发明进行的代码规范的强制检查,能规范程序员的编码, 督促程序员养成良好的编码习惯,同时规范研发人员的代码排版、规避代码存在的内存泄 露、规避SQL语句存在的性能问题等等,提高代码的可读性、易维护性。本发明将检查功能 植入到编译命令中,存在不符合代码规范的代码段,不予编译,从根本上规避不规范的代 码,且排查问题较为主动,灵活性高,易于执行。

【专利附图】

【附图说明】
[0029] 图1为本发明所述代码规范强制检查方法的流程示意图;
[0030] 图2为本发明实施例中规范检查的整体流程图。

【具体实施方式】
[0031] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并 非用于限定本发明的范围。
[0032] 如图1所示,本实施例给出了一种代码规范强制检查方法,包括:
[0033] 步骤1,在执行源代码编译命令前,判断当前用户是否具有检查权限,若有则执行 步骤2,否则结束流程;
[0034] 步骤2,基于基本规范、程序CORE规范、内存泄露规范和SQL规范四个类别检查源 代码是否符合规范,若符合则执行源代码编译命令,否则输出不符合规范的代码段。
[0035] 源代码经上述检查符合规范后,再执行编译和链接动作,生成可执行文件或静态 库或动态库等,若不符合规范,还需要提示文件哪些代码段不符合规范并给出具体原因,并 不予编译,直到代码修改后全部符合规范,才允许编译。
[0036] 对应地,本实施例还给出了一种代码规范强制检查系统,包括:
[0037] 权限判断模块,用于在执行源代码编译命令前,判断当前用户是否具有检查权 限;
[0038] 规范检查模块,用于对具有检查权限的用于,基于基本规范、程序CORE规范、内存 泄露规范和SQL规范四个类别检查源代码是否符合规范;
[0039] 代码执行模块,用于执行符合规范的源代码的编译命令;
[0040] 代码输出模块,用于输出不符合规范的代码段。
[0041] 该系统的具体实施过程与原理同所述的代码规范强制检查方法一致。
[0042] 本实施例通过Linux与Unix C/C++编程语言,结合Linux与Unix shell编程技术, 运行环境依赖于UNIX或LINUX系统,主要是后台C或C++文件的代码规范检查。
[0043] 上述两个步骤说明需要在执行编译命令前进行代码规范强制检查,本实施例的检 查功能植入编译命令技术方案为:新增shell脚本cpschk. sh供编译命令cpmk调用;根据 内容可知在真正执行编译命令cpsmake. sh之前,先调用代码规范检查cpschk. sh,若代码 不符合规范则exit不予编译,实现代码强制检查功能。
[0044] cpmk内容如下
[0045] if [',$#,' !=T] then echo"脚本的用法如下:" echo "usage: cpmk cQTimeAgeLimit.cpp 表示编译单个 be or bp" echo "usage: cpmk all 表示编译当前目录下所有的be or bp" else indexofsplit='echo ${ 1 }|awk '{n=index($0, "/");print n}n echo ${indexofsplit} if[ "${indexofsplit}!, != "0"] then fiIepath='echo $ {1 }|awk ' { ns = length($0) nf = length("/") for(k=ns+1 -nf;k>= 1 ;k-) if(substr($0,k,nf)=="/") { print substr($0, 0, k-1) break } Γ
[0046] echo $filepath filename='echo ${ 1 }|a\vk '{ ns - length(SO) nf = length("/") for(k=ns+l -nf;k>=l ;k-) if(substr($0,k,nf)=="/") { print substr($〇, k + 1) bieak } Γ cd ${rilepath} else filcnamc=$l fi ## liugc codechk add begin cpschk.sh 'pwd' $ {filename) flag=$? ##echo $ flag ##打印 cpschk.sli 脚本返回值 if[$flag = "l"] then exit fi ## liugc codechk add end
[0047] echo $filename echo 'pwd' cpsmake.sh 0 $ Jfilename} fi
[0048] cpschk. sh内容如下,根据当前登录用户检查是否具备规范检查权限,若具备,则 调用代码规范检查进程:
[0049] cd $HOME/run/framework/pub/codechk filepath=$l"/" ##filepath 后加上?符号 filename=$2 loginIncmt="$ {LOGNAME}@ 1" ##echo "filepath=$filepath" ##echo "filename=$filename" ###是否进行代码检查判断### username='grep ${LOGNAME} userlist.cfg' userlncmt='grep $ {IoginIncmt} userlist.cfg' #echo "username=$ {username}" #echo "userlncmt=$ {userlncmt}" ###是否具备增量代码检查权限[1-具备,其他-不具备]### Incmtflag=""; if [ "${userlncmt|" != ,H,]
[0050]

【权利要求】
1. 一种代码规范强制检查方法,其特征在于,包括: 步骤1,在执行源代码编译命令前,判断当前用户是否具有检查权限,若有则执行步骤 2,否则结束流程; 步骤2,基于基本规范、程序CORE规范、内存泄露规范和SQL规范四个类别检查源代码 是否符合规范,若符合则执行源代码编译命令,否则输出不符合规范的代码段。
2. 根据权利要求1所述的代码规范强制检查方法,其特征在于,所述步骤1中设有用于 判断用户权限的程序配置文件。
3. 根据权利要求1所述的代码规范强制检查方法,其特征在于,所述步骤2还包括:增 加代码规范,并检查源代码是否符合新增的代码规范。
4. 根据权利要求1所述的代码规范强制检查方法,其特征在于,所述基本规范包括标 点符号规范和段落设置规范; 所述程序CORE规范包括输出格式规范、字符初始化规范和类型变量设置规范; 所述内存泄露规范包括utClone使用规范和utype类型返回函数规范; 所述SQL规范包括绑定变量规范和警示级提示规范。
5. 根据权利要求1至4中任一所述的代码规范强制检查方法,其特征在于,还包括:若 符合规范的源代码增加有代码段,则对新增的代码段重复步骤1和步骤2,只检查新增的代 码段是否符合规范。
6. -种代码规范强制检查系统,其特征在于,包括: 权限判断模块,用于在执行源代码编译命令前,判断当前用户是否具有检查权限; 规范检查模块,用于对具有检查权限的用于,基于基本规范、程序CORE规范、内存泄露 规范和SQL规范四个类别检查源代码是否符合规范; 代码执行模块,用于执行符合规范的源代码的编译命令; 代码输出模块,用于输出不符合规范的代码段。
7. 根据权利要求6所述的代码规范强制检查系统,其特征在于,权限判断模块中设有 用于判断用户权限的程序配置文件。
8. 根据权利要求6所述的代码规范强制检查系统,其特征在于,所述规范检查模块还 用于:增加代码规范,并检查源代码是否符合新增的代码规范。
9. 根据权利要求6所述的代码规范强制检查系统,其特征在于,所述基本规范包括标 点符号规范和段落设置规范; 所述程序CORE规范包括输出格式规范、字符初始化规范和类型变量设置规范; 所述内存泄露规范包括utClone使用规范和utype类型返回函数规范; 所述SQL规范包括绑定变量规范和警示级提示规范。
10. 根据权利要求6至9中任一所述的代码规范强制检查系统,其特征在于,若符合规 范的源代码增加有代码段,则规范检查模块只检查新增的代码段是否符合规范。
【文档编号】G06F11/36GK104050085SQ201410292978
【公开日】2014年9月17日 申请日期:2014年6月25日 优先权日:2014年6月25日
【发明者】刘光彩 申请人:北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1