静态代码检查分析是DevOps持续集成环节非常重要的组成部分,每个开发项目团队都会制定相应的编码规范,要求编码实现中遵守相应的编写规则。但仅依靠规则是不够的,在实践中还需依赖静态代码检查工具的能力,以助于持续集成自动化程度。
持续集成的前提
中国信息通信研究院联合开展了2019年中国DevOps发展现状的调查,受访企业包括科技、互联网、金融、零售、电信、教育、政府、能源、咨询等多个行业。目前DevOps已经在各行各业逐步落地实践。
在调查报告中看到, 46.65%的企业在组织内较大范围推广DevOps实践并且初见成效,28.07%的企业已经在组织内全面推行DevOps实践,并将其贯穿于软件开发的全生命周期中,整体交付效率得到显著提升。而超半数企业使用敏捷工程实践管理开发项目,近 6 成企业在敏捷工程实践中选择并应用编码规范。既然这么多企业都在探索DevOps,为什么只有部分的企业实现了效率的提升?
事实上,敏捷开发频繁交付的模式对组织的效率也有很高的要求,如果开发流程内的各项工作本身就需要花费大量的时间,交付的越密集最后效率反而越低,所以实践DevOps的前提之一是需要利用自动化为各项工作提速。这里我们针对代码检查的部分进行探讨。
基于持续集成的代码检查思路
在传统的开发模式下,开发人员编写完代码后即更新提交至公共代码仓库,待开发完成之后由专人对所有开发人员提交的代码进行整合以便准备构建,如果构建失败,则需要检查或修改代码。但开发人员对代码及业务逻辑的熟悉程度可能会随着时间推移而下降,修改的难度和工作量也大大增加。而修改完成后还需要重复进行合并、检查工作,延长了集成环节时间。
如果将代码检查工作前置,开发工程师编码完成后及时对代码规范、语法等进行检查分析,让问题暴露在开发初期并及时得到解决,使得编码阶段就让质量最大化接近可发布标准,减少后续集成复杂度和返工修改率。
要求开发人员对每次增量更新的代码进行人工检查测试,不仅效率不高且耗时过长。嘉为蓝鲸DevOps提供的代码检查服务则为静态代码分析提供自动化能力,实现持续集成。
嘉为蓝鲸DevOps代码检查
代码检查中心是蓝鲸DevOps一个开放性代码检查平台,集成基于C/C 、JAVA、C#、JS、Python、PHP、Golang语言的多款开源或自研的代码检查工具,包括Spotbugs、CppLint、CheckStyle、ESLint、StyleCop、Gometalinter、PHPCS、PYLint、圈复杂度、重复率、fireline等。通过内置或自定义配置的检查规则可快速静态检查分析源代码,找出质量问题和漏洞并提供修复建议。
创建代码检查任务,可根据编程语言设置启用的检查工具,可结合实际情况自定义代码检查任务是否需自动定时触发,并支持自定义代码检查屏蔽路径,被屏蔽路径下代码文件将不再进行检查及不会产生告警。
已接入的代码检查工具除默认规则包外,系统还提供了多种风格规则及逻辑规格条目,用户可根据实际情况为代码检查工具配置启用。
代码检查工具根据已启用的规则对代码文件进行静态扫描,实时呈现检查结果并提供告警定位及告警修复提示。
代码检查中心提供任务近期检查结果趋势的数据呈现,用户可通过新告警遗留趋势、历史告警遗留趋势、告警处理人分布等数据了解项目团队的编码质量,以便持续改进。
代码检查任务不仅可单独创建使用,更支持与嘉为蓝鲸DevOps的流水线服务、质量红线服务结合,通过对静态代码检查结果的准入、准出控制,提高代码合规检查和构建效率。