Paramemter Struture Description(PSD)

PSD是指对源程序信息进行提取后的描述信息,主要包括类名、命名空间、类的成员变量信息、类的函数信息,以及各种类型信息等。针对类型信息的描述,能够将复杂类型进行展开分解到最基本数据类型(char、int、string等)。其中c语言,以一个文件为单元,提取所有的函数信息,c++ 语言,提取类的所有信息。 PSD结构体存储在XML文件中,不同的XML文件存储不同的描述信息。

RecordDecl.xml: 存储整个项目工程中的结构体,联合体与类的分析展开结果。

funcPoint.txt: 存储函数参数为函数指针的分析结果。

funcCount.txt: 存储分析到的全部函数,参数个数,参数类型信息。

void.txt: 存储函数参数为void*的分析结果。

filename.xml:存储c语言文件的信息。

针对一些属性简单说明如下:

type属性

ZOA_CHAR_S/ZOA_UCHAR/ZOA_INT/ZOA_UINT/ZOA_LONG ZOA_ULONG/ZOA_FLOAT/ZOA_UFLOAT/ZOA_SHOTR ZOA_USHORT/ZOA_DOUBLE/ZOA_UDOUBLE 基本类型
StructureOrClassType 结构体类型
ZOA_FUNC 函数指针类型
ZOA_UNION 联合体类型
ZOA_ENUM 枚举类型
ClassType 类 类型

basetype属性

BuiltinType 基本类型
ArrayType 数组类型
PointerType 指针类型
StructureOrClassType 结构体类型
UnionType 联合体类型
EnumType 枚举类型
FunctionPointType 函数指针类型

其他属性

Name 代表结构体、类、联合体名字
NodeType 代表链表类型
parmType 代表函数参数类型
parNum 代表函数参数个数
SystemVar 代表此类型为系统头文件类型
value 代表枚举类型的值
bitfield 代表位域类型所占字节
returnType 代表返回值类型
Field 类成员变量
Method 类构造函数
paramName 类构造函数参数名
paramType 类构造函数参数类型
TemplateArgumentType STL结构参数类型
WingsTemplateArgument STL结构嵌套参数名字
TemplateArgumentValue STL结构中参数为具体值
FunctionModifiers 函数访问权限
FunctionAttribute 函数是extern或者static函数
FuncClassName 函数所属类
OperatorFundecl 重载运算符函数
Operator 重载运算符类型

c语言psd结构说明

针对复杂类型,例如结构体类型location_s,成员变量中除了基本数据类型之外,还存在包含结构体类型的情况,如下图所示的代码中,location_s中包含coordinate_s结构体,以及FILE等类型的信息,针对不同的类型进行标记区分。

_images/figure2.png

以上图的psd存储结构如下图所示,其中结构体的描述信息主要包括,成员变量名、成员变量的类型、以及判断成员变量是否为系统变量或者链表等信息。针对不同的信息,在驱动生成或者参数捕获时,做不同的信息处理。

_images/figure3.png

c++ psd结构说明

c++的主要表示类型是类,因此测试是c++以一个类为单元做测试,类主要包括类的成员变量名以及类型信息,成员变量的访问权限信息。类的成员函数分为构造函数、内联函数、虚函数等,成员函数的参数信息以及类型信息等。

_images/figure4.png