Your SlideShare is downloading. ×
Cppcheck分析
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cppcheck分析

1,270
views

Published on

这是Cppcheck的代码架构分析

这是Cppcheck的代码架构分析

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,270
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cppcheck架构分析
    Cppcheck概述
    静态代码分析工具
    检查点
  • 2. Cppcheck架构分析
    总体
  • 3. Cppcheck系统C++实现类
  • 4. 参数分析
    外部输入
    内部抽象 class Settings
    字符交互模式
    CmdLineParser parser(&_settings);
  • 5. Cppcheck总过程
  • 6. 预处理
    预处理处理由Preprocessor类实现
    执行Class Preprocessor::preprocess()
  • 7. Tokenize
    解析代码成符号
    由class Tokenizer实现
    实现接口 class Tokenizer::tokenize()
  • 8. Simplify
    目的:
    简化复杂代码
    统一化
    由class Tokenizer实现
    实现接口 class Tokenizer::simplifyTokenList()
    Simplify规则
    对变量
    对条件循环语句if 、for、while
    (详细规则见word)
  • 9. Cppcheck核心类class cppcheck
    Cppcheck程序的主干类
    核心函数check()
    处理入口,在此函数对输入代码进行初步分析处理,最后将代码传递给 CheckFile().
    核心函数CheckFile()
    函数功能是分析一个代码文件,CheckFile()会将代码流做进一步的分析,做tokenize,simplify,处理后分析代码,报告错误
  • 10. Class cppcheck::check()函数 &class cppcheck:: CheckFile()函数的实现
  • 11. Cppcheck检查实现类check
  • 12. 检查类的组织方式:static std::list<Check *> _instances;
    链表在哪?
    check类instances()函数中静态变量
    怎样加入检查类链表?
    父类的构造函数执行时加入检查链表
    何时实例对象?
    命名空间中以全局变量方式存在
  • 13. Cppcheck核心类check
    Void runChecks()
    主要是检查经过tokenize,但未经过simplify的代码流
    Void runSimplifiedChecks()
    主要是检查经过tokenize,但未经过simplify的代码流
  • 14. Cppcheck用户扩展类CheckOther
    用户扩展接口
    添加检查函数方法:
  • 15. Thank you