由于这学期的系统分析与验证工具课的要求是要调研这个工具,于是记下这个作为备忘吧。 那么开始如何在linux平台上来使用基于clang的静态分析工具呢?下面是根据参考资料做的一个简单的整理:

  • 命令行输入clang --version,查看一下是否安装clang;
  • 如果没有安装,执行命名sudo apt-get install clang进行安装;
  • 创建一个memleak.c文件:
    #include<stdio.h>  
    #include<stdlib.h>  
    int main()  
    {  
      int *mem;  
      mem=malloc(sizeof(int));  
      if(mem) return 1;  
      *mem=0xdeadbeaf;  
      free(mem);  
      return 0;  
    } 
    
  • 到达mamleak.c路径下,执行 $ scan-build clang -c memleak.c命令,得到类似结果:
alvin@AlvinUbuntu:~/clang_cases$ scan-build clang -c memleak.c
scan-build: Using '/usr/bin/clang' for static analysis
memleak.c:7:17: warning: Potential leak of memory pointed to by 'mem'
        if(mem) return 1;
                       ^
memleak.c:8:6: warning: Dereference of null pointer (loaded from variable 'mem')
        *mem=0xdeadbeaf;
         ~~~^
2 warnings generated.
scan-build: 2 bugs found.
scan-build: Run 'scan-view /tmp/scan-build-2017-04-17-144607-26548-1' to examine bug reports.
  • 最后根据提示可以打开网页版的分析结果,即输入scan-view /tmp/scan-build-2017-04-17-144607-26548-1即可得到报告。

  • 点击 view report 可查看详情:

参考

  • http://www.cnblogs.com/zfyouxi/p/4747792.html