clang static analyzer的学习路径和checker的编写方法是怎么学习的?

新手上路,请多包涵

我需要使用clang static analyzer 对源代码进行检查,以期发现潜在的问题。
更重要的是:我需要自己能定制 clang static analyzer的checker,来实现定制化的检查。

现在我看了符号执行这块,关于svalbuilder的,但是感觉一头雾水,找不到相应的资料。感觉自己完全是在瞎搞。我总结一下,觉得自身问题如下:

  1. 看不懂svalbuilder这块的代码

  2. 不明白clang在符号执行这块的操作的流程

  3. 找不到对应的资料和手册

  4. 完全没有学习章法。因为没有人带,也没有积累的材料,我是第一个搞这个的,感觉完全没有头绪。

这些问题该怎么解决呢?求指导一下。

阅读 5.3k
1 个回答

SValBuilder可以理解成为一个“解释器”,目的分为两个,一是执行运算,例如SVal的加减法,二是创造SVal值。与其比较相关的是约束求解,就是其中的RangeBased Constraint Solver。具体,你可以看看https://www.zhihu.com/questio...://www.zhihu.com/question/46358643/answer/134173861。

clang在符号执行的流程,入口是在AnalysisConsumer,然后RecursiveASTVisitor遍历语法树,之后分别两步,Syntax和path sensitive的检查,可以http://blog.csdn.net/dashuniu...

资料的话看源码,最好多调试两遍。然后参考http://clang-developers.42468...://reviews.llvm.org/中关于analyzer的patch。

有问题可以发我邮箱movietravelcode@outlook.com