10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

中国工商银行软件开发中心代码扫描建设之路

中国工商银行软件开发中心

  • 2022-06-27
  • 本文字数:2115 字

    阅读完需:约 7 分钟

中国工商银行软件开发中心代码扫描建设之路

为满足不断变化和日益增长的市场需求,中国工商银行软件开发中心(以下简称工行软开)一直在探索提升组织级 IT 效能,DevOps 作为近年来兴起的软件工程文化和实践,目标是缩短开发周期,提高部署频率和更可靠的发布,这与工行软开的诉求不谋而合。随着工行软开 DevOps 转型深入推进,产品交付质量和速度都在快速提升,软件质量管控作为 DevOps 转型中的重要组成部分,代码扫描手段在保障软件高质量交付过程中起到了重要作用。

一、代码扫描中心建设背景


为了保证产品质量,工行软开基于研发过程建设了强制执行的质量门禁,以及完善的测试体系,有效地守护了软件质量。但是随着业务研发规模的不断增长,为满足不断变化和日益增长的市场需求,对软件质量守护和效能提升提出了更高要求,对研发赋能、统一质量视图、质效度量及工具链支撑等全流程代码质量管控有迫切需求。主要体现在以下 4 个方面:

编码辅助能力不足


质量门禁平均每月强制打回大量静态代码扫描问题,先污染后治理成本高,问题事后治理困难,急需编码实时辅助工具,降低编码成本,提高本地编码质量。

扫描工具共享生态不完善


代码扫描组件、规则库建设不统一,共享生态不够完善,存在规则重复建设问题,需要一个标准化的扫描工具管理平台。

代码质效数字化管理待完善


缺少开发者视角的全面代码质效数字化视图,提升团队代码质量缺少统一科学数据指导,无法客观全面的挖掘团队能力短板,帮助开发提升研发效能。

工具链支撑不够完善


随着数字化转型的不断推进,应用开发需求快速增长,同时面临的安全风险也越来越大,为实现各类漏洞排查、技术规范检查快速高效,保证研发质量,急需进一步提升工具链排查的自动化能力。

二、代码扫描中心建设思路


针对以上问题,建设代码扫描中心,通过提供 IDE 编码辅助、建设扫描工具共享生态及数字化质效度量体系,实现研发全流程的工具支撑及数字化的精准质效度量,从而全面提升研发效能。


三、代码扫描中心实施方案


根据扫描中心建设思路,主要对以下六个领域实施建设:

建设本地研发助手


建设研发助手,打造一个集合多种编码辅助功能的本地插件,在编码阶段提供实时代码质量检查及标准资产快速检索复用的能力,有效辅助开发在编码过程中潜移默化的学习并提升开发能力,同时提高编码质量、提升编码效率,赋能开发。


利用编码阶段的实时代码质量检查,将代码扫描由编码后向编码中推进,在编码阶段提供实时规范检查及修改建议,不仅解决了编码后缺陷治理困难的问题,同时帮助开发在编码中不断学习并提升开发能力。另外,对标准化代码及构件进行管控,帮助开发人员完成快速引入,辅助标准化资产编写、快速上传,支持开发人员修改和完善标准化资产,实现标准资产快速检索复用,提升开发人员效能。

建设自助代码扫描流水线


通过搭建云端的基础运行环境,将 JENKINS、执行机等全部云化管理,业务代码逻辑与基础运行环境完全解耦,实现环境按需自动弹性伸缩,为全行代码的快速扫描提供了有力保障。


建设可复用、可定制、可编排的自助代码扫描流水线前后端服务,实现流水线调度、编排等核心功能,为基础组件提供自助快速串接流水线能力,将代码资产、代码缺陷等进行集中管理,为技术管理、安全管控、测试质量管控提供一体化支撑能力,有效提升专项排查效能、团队自查能力。


统一管理扫描规则


通过对扫描规则进行标准化的统一管理,提升规则可读性及可执行性,实现规则资源合理利用。首先,对规则进行分层管理,根据开发组织层级和专项内容对规则进行分级分类管理,按照不同方向对规则进行分层,同时增加关键字方便查询使用。其次,对历史规则进行信息完善,增加规则标签信息,如唯一标识、大小分类、背景来源、扫描范围、作用效率等,帮助完善规则信息。最后,建立规则关系图,剔除无效规则、重复规则,将分层规则向上集成,按照开发组织层级进行规则继承管理,对于强制级别规则必须启用,实现规则的标准化管理。


通过对扫描规则的分层管理、信息完善和建立规则关系图,为工行软开提供统一的标准化扫描规则管理,避免产生规则孤岛状态,减少资源浪费,有效提升研发效能。

建设扫描工具共享生态


建设统一的扫描工具管理平台,支撑扫描工具共建共享,有效避免重复建设。通过提供统一快捷的扫描工具管理页面,实现扫描工具的审批上线、快速配置、实时更新等。同时将扫描引擎与扫描规则解耦部署,扫描规则更新实时生效,实现扫描规则热加载。

建设质效度量全视图


覆盖本地编码、持续集成、持续部署、持续交付的多维度度量指标,建设质效度量全视图,为团队提供全面直观的数字化代码质量度量,为开发提供个人维度度量视图,助力团队和个人挖掘开发能力短板、聚焦能力成长,为提升开发效能提供有力抓手。

组建虚拟专家团队


成立流水线专家团队,对扫描工具接入进行准入管控,在技术管理、安全管控、测试质量管控等领域提供专业的组件接入审查及支持,保障流水线运行安全稳定。

四、未来展望


依托 DevOps 理念,工行软开金融科技全面建立需求、研发、投产、生产运营统一协作的研发运营一体化机制,不断提高研发供给能力和研发质效,优化 DevOps 工具体系和流程,建设高效能、自动化的工具链。未来将继续聚焦安全稳定和快速交付的目标,持续完善 DevOps 研发运营一体化能力,不断推进数字化转型进程。

2022-06-27 14:529569

评论 3 条评论

发布
用户头像
挺好的, 向上汇报的好材料
2022-09-14 10:25 · 上海
回复
用户头像
一大堆废话,无任何干货
2022-07-01 09:46
回复
用户头像
期待贵行的法务团队,也来介绍下工作心得
2022-06-29 15:16
回复
没有更多了
发现更多内容

架构训练营模块三作业

沈益飞

架构训练营 架构师训练营 4 期

性能分析之系统资源饱和度

zuozewei

Linux 性能分析 12月日更

运维意识

搬砖的周狮傅

开发感想

架构训练营第四期 作业3

supermenG

架构师训练营 4 期

28天写作感想

Tiger

28天写作

28天写作挑战复盘

圣迪

灵魂洗礼

架构实战营 - 模块 3 课后作业

tony

关于Kafka分区leader迁移的感想

Kafka中文社区

Mybatis使用的9种设计模式,你知道几种

编程江湖

设计模式 JAVA开发

发现新视界——视觉计算将如何改变生产方式

阿里云弹性计算

阿里云 云栖大会 视觉计算

给弟弟的信第28封|那些在大学赚到第一桶金的大神

大菠萝

28天写作

ClickPaaS 胡柏:开源不是童话,它背后的商业逻辑正是其哲学的另一面体现 I OpenTEKr 大话开源 Vol.3

OpenTEKr

大话开源

学生管理系统架构文档

皓月

架构实战营 #架构实战营 「架构实战营」

Thinking Agile 2021,Being Agile 2022

Bruce Talk

敏捷 随笔 Agile

spring 源码解析一、概述

xzy

Java spring spring源码

拾起卖数字化平台亮相2021全国废钢铁大会引热烈反响 数字化建设助推废钢产业高质量发展

InfoQ 天津

Golang的通道复用上手(三)

liuzhen007

go语言 28天写作 12月日更

瞰源 | 假领子的流行经济学看开源

OpenTEKr

狄安瞰源

正转与反转(30/28)

赵新龙

28天写作

实践解析可视化开发平台FlinkSever优势

华为云开发者联盟

flink kafka 流计算 华为FusionInsight MRS FlinkSever

如何用 Python 自动发送微博?

老表

Python selenium 跟老表学云服务器 自动化实战

2021年,你读过哪些书?(29/28)

赵新龙

28天写作

比格云CEO 诸葛辉:本土开源力量的崛起,正为底层技术基础设施掀起一股中国风 I OpenTEKr 大话开源 Vol.4

OpenTEKr

大话开源

瞰源 | 别逗了,同学!开源不是点赞送礼

OpenTEKr

狄安瞰源

直击前沿技术:云原生应用低代码开发平台实践

博文视点Broadview

为什么 MongoDB 使用 B 树

编程江湖

mongodb

热更新技术在游戏 SDK 中的实践

bilibili游戏技术

NFS(网络文件系统)配置(Ubunut/Deepin等系统)

SkyFire

Linux NFS

mysqlx学习

SkyFire

mysqlx

关于net6中宿主模型的一点点看法

喵叔

28天写作 12月日更

模块三作业

whoami

「架构实战营」

中国工商银行软件开发中心代码扫描建设之路_文化 & 方法_InfoQ精选文章