简介: 随着业务演进和团队扩张,软件规模和调用链路越来越复杂。如若没有良好的代码检测机制,只依靠功能性验证,团队技术债会越累越高,开发团队往往要花费大量的时间和精力发现并修改代码缺陷,最终拖垮迭代进度、协作效率,甚至引发严重的安全问题。
本文作者: 喻阳,阿里云云效算法专家
文章出处:阿里巴巴DevOps实践指南(指南下载:https://developer.aliyun.com/topic/devops)
在日常研发过程中,我们通常面临的代码资产问题主要分为两大类:代码质量问题和代码安全漏洞。
代码质量问题
代码质量其实是一个老生常谈的话题,但问题是大家都知道它很重要,却又不知道如何去提升和维护这一团队的共同财产。一方面开发人员可能为了功能及时上线,疏忽了对质量的把控,另一方面开发人员编码习惯和程序理解风格各异。长期下来代码质量下降通常会自成因果,因为业务压力大而趋于下降,又因此开发效率下降,进一步加大业务压力,导致恶性循环。
代码安全问题
安全类问题往往隐藏在缺乏安全意识的编码逻辑和未经检测或维护的开源依赖组件中,难以在日常开发和代码评审中被及时察觉。
代码安全问题也可以分两个方面进行分析:
-
编码安全问题,即:安全规范类问题,通过避免不符合规范的代码进入企业代码库,减少隐私数据泄露、注入类风险、安全策略漏洞的出现。
-
依赖安全问题,即:开源依赖三方组件引入的安全漏洞。根据 Synopsys 2020 开源安全报告显示,99%以上的组织使用了开源技术。使用开源组件本身带来的技术交流和站在巨人肩膀上协作、降低开发成本、加快迭代周期、提高软件质量等优势已经不必赘述,但是,开源软件带来一系列便利的同时,也暗藏大量安全风险,据审计,75%的代码库存在安全漏洞,其中 49%包含高危问题,另外 82%的代码库仍在使用超过 4 年的 outdated 组件。
因此,代码安全类问题,一方面也需要进行准入性检查,根据业务场景和规范配置安全编码规范检测和卡点。另一方面需要定期维护,对于新爆发出的安全漏洞进行及时察觉并修复。
解决方案
代码质量检测
工具1:Java 代码规约检测
阿里巴巴在实践过程中,各个组织由于历史隔阂和业务风格差异,工程结构差别很大,代码风格迥异,规范不一,沟通成本大,合作效率低,维护成本高。集团发展到现在的规模,需要专业化的技术集团军迭代式、集约式发展,而不是动辄重复造轮,而真正专业化的团队一定会有统一的开发规约,这代表效率、共鸣、情怀、可持续。
基于上述背景,阿里制定了《阿里巴巴 Java 开发手册》,作为阿里内部 Java 工程师所