美文网首页
业务C代码关键审核点总结

业务C代码关键审核点总结

作者: 打出了枫采 | 来源:发表于2019-10-18 20:56 被阅读0次

工作有几年了,定位过许多起业务软件运行异常问题,相关问题代码易错点整理如下,示例代码语法上不严谨,供理解参考:
(1)循环语句,确保一定能够退出,防止出现死循环;

void func(U32 in) 
{
    U32 i = 0;
    for (i=0;i<in;i++) {  
        // 上限in未做保护,如果是一个减翻的结果,软件运行到这个函数就挂住了
        // 代码内部错误的改写了循环变量i或者in的值,导致无法退出
        ...
    }
}

(2)循环语句,退出时,循环体内break 与 return的使用应尽量一致,是否涉及资源释放,正常退出与异常退出前的处理是否准确;

(3)业务模块的内存管理,应由统一的申请释放,尽量减少业务流程细节中的内存操作,避免内存泄漏和异常释放;

void ModuleCtxInit()
{
    // mem init
    // ctx cfg init
    ...
}

void ModuleMngProc() 
{
    // use mem in module ctx
    ...
}

void ModuleCtxInit()
{
    // ctx cfg clear
    // mem free
    ...
}

(4)U8 数据易出现加翻风险,U32数据易出现减翻风险,使用时需仔细确认所用变量取值范围;

U8 a = 180;
U8 b = 100;
U8 c = a + b; // error c != 280  c =  24

U32 a = 10;
U32 b = 100;
U32 c = a - b; // error  unsigned value ( -90 )  equals to max int minus 90   

(5)内存拷贝与初始化,应防止出现内存越界操作;

memcpy(void * dst, void * src, int memLen)   // 入参lenth 对于源地址和目的地址是否会有越界问题
memset(void * startAddr, int val, int memLen) // 同样

(6)数组下标,地址偏移,上限保护,防止越界操作;
(7)空指针校验,除零保护,内存释放时,指针置空,防止出现野指针;
(8)内存和锁的使用应仔细确认;

相关文章

  • 业务C代码关键审核点总结

    工作有几年了,定位过许多起业务软件运行异常问题,相关问题代码易错点整理如下,示例代码语法上不严谨,供理解参考:(1...

  • 代码优化的方向

    在部门里一直做外包同学的代码审核工作,一直想写下总结,于是在processon上总结了一点点。总结着总结着发现,实...

  • 前端开发如何快速了解新业务

    最近接触新业务较多,关于了解新业务有一点感想,总结如下: 1.比了解新业务代码更重要的是要了解新业务,比了解新业务...

  • 业务代码开发总结

    1、参数校验 说明:每次开始编写一个service,首先要做的就是参数校验。各种不为NULL、不为空的代码随处可见...

  • Vue

    1、多级数据反向传递 D -> C -> B -> A 关键代码 A B C D

  • 爬虫之简单爬取糗事百科

    技术路线:python+requests+re 代码如下: 关键点:正则表达式的编写:pattern = re.c...

  • 代码审核中的原则与问题

    最近一直在审核代码,在看大家的代码的过程中发现一些问题,慢慢也总结出了一套 审核代码最最初级的原则: 新建的数据库...

  • 开发流程/理代码步骤

    1.首先要理清楚业务逻辑----表的作用----关键字段----关键代码(核心方法) 理业务逻辑: 操作一遍...

  • 面向对象基本语法

    OC完全兼容C(.m)语言,可以在oc语言中混入c(.c)语言代码甚至是c++(.mm)代码。 oc关键字:基本上...

  • 谷歌最佳实践 - 代码审核方法

    来源 代码审核时我们应该审核什么 注意:在考虑下面的原则时,切记要根据《代码审核标准》进行考虑。 设计 代码审核中...

网友评论

      本文标题:业务C代码关键审核点总结

      本文链接:https://www.haomeiwen.com/subject/wygpmctx.html