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等类型的信息,针对不同的类型进行标记区分。
以上图的psd存储结构如下图所示,其中结构体的描述信息主要包括,成员变量名、成员变量的类型、以及判断成员变量是否为系统变量或者链表等信息。针对不同的信息,在驱动生成或者参数捕获时,做不同的信息处理。
c++ psd结构说明¶
c++的主要表示类型是类,因此测试是c++以一个类为单元做测试,类主要包括类的成员变量名以及类型信息,成员变量的访问权限信息。类的成员函数分为构造函数、内联函数、虚函数等,成员函数的参数信息以及类型信息等。