CN110990281B - 一种自动化静态分析方法 - Google Patents

一种自动化静态分析方法 Download PDF

Info

Publication number
CN110990281B
CN110990281B CN201911227859.5A CN201911227859A CN110990281B CN 110990281 B CN110990281 B CN 110990281B CN 201911227859 A CN201911227859 A CN 201911227859A CN 110990281 B CN110990281 B CN 110990281B
Authority
CN
China
Prior art keywords
file
tested
analysis
static analysis
files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911227859.5A
Other languages
English (en)
Other versions
CN110990281A (zh
Inventor
苗晓旭
曾佩杰
胡玉露
朱文钊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Helicopter Research and Development Institute
Original Assignee
China Helicopter Research and Development Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Helicopter Research and Development Institute filed Critical China Helicopter Research and Development Institute
Priority to CN201911227859.5A priority Critical patent/CN110990281B/zh
Publication of CN110990281A publication Critical patent/CN110990281A/zh
Application granted granted Critical
Publication of CN110990281B publication Critical patent/CN110990281B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

一种自动化静态分析方法,包括:提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;对测试工具进行测试环境配置,以提供第二待测文件的运行环境;对第二待测文件执行静态分析:采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告。

Description

一种自动化静态分析方法
技术领域
本发明属于软件测试领域,具体涉及一种自动化静态分析方法。
背景技术
软件研制过程中,软件测试是不可或缺的重要环节。软件测试是软件质量保证的关键步骤。美国质量保证研究所对软件测试的研究结果表明:越早发现软件中存在的问题,开发费用就越低;在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍;软件质量越高,软件发布后的维护费用越低。测试过程中,越早发现问题,修正问题需要投入的人力物力越少。
软件研制阶段:当软件编码完成一个版本后,进入软件测试环节,首先需要做代码的单元静态测试即静态分析。软件静态分析后,测试人员把编码规则问题反馈给软件编码人员。软件编码人员对测试问题确认、更改。
软件维护阶段:随着需求变更、代码完善、问题修复等,软件代码版本升级是不可避免的。多个代码维护人员分别从SVN版本库获取当前最新版本代码,并在此基础上修改代码,提交版本库,完成版本升级。版本升级后,测试人员对新版本代码做静态分析。软件静态分析后,测试人员把编码规则问题反馈给软件编码人员。软件编码人员对测试问题确认、更改。
现阶段,在软件研制阶段:编码人员在一个版本完成后修改大量编码规则问题会耗费较大的人力成本,进而造成成本浪费;软件维护阶段:编码人员把修改的代码提交版本库后,再修改编码规则问题,同样会造成成本浪费。
发明内容
本发明的目的:一种自动化静态分析方法。该方法使用python语言调用Testbed静态分析工具实现。
本发明的技术方案:提供一种自动化静态分析方法,所述静态分析方法包括
提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;
对测试工具进行测试环境配置,以提供第二待测文件的运行环境;
对第二待测文件执行静态分析:采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告。
进一步地,所述比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
进一步地,所述测试工具为Testbed测试工具;在进行测试环境配置时,对所述第二待测文件配置适用的头文件、编译宏、编码规则集、代码评审报告、质量评审报告和数据分析报告。
进一步地,所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析。
进一步地,所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,添加第二待测文件时,每20个第二待测文件执行一次添加操作,以避免命令行过长带来的异常中断问题。
进一步地,在对每20个第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名循环执行字符串拼接操作,循环次数为20次。
进一步地,所述执行静态分析包括:
对测试工具设置测试参数,选择配置编码规则检查、复杂度分析、函数信息分析、数据流分析、交叉索引、信息流分析、数据对象分析参数中的一个或多个;
通过对比第二待测文件和设定的编码规则集,确认第二待测文件是否违反编码规则;
通过递归遍历第二待测文件中的函数,筛选不符合质量模型的函数,获取并记录第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息。
进一步地,根据记录的第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息生成静态分析报告;
所述静态分析报告包括分析范围报告、测试管理报告、代码评审报告、质量评审报告、设计评审报告、数据流报告、数据对象分析报告、静态调用关系图、用户自定义类型报告、静态控制流图中的一个或多个。
本发明的有益效果:本发明通过访问SVN服务器和对适用格式的文件筛选,实现待测文件的自动化提取,能够有效地提高文件提取效率,降低人力成本;通过配置和调用测试工具自动化运行实现静态分析自动化,避免了测试工具界面操作的繁琐步骤,能够提高静态分析效率,降低成本。本发明所述的自动化静态分析方法能够改善当前型号软件研制状态,实现代码随写随测,提高测试效率,减少人力成本,从而缩短软件研制周期,切实改善代码质量和规范。
附图说明
图1为Testbed测试工具配置流程图;
图2为静态分析自动化执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为静态分析自动化执行流程图,如图2所示,本实施例,提供一种自动化静态分析方法,所述静态分析方法包括以下步骤:
(1)文件和测试工具配置
图1为Testbed测试工具配置流程图,如图1所示,对测试工具进行测试环境配置,以提供第二待测文件的运行环境。所述测试工具为Testbed测试工具。在进行测试环境配置时,对所述第二待测文件配置适用的头文件、编译宏、编码规则集、代码评审报告、质量评审报告和数据分析报告。通过python脚本读取INI配置文件,获取SVN原始待测文件路径、测试工具工作路径、待测文件版本号信息。
(2)提取待测文件:
对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;
进一步地,所述比较SVN版本库中代码发生变更的文件包括:首先通过读取配置文件中的原始待测文件版本信息获取待比较的两个版本号;然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件。
(3)对第二待测文件执行静态分析
采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告。
进一步地,所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析。
进一步地,所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,添加第二待测文件时,每20个第二待测文件执行一次添加操作,以避免命令行过长带来的异常中断问题。
进一步地,在对每20个第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;然后,对添加指令操作符和第二待测文件全名循环执行字符串拼接操作,循环次数为20次。
进一步地,所述执行静态分析包括:
设置测试参数,选择配置编码规则检查、复杂度分析、函数信息分析、数据流分析、交叉索引、信息流分析、数据对象分析参数中的一个或多个;
通过对比第二待测文件和设定的编码规则集,确认第二待测文件是否违反编码规则;
通过递归遍历第二待测文件中的函数,筛选不符合质量模型的函数,获取并记录第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息。
进一步地,根据记录的第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息生成静态分析报告;所述静态分析报告包括分析范围报告、测试管理报告、代码评审报告、质量评审报告、设计评审报告、数据流报告、数据对象分析报告、静态调用关系图、用户自定义类型报告、静态控制流图中的一个或多个。
以上所述,仅为本发明的具体实施例,对本发明进行详细描述,未详尽部分为常规技术。但本发明的保护范围不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以所述权利要求的保护范围为准。

Claims (4)

1.一种自动化静态分析方法,其特征在于,所述静态分析方法是使用python语言调用Testbed静态分析工具实现的;所述静态分析方法包括:
提取待测文件:对SVN服务器进行访问,比较SVN版本库中代码发生变更的文件,并对代码发生变更后的文件进行文件格式识别,提取出C文件作为第一待测文件,对第一待测文件执行去换行符操作得到第二待测文件,将第二待测文件传送给测试工具的静态分析执行单元;
对测试工具进行测试环境配置,以提供第二待测文件的运行环境;
对第二待测文件执行静态分析:采用配置之后的测试工具对所述第二待测文件进行静态分析处理;所述静态分析处理包括创建集合、添加第二待测文件和执行静态分析,执行静态分析之后生成静态分析报告;
其中,所述比较SVN版本库中代码发生变更的文件包括:
首先通过读取配置文件中的原始待测文件版本信息获取待比较的两个版本号;
然后对不同版本号对应的原始待测文件执行比较操作,获取版本差异,提取差异文件;
所述对代码发生变更后的文件进行文件格式识别包括:从SVN服务器中导出提取的差异文件;按行读取差异文件并筛选出适用格式的C文件作为第一待测文件;
所述创建集合包括:获取当前系统时间以给集合命名;然后给命名后的集合配置分析属性,根据第二待测文件间的互相关系需求确定第二待测文件的分析属性;所述分析属性包括孤立分析或工程分析;
所述添加第二待测文件包括:向配置分析属性后的集合添加第二待测文件,添加第二待测文件时,每20个第二待测文件执行一次添加操作,以避免命令行过长带来的异常中断问题;
在对每20个第二待测文件执行添加操作时,首先按行读取第二待测文件,去除行尾的换行符,以获取第二待测文件全名;
然后,对添加指令操作符和第二待测文件全名循环执行字符串拼接操作,循环次数为20次。
2.根据权利要求1所述的自动化静态分析方法,其特征在于,所述测试工具为Testbed测试工具;
在进行测试环境配置时,对所述第二待测文件配置适用的头文件、编译宏、编码规则集、代码评审报告、质量评审报告和数据分析报告。
3.根据权利要求1所述的自动化静态分析方法,其特征在于,所述执行静态分析包括:
对测试工具设置测试参数,选择配置编码规则检查、复杂度分析、函数信息分析、数据流分析、交叉索引、信息流分析、数据对象分析参数中的一个或多个;
通过对比第二待测文件和设定的编码规则集,确认第二待测文件是否违反编码规则;
通过递归遍历第二待测文件中的函数,筛选不符合质量模型的函数,获取并记录第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息。
4.根据权利要求1所述的自动化静态分析方法,其特征在于,
根据记录的第二待测文件中所有函数的函数信息、复杂度信息、数据流信息、交叉索引信息、数据对象参数信息生成静态分析报告;
所述静态分析报告包括分析范围报告、测试管理报告、代码评审报告、质量评审报告、设计评审报告、数据流报告、数据对象分析报告、静态调用关系图、用户自定义类型报告、静态控制流图中的一个或多个。
CN201911227859.5A 2019-12-04 2019-12-04 一种自动化静态分析方法 Active CN110990281B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911227859.5A CN110990281B (zh) 2019-12-04 2019-12-04 一种自动化静态分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911227859.5A CN110990281B (zh) 2019-12-04 2019-12-04 一种自动化静态分析方法

Publications (2)

Publication Number Publication Date
CN110990281A CN110990281A (zh) 2020-04-10
CN110990281B true CN110990281B (zh) 2023-11-07

Family

ID=70090042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911227859.5A Active CN110990281B (zh) 2019-12-04 2019-12-04 一种自动化静态分析方法

Country Status (1)

Country Link
CN (1) CN110990281B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN104424088A (zh) * 2013-08-21 2015-03-18 腾讯科技(深圳)有限公司 软件的测试方法及装置
CN104615540A (zh) * 2015-02-10 2015-05-13 上海创景计算机系统有限公司 代码规范管理系统
CN104850311A (zh) * 2015-05-26 2015-08-19 中山大学 一种移动应用版本更新的图形化说明生成方法及系统
CN105302710A (zh) * 2014-07-03 2016-02-03 腾讯科技(深圳)有限公司 一种确定需要回归测试的测试用例的方法和装置
CN106294096A (zh) * 2015-05-13 2017-01-04 腾讯科技(成都)有限公司 一种信息处理方法及装置
CN106294156A (zh) * 2016-08-11 2017-01-04 北京邮电大学 一种静态代码缺陷检测分析方法及装置
US9652615B1 (en) * 2014-06-25 2017-05-16 Symantec Corporation Systems and methods for analyzing suspected malware
CN109542759A (zh) * 2018-09-30 2019-03-29 惠州市德赛西威汽车电子股份有限公司 一种Linux平台稳定性测试的方法
CN109871319A (zh) * 2019-01-18 2019-06-11 深圳壹账通智能科技有限公司 项目代码扫描方法、装置、计算机设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10681060B2 (en) * 2015-05-05 2020-06-09 Balabit S.A. Computer-implemented method for determining computer system security threats, security operations center system and computer program product

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN104424088A (zh) * 2013-08-21 2015-03-18 腾讯科技(深圳)有限公司 软件的测试方法及装置
US9652615B1 (en) * 2014-06-25 2017-05-16 Symantec Corporation Systems and methods for analyzing suspected malware
CN105302710A (zh) * 2014-07-03 2016-02-03 腾讯科技(深圳)有限公司 一种确定需要回归测试的测试用例的方法和装置
CN104615540A (zh) * 2015-02-10 2015-05-13 上海创景计算机系统有限公司 代码规范管理系统
CN106294096A (zh) * 2015-05-13 2017-01-04 腾讯科技(成都)有限公司 一种信息处理方法及装置
CN104850311A (zh) * 2015-05-26 2015-08-19 中山大学 一种移动应用版本更新的图形化说明生成方法及系统
CN106294156A (zh) * 2016-08-11 2017-01-04 北京邮电大学 一种静态代码缺陷检测分析方法及装置
CN109542759A (zh) * 2018-09-30 2019-03-29 惠州市德赛西威汽车电子股份有限公司 一种Linux平台稳定性测试的方法
CN109871319A (zh) * 2019-01-18 2019-06-11 深圳壹账通智能科技有限公司 项目代码扫描方法、装置、计算机设备及存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Avijit Mandal.A Generic Static Analysis Framework for Domain-specific Languages.《2018 IEEE 23rd International Conference on Emerging Technologies and Factory Automation (ETFA)》.2018,1-6. *
L.S. Chin.A Survey of Software Testing Tools for Computational Science.《Software Engineering Group Computational Science & Engineering Department》.2007,1-24. *
史莹莹;程方铎;费清春.基于TestBed的雷达软件接口测试研究与应用.信息化研究.2015,(第06期),1-5. *
基于TestBed的雷达软件接口测试研究与应用;史莹莹;程方铎;费清春;;信息化研究(第06期);1-3 *
邹会荣.基于LDRA Testbed的飞机中央维护系统覆盖测试.《计算机软件及计算机应用》.2010,1-4. *

Also Published As

Publication number Publication date
CN110990281A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
US10459695B2 (en) Correction of code errors using machine learning
CN103150249B (zh) 一种自动化测试的方法和系统
US11775414B2 (en) Automated bug fixing using deep learning
CN111382070B (zh) 兼容性测试方法、装置、存储介质和计算机设备
CN108345532A (zh) 一种自动化测试用例生成方法和装置
US11385898B2 (en) Task orchestration method for data processing, orchestrator, device and readable storage medium
CN103164328A (zh) 一种业务功能的回归测试方法、装置及系统
CN109740457B (zh) 一种人脸识别算法评测方法
US11544176B1 (en) Systems and methods for automatically assessing and conforming software development modules to accessibility guidelines in real-time
CN104657274A (zh) 软件界面测试方法及装置
CN111258876B (zh) 一种微服务架构下的精确回归测试方法及装置
CN110990282B (zh) 一种自动化单元测试方法
CN110990281B (zh) 一种自动化静态分析方法
CN113672509A (zh) 自动化测试方法、装置、测试平台及存储介质
CN113641573A (zh) 基于修订日志的程序分析软件自动化测试方法及系统
CN114253867B (zh) 基于神经网络模型的自动化测试方法、装置及系统
CN117421009B (zh) 信号代码生成方法、装置、终端设备以及存储介质
CN111651346B (zh) 前端组件的测试方法、装置、存储介质及计算机设备
CN110765020B (zh) 基于领域知识的测试用例生成方法
CN115599469A (zh) 交易执行方法及装置
CN115599418A (zh) 一种升级vb.net代码的方法及系统
CN117931150A (zh) 自动修正代码风格的方法及装置
CN115904946A (zh) 一种基于MoMuTUML的测试用例自动生成方法及系统
CN116010278A (zh) 软件回归测试方法、装置、电子设备和存储介质
CN116185883A (zh) 测试用例生成方法、测试系统、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant