Analysis results
Objects
The following specific objects are detected by the analyzer and can be displayed in CAST Enlighten:
Class |
|
Folder for Classes, Unions and
Structures |
|
Constructor |
|
Destructor |
|
Enum |
|
Enum Item |
|
File |
|
Function |
|
Global Variable |
|
Macro |
|
Member |
|
Method |
|
Project |
|
Struct |
|
Class Template |
|
Class Template Specialization |
|
Constructor Template |
|
Constructor Template Specialization |
|
Function Template |
|
Function Template Specialization |
|
Method Template |
|
Method Template Specialization |
|
Subset |
|
Template Parameter |
|
Typedef |
|
Union |
|
CLR Event (Managed C++) |
|
CLR EventAddon (Managed C++) |
|
CLR EventRaise (Managed C++) |
|
CLR EventRemoveOn (Managed C++) |
|
CLR Property (Managed C++) |
|
CLR PropertyGetter (Managed C++) |
|
CLR PropertySetter (Managed C++) |
|
SQL Query |
Links
The following is a non-exhaustive list of links that may be identified between objects saved in the CAST Analysis Service:
Link Type | When is this type of link used? | |
ACCESS | READ | Specifies that an object reads a value of another object. For example if a function reads a global variable:
C++ Analyzer will generate this Access (Read) link: |
WRITE | Specifies that an object modifies another one. For example if a function modifies a global variable:
C++ Analyzer will generate this Access (Write) link: |
|
EXEC | Specifies that an object executes another object (method or function). For example if a function calls another function:
C++ Analyzer will generate this Access (Exec) link:
Please note that, as a convention, an EXEC link is also used when the
definition or declaration of an object invokes a macro. The links is
created from the object to the macro.
|
|
MEMBER | Specifies that an object accesses a member of another object. For example if a function "g()" accesses a global var "g_pVar" and to one of its members:
C++ Analyzer will generate this Access (Member) link: |
|
ARRAY | Specifies that an object accesses another using square brackets ([ ]). For example if a function "g()" accesses a character's array at its first position:
C++ Analyzer will generate this Access(Array) link (with the write property also): |
|
BELONG | Represents a parent link between two objects. If "Sample.h" contains the following statement:
C++ Analyzer will generate these Belong links:
|
|
CONTAIN | DECLARE |
This link type occurs between a file and a Global object when there is
also a declaration (forward declaration or external declaration) in
addition to the definition itself. For example, between a file and a:
This link can be seen in the example below (Zc): |
DEFINE |
This link type occurs when a method is defined outside the file
containing the class definition. The link is created from the file
containing the method definition to the class. For example, using the
code below: glob.h
glob.cpp
C++ Analyzer will generate the following link (Zf): |
|
FRIEND |
Specifies that a class or a function is a friend of a class.
For example if the class "C2" is declared as friend of a new "C3" class:
C++ Analyzer will generate this Friend link: |
|
INCLUDE | Represents an inclusion link between two files. If the "Sample.cpp" file contains the following statement:
C++ Analyzer will generate this Include link: |
|
INHERIT | - | Represents an inheritance between two classes or structures. If we define a new class "C2" inheriting from C1 as in following statement:
C++ Analyzer will generate following Inherit link: |
OVERRIDE |
Specifies that a method redefines another method from an inherited
class. For example using the previous sample, "C2::foo()" redefines
"C1::foo()". So C++ Analyzer will generate this link: |
|
RELY ON | Specifies that an object uses an existing type. If we define a new variable of type "C1" in "Sample.cpp":
C++ Analyzer will generate following Rely On link : |
|
USE | Represents a link between a C/C++ object and a database object. For example, if we define a function "f_ExecSql" containing a ProC statement referencing the "Authors" table :
C++ Analyzer will generate a SQL Query object plus links:
The following ESQL tags are also supported (non exhaustive list):
In ESQL tags, links to the following objects will be found (non exhaustive list):
|