编辑: ACcyL | 2019-07-02 |
1 号金玉兰广场西楼
902 室Rm.
902, Golden Magnolia Plaza, W.
1 Dapu Road, Huangpu District
200023 Shanghai, P.R. China www.parasoft.com 第1页导读编码规则帮助您提高代码质量, 生成一致代码, 防止易错编码风格. Robert Buckley 对MISRA-C 和 编码规则添加了一个注释. 本文作者 JunHo 和YoonKyu 是三星电子软件实验室的工程师. 编码规则一致性检查 为克服严峻的软件开发挑战并同时减少开发成本,软件工程领域已经形成了自己的规则惯例,如需求 工程分析,设计技术,制程开发,等等.许多规则惯例都应用于开发的实际执行阶段,如编码规则,代码 重构,代码检查,静态分析.其中,编码规则是基础,它能够很好地提高代码可靠性,帮助不同的开发人 员都生成一致的代码,并防止易出错编码方式的出现. 三星电子重点着眼于通过定义并强制执行内部编码规则来提高代码质量. 我们 QA 部门使用了一个编 码标准一致性检查器来实现这个目的,但我们并没有规范全部地将这个初始检查工具应用到我们的软件开 发过程中去.因为这个工具功能不强,所以我们只是在最后的审核阶段才偶尔用一下它.因此我们只看到 了它对代码质量的提高起到了一丁点儿的作用. 最近,我们评估了 Parasoft 的C++TEST,并应用它到我们正在进行的开发项目 MOBILE 中.在 本文中,我们将从中学习到的经验和大家一起分享.在本文中,一个 编码规则条目 是指一个在公司编 码规则和一致性文档中描述的总的描述条,一个 编码规则 (或 规则 )是指一个在自动化编码规则工 具中制订的具体的编码规则. 三星电子是一个主要的消费电子公司.尽管三星以主营硬件起家,软件也迅速成为了我们一个主要的 关注中心,正如大多数其他的消费电子厂商一样.这个 MOBILE 项目是三星的一个电子 C/C++开发项 目,它是要开发出一个用于移动设备的可重用、可扩展的面向对象的软件框架.我们的 QA 部门是一个独 立出来专门测试三星电子开发出来的软件的.我们投入了相当多的时间来评估自动化工具,以求能最大地 减少重复的工作量. C/C++编码标准 这个 MOBILE 项目使用一套源于总的三星编码规则并针对这个项目特别指定的编码规则.这套 MOBILE 项目规则可以通过改变语言变量和其他开发约束条件来进行改写.比如,在MOBILE 项目中的 上海市打浦路
1 号金玉兰广场西楼
902 室Rm. 902, Golden Magnolia Plaza, W.
1 Dapu Road, Huangpu District
200023 Shanghai, P.R. China www.parasoft.com 第2页一些编译器不支持对异常情况的处理.因此,当一个对象的构造器被调用的时候,不可能侦测到资源分配 失败.为解决这个问题,我们在 MOBILE 项目中采用了大家熟知的 two-phase object construction(二 阶段对象构造)技术(在MOBILE 项目编码规则中有描述) :将一个对象的初始化分为对象分配阶段和资 源分配阶段,以通过一个值的方式返回异常情况(见代码清单 1) . class ResourceManager { ResourceManager();
// allocate only object result Construct();
// allocate resources // '
result'
contains error code };
int main() { // Two phase construction ResourceManager aObject;
if (aObject.Construct() == FAIL) printf( Resource allocation is failed );