zoukankan      html  css  js  c++  java
  • C语言代码质量保证

    1.编码要注意资源的使用,看到申请就要留意什么地方回收;正常流程结束要回收,出现异常提前返回也要回收。
    2.避免异步处理过程中保存的变量失效,如从芯片中拿到IOCB的指针,但此时可能不处理,在后续异步流程中处理该IOCB;此时IOCB可能已经释放,因此开始保存IOCB的值而非指针。
    3.强制类型转换时,原始空间大小需要大于等于转换成的数据结构大小,如fc2_send_ba_acc中:
    abts_reply = (fc2_cmd_t *)fcxt->usfc_drv_wspace.fcb_buff;
    fcb_buff所指向的空间的大小必须大于等于fc2_cmd_t结构体的大小,考虑到fc2_cmd_t 可能添加结构体成员等进行扩展,需要添加
    Assert判断:
    ASSERT(fcxt->usfc_drv_wspace.fcb_len >= sizeof(fc2_cmd_t ))
    4.日志大小过大时需截断,避免无限增长;考虑客户长期 运行情况;
    5.QFC_ASSERT(BYTES_IN_IOCB == sizeof(umq_iocb_pkt_t));
    6.调试分支命名加上自己的名字,调试完成及时删除,避免搞的公共gitlab一团糟
    7.日志打印,避免重复打印造成冲日志;
    8.问题交接:设备信息(IP用户名密码等)、当前分析结论、日志关键字等,尽量避免下环节分析人重复耗费工作量获取已知信息;
    10.项目常用联系人(软件,硬件,测试等等,项目管理,质量,物料);
    11.向芯片发送的IOCB请求,如果芯片不返回应有超时机制进行异常处理。
    12.公共层通过函数指针调用的芯片层驱动函数,返回值应与公共层匹配,不要用芯片层自定义的错误码;
    13.git 提交时按功能点整合,合并编译错误等提交;用于构建版本的commit做好标签
    14.跟芯片相关的一些SWITCH的defaut分支中触发FW DUMP,比如返回的CMPL_IOCB中的status在芯片手册中未定义
    15.git commit log中添加bug号,bug注释中添加commit id
    16.linkup时发出请求添加的等待远端回应的定时器在linkdown时要处理掉。申请释放资源的流程可以先写释放流程再写申请流程;

  • 相关阅读:
    一个进程间同步和通讯的 C# 框架
    C# 程序员最常犯的 10 个错误
    《C#并发编程经典实例》笔记
    C# BackgroundWorker 详解
    C# Excel导入导出
    List实现行转列的通用方案
    C# 开发者最经常犯的 8 个错误
    Intellij IDEA 查找接口实现类的快捷键
    target runtime com.genuitec.runtime.genuitec.jee60 is not defined
    java.io.WinNTFileSystem
  • 原文地址:https://www.cnblogs.com/leituhaomo/p/15695725.html
Copyright © 2011-2022 走看看