03.slither API常用对象结构
1.slither 代码目录对应的功能
slither代码的目录结构如下
下面4个主要目录如下:
- core目录
- detectors目录
- slithir目录
- priterns目录
slither的代码逻辑部分
主要集中在core目录下,core目录的内容主要包括
- cfg目录: 主要保存Node节点对象。
- context目录: 语境上下文对象,context文件中主要有函数上下文和合约上下文两类。
- variables目录: 各类不同类型(如状态变量,事件变量,局部变量,结构体变量,函数类型变量等)的变量对象。如
state_variable
保存了StateVariable
状态变量。
slither的代码内置的检测能力
主要集中在detectors目录
abstract_detector.py
:定义了检测器类的基础数据类型和所有的检测器的基类AbstractDetector
。AbstractDetector
:所有的检测器的基类。DetectorClassification
:指定检测器的威胁等级
slithir目录,该目录下均为ir的内容
。
operations
:包含ir的操作类型。OperationWithLValue,HighLevelCall,LowLevelCall,InternalCall,InternalDynamicCall
等。variables:
ir的变量类型。包括ReferenceVariable, TemporaryVariable, TupleVariable
printers目录,该目录下实现了上节内容讲解的各类的打印器功能。
2.常用的数据结构对象
主要对象有
- slither对象:最大的对象,表示整个sol文件的解析。
- contract对象:表示一个合约。
- function对象:表示合约中的某个函数。
- variable对象:表示合约中的一个状态变量或者函数中的变量或者ir中生成的临时变量。
- node对象:函数中的节点对象,相当于源代码中的一行。
- ir对象:源代码生成的是间代码。
- 操作对象
...
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。