类型转换类规则问题浅析

时间:2022-07-16 05:30:15

类型转换类规则问题浅析

摘要:论文阐述了类型转换所要遵守的规则,介绍此类问题的表现形式、种类,规则检查时的分析要点,并列举了一则航天型号软件中所发生的案例来说明类型转换可能产生数值误差,以及引发的代码质量问题。论文可用于指导航天型号软件代码规则检查。

关键词:编码规范;规则检查;类型转换

1.背景

软件编码规范是程序在编写过程中必须遵守的规则标准,实施什么样的编码规程取决于很多因素,航天型号项目所采用的编码规程最重要的就是软件的可靠性和安全性,编码规程使得开发人员在编程时和测试人员在测试时有章可循,减少因编程语言的因素而导致的错误,降低存在隐患的语言特征可能导致的风险,提高软件质量。

2.代码规则检查方法

软件静态测试包括代码审查、静态结构分析、代码质量度量和代码规则检查等,是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、控制流、数据流、接口和表达式等来测试程序代码的正确性。其中代码规则检查根据各项标准,从代码的安全性、可移植性、可维护性、可测试性等方面,分析查找出程序的欠缺和不足以及错误之处,发现违背程序编写标准的问题,找出程序中不安全、不明确和有歧义的模块,例如语言使用规则变量命名检查、类型检查、函数的声明和定义中使用的标识符不匹配,在函数体内使用外部变量声明,不允许的递归、未使用过变量的变量、数组的初始化不完整等。

代码规则一般分为强制项规则和建议项规则,可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。根据测试方面的经验可以得出,在测试过程中,静态测试比动态测试更有效率,以最小的代价更多更快速地找到问题,通常能够发现不少于70%的编码设计缺陷和程序逻辑问题。代码检查非常的耗费时间,很大程度上依赖于测试人员的知识储备、经验积累以及细心程度,而代码规则检查则依据相关标准和规范,一般由测试工具执行生成检查报告,常用工具包括QAC/QA C+、Testbed、logiscope等,这些工具可以很好地和软件开发工具以及测试工具集成在一起,程序员在编程过程可以同时完成编程规则的检查,测试人员在测试过程中能更全面检查出违反编程规则的代码。航天型号软件通常采用的标准有GJB2725A、航天型号软件c语言安全子集、探月工程探测器系统C语言编程规范等,可以极大的提高测试效率,减少错误的出现概率,确保软件研制质量和可靠性,提高软件研制工程化水平。

3.类型转换规则

代码规则检查中一项重要的规则就是关于类型转换方面的要求,类型转换包括隐式类型转换、强制转换、用舳ㄒ宓淖换和使用帮助程序类的转换。隐式转换是一种安全类型的转换,不会导致数据丢失,如果要存储的值无需截断或四舍五人即可适应变量,则可进行隐式转换,不需要任何特殊的语法。强制转换是显示地通知编译器需要类型转换,要使用强制转换运算符,必须使用强制转换的情况是在转换中可能丢失信息或者其他原因转换可能不成功。另外,编程人员可以自定义一些特殊的方法来执行用户定义的转换,从而使不具有基类一派生类关系的定义类型之间可以显式和隐式转换。

程序员在软件编写时经常会使用类型转换,类型转换一方面提高了编程的灵活性,另一方面,也带来了一定的安全隐患,使用不恰当会导致软件异常。因此类型转换一般遵守以下几条原则:禁止将类型长度较小的指针强制转换为类型长度较大的指针、禁止对指针变量使用强制类型转换赋值、有符号和无符号之间不得隐式转换、宽类型不得向窄类型隐式转换、整型和浮点类型之间不得隐式转换、函数参数不得隐式转换、函数的返回表达式不得隐式转换、复杂表达式不得隐式转换等。

上一篇:中小企业合同管理系统的设计与研发 下一篇:我国环保部门绿色信贷监管探讨