25
社区成员
发帖
与我相关
我的任务
分享静态代码分析进行测试时不需要实际执行代码,因此,它可以对特定时间范围内提交的代码更改进行完整分析。此外,静态代码分析不需要编写特定的测试用例。为了有效补充持续集成,静态代码分析工具必须是快速、可扩展和自动化的。
依靠Jenkins持续集成的功能,通过集成静态分析工具、单元测试工具、质量门控制、确认测试等工作,自动完成源代码质量的检测评估,由管理人员决定软件产品是否达标,对满足要求的软件产品进行自动化打包,甚至自动发布。

|
运行流程 |
流程简述 |
|
CI环境准备 |
搭建Jenkins环境 |
|
获取代码 |
通过Jenkins插件获取代码仓库中最新提交的源码 |
|
静态分析 |
通过静态分析工具对代码进行静态缺陷检测和分析 |
|
单元测试 |
通过单元测试工具对代码进行函数单元测试 |
|
质量门控制 |
集成质量门脚本对质量门进行控制 |
|
确认测试 |
对比脚本预设指标进行确认测试判断 |
|
打包 |
对符合要求的代码进行打包 |
3.3.1 自定义流水线
Jenkins是一个流行的自动化构建和集成工具,它可以帮助开发人员和团队实现高效的软件开发流程,同时自定义流水线管理是Jenkins的重要功能之一,允许用户创建和管理自定义流水线以便更好满足自身定制化需求。

图2 Jenkins流水线示意图
3.3.2 静态分析工具集成
通过集成SpecChecker等多种静态分析工具,自动对被测软件代码进行扫描和分析,发现代码中潜在的风险和缺陷,开发人员可以尽早修正以避免可能存在的事故,从而保障软件的代码质量。

图3 SpecChecker集成命令行接口

图4 SpecChecker分析结果
3.3.3 单元测试工具集成
通过集成单元测试工具,可以在软件编码阶段的早期有效发现缺陷,从而帮助开发人员提高代码质量、改善设计、提高可维护性、改进开发流程、减少回归测试、提高开发效率。
3.3.4 质量门控制
通过集成质量门脚本,确保产品或项目在每个关键阶段满足质量标准,从而减少后期错误和缺陷,提高项目的质量和成功率。它也有助于改进项目管理和协作,并提高团队的效率和产出。
3.3.5 自动化确认测试
通过集成确认测试脚本,由用户来判断软件项目的各指标质量是否达标。
3.3.6 自动化打包
利用自动化打包advanced installer工具,对经过层层质量把关后符合要求的软件制品进行自动打包。
3.3.7 分布式部署
为增加平台的可靠性、可拓展性、增强性能、具备弹性,软件产品自动化研制平台要支持分布式技术,充分利用各节点不同操作系统的特性和计算能力,将子任务分发到不同子节点中去,以达到最终完成软件产品研制的能力。

图5 Jenkins主从架构示意图
3.3.8 容器化部署
为帮助开发人员快速构建、测试和部署应用,同时也可以让运维人员更加高效地管理和维护应用程序,软件产品自动化研制平台要支持容器化能力,方便后续动态添加新的其他分析工具。
3.4.1 工具介绍
SpecChecker是北京轩宇信息技术有限公司自主研发的一个基于源代码静态技术的代码检查工具,支持代码规则检测、运行时错误检查、典型故障模式检查和代码度量等功能。
SpecChecker可用来检测编码错误和安全编码标准符合性,可在已有代码和新开发代码的任何开发阶段使用,通过编译时的检查有效改善代码质量,降低程序失效的风险。SpecChecker还可用于辅助代码审查,利用可视化的的代码结构分析提高审查效率。

图6 SpecChecker主界面
3.4.2 工具功能
3.4.2.1 代码安全规则检查
SpecChecker支持的规则覆盖《航天C语言可信编程规范》、《五院编程规范2007版》、《国军标C语言编程安全子集8114-2013》、《国军标航天型号软件C语言安全子集5369-2005》和《921C语言规范》等航天军工常用编程规范以及《CERT-C-2016》、《CWE》、《MISRAC2012(C99)》、《MISRAC2012(C90)》、《MISRACPP2008》、《AUTOSARCPP14》、《ADA静态分析规则集》、《PYTHON静态分析规则集》、《JAVA静态分析规则集》等。
3.4.2.2 运行时错误检查
对于在软件编码时没有编译错误,但运行时可能导致程序崩溃的问题,例如除零错误、内存重复释放、SQL注入等,SpecChecker提供了针对这些问题的单独检查,目前共支持常见20项运行时错误的检测。
3.4.2.3 典型故障模式检查
《航天嵌入式软件故障模式集合》,该集合针对航天软件中曾经出现过的典型问题进行了总结和固化,目前共收录了300项典型故障模式。SpecChecker目前提供针对其中300项故障的自动检测。
3.4.2.4 代码度量分析
SpecChecker支持对C/C++/Python/Java语言代码的度量分析。
代码规模(可执行行数);
基本复杂度;
函数入口数、出口数;
预处理类度量;
注释率;
…。
代码行;
McCabe复杂度;
函数被调用次数;
函数调用次数;
最大嵌套块数
…。
代码可执行行数
代码注释行数
多行字符串行数
程序词汇表
可维护性指数
…。
类的圈复杂度
函数圈复杂度
外部变量数
外部类数
类内函数间的耦合关系
…。
3.4.2.5 共享变量与数据竞争分析
在安全关键领域的嵌入式软件中,由于中断并发导致的数据竞争问题十分突出。然而,目前缺乏有效的方法和工具,在工程实践中多通过人工审查进行测试,工作效率低且遗漏率较高。
SpecChecker是目前唯一一款支持中断驱动型程序共享变量与数据竞争分析的商业工具。给定程序中并发执行的入口函数,SpecChecker利用全局调用关系分析能够找出并发程序中所有的共享变量;进一步利用全面的路径分析和变量访问序模式分析能够发现潜在的原子性问题。SpecChecker利用问题的表象特征值进行统计排序,将最可能发生的、最严重的缺陷排在分析结果的最前列,可为进一步的人工审查提高效率。
3.4.2.6 可定制的中文测试报告
SpecChecker提供可定制的、可独立分发的中文测试报告,极大程度地满足用户个性化文档工作的需求。(生成两种静态分析报告)支持的格式有:
欢迎访问产品网站:北京轩宇信息技术有限公司--高可信工具软件