• 代码Verify简介


      对于开发者而言,编译代码和提交代码是必不可少的流程,同一个需求反复提交的情况也时常出现,那么怎么避免这种情况,且保证代码的质量,这就是Verify CI的目标。Verify表示认证验证的意思,结合到我们软件开发者的身上就是对代码的认证。何谓对代码的认证,可以理解为对代码的功能,可维护性,复杂度等质量指标的验证,如果不达标就得不到认证。那么怎么将Verify集合到实际的开发流程中呢?

      对于一般的开发模式,如敏捷开发模式下,对实际的开发在来说,大概的流程是:接收需求,开发需求,需求自验证,提交代码。从实际的开发流程不能看出,只要保证了代码提交环节,就可以保证共享代码的质量,所以在代码提交环节做Verify,从而达到高质量的保证。

      结合一些开源的工具,我们可以实现如下流程,在代码提交的时候,触发认证流程,认证通过以后,代码入库。代码一般保存在git仓库中,开源代码管理工具gitlab就可以实现,触发认证的流程可以使用开源工具Jenkins,然后由Jenkins触发各种质量认证流程,综合得出一个结论,返回给gitlab,最后gitlab根据结果决定是否入库。

    代码质量Verify的流程

      代码质量认证的维度很多,如编译,静态检查,单元测试,复杂度,冒烟测试,集成测试等环节,本文主要关注的维度如下图所示:

                                                           

    • 代码编译:代码能不能正常编译成功,这是代码能不能入库的基本条件
    • 复杂度检查:复杂度的一种度量方式是圈复杂度,简单的理解就是一个函数中有多少个if语句,函数的圈复杂度就是多少,圈复杂度越高说明代码的逻辑越复杂,可维护性就越低,质量越差。
    • 静态检查:静态检查一般要借助专业的检查工具,检查的规则一般是由专家编辑,难度非常大。静态检查的主要目标是,在代码基本功能正常的前提下,找出代码中容易出问题的地方,提前暴露问题。如:数组越界,拷贝越界,资源泄漏,死循环等。几种代码静态检查工具:klocwork、coverity等。
    • 单元测试:对于实际物理验证环境非常复杂的代码,单元测试将是一个神奇。它可以让你直接在代码的编辑环境中,模拟真实的物理环境运行代码,快速的对代码进行调试。
    • 覆盖率:代码的覆盖率一般是在单元测试后进行检查,因为覆盖率的计算需要依赖单元测试的可以执行文件的运行结果。覆盖率 = 单元测试运行的代码行数 / 总的代码行数。代码覆盖率达不到一定指标,就算覆盖率检查不通过。

    体会

      在实际的开发过程中,搭建Verify的环境非常容易,难的是坚持入库的标准不动摇。一般情况下,代码就算Verify不过,也可以强制入库,导致破窗。唯一的方法就是坚持底线不突破,大家一起维护。

  • 相关阅读:
    mssql:tsql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程;触发器trigger;播放器http://www.smartgz.com/blog/Article/956.asp
    str.Replace(" ","");
    DataGrid分页;指定列的总和和平均值;显示鼠标背景色;弹出式窗口;
    .net 面试题 (1)
    数据绑定技术_单值数据绑定示例;将 DataTable,DataSet,DataView,DataReader 绑定到 DataGrid 控件示例;DataBinder.Eval;数组的值赋给ListBox1;Hashtable 绑定到;RadioButtonList;将XML 文件做为数据源绑定到控件
    Lession 17 Always young 保持年轻
    智力面试题
    Lession 16 A Polite request 彬彬有礼的要求
    几道 C 语言面试题
    建表的范例脚本,存储过程中参数的命名
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11395548.html
Copyright © 2020-2023  润新知