IAR静态代码分析工具

前言

IAR集成了C-STAT静态分析工具,主要通过对源代码等级进行分析来发现代码中的潜在问题,除了提高代码质量外,还有助于提高代码的规范
如有异议,请指正

主要特点

  • C/C++代码分析
  • 检查是否符合MISRA C:2004,MISRA C++:2008和MISRA C:2012定义的规则
  • 大约有250个检查映射到CWE和CERT C/C++涵盖的数百个问题
  • 可灵活的设置规则,与详细的错误信息

规则配置

1. 右键工程option
在这里插入图片描述

2. 选择Static Analysis配置栏,工具自身的需求进行设置,一般使用默认即可
在这里插入图片描述

执行分析

右键工程选择工程分析
在这里插入图片描述

  • 编译栏会弹出C-STAT Messages显示代码分析的结果
    在这里插入图片描述

  • 根据上图显示,提示指针completion存在为空的风险,双击跳转,查看下源码

void rt_completion_init(struct rt_completion *completion)
{
    rt_base_t level;
    

    level = rt_hw_interrupt_disable();
    completion->flag = RT_UNCOMPLETED;
    rt_list_init(&completion->suspended_list);
    rt_hw_interrupt_enable(level);
}
  • 源码中,形参completion如果传递进来的是空指针,那么调用completion->flag将会引起系统非法访问
    优化方案:增加指针的非空判断
void rt_completion_init(struct rt_completion *completion)
{
    rt_base_t level;
    
    if(completion == NULL)return;//判断指针是否为空
    level = rt_hw_interrupt_disable();
    completion->flag = RT_UNCOMPLETED;
    rt_list_init(&completion->suspended_list);
    rt_hw_interrupt_enable(level);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章