mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
This commit sets initial dbschemes for cpp, csharp, java, javascript, and python so that automated testing for upgrade scripts would also cover legacy upgrades.
753 lines
22 KiB
Plaintext
753 lines
22 KiB
Plaintext
/*
|
|
* External artifacts
|
|
*/
|
|
|
|
externalDefects(
|
|
unique int id : @externalDefect,
|
|
varchar(900) queryPath : string ref,
|
|
int location : @location ref,
|
|
varchar(900) message : string ref,
|
|
float severity : float ref
|
|
);
|
|
|
|
externalMetrics(
|
|
unique int id : @externalMetric,
|
|
varchar(900) queryPath : string ref,
|
|
int location : @location ref,
|
|
float value : float ref
|
|
);
|
|
|
|
externalData(
|
|
int id : @externalDataElement,
|
|
varchar(900) path : string ref,
|
|
int column: int ref,
|
|
varchar(900) value : string ref
|
|
);
|
|
|
|
snapshotDate(unique date snapshotDate : date ref);
|
|
|
|
sourceLocationPrefix(varchar(900) prefix : string ref);
|
|
|
|
/*
|
|
* Duplicate code
|
|
*/
|
|
|
|
duplicateCode(
|
|
unique int id : @duplication,
|
|
varchar(900) relativePath : string ref,
|
|
int equivClass : int ref);
|
|
|
|
similarCode(
|
|
unique int id : @similarity,
|
|
varchar(900) relativePath : string ref,
|
|
int equivClass : int ref);
|
|
|
|
@duplication_or_similarity = @duplication | @similarity
|
|
|
|
tokens(
|
|
int id : @duplication_or_similarity ref,
|
|
int offset : int ref,
|
|
int beginLine : int ref,
|
|
int beginColumn : int ref,
|
|
int endLine : int ref,
|
|
int endColumn : int ref);
|
|
|
|
/*
|
|
* Version history
|
|
*/
|
|
|
|
svnentries(
|
|
int id : @svnentry,
|
|
varchar(500) revision : string ref,
|
|
varchar(500) author : string ref,
|
|
date revisionDate : date ref,
|
|
int changeSize : int ref
|
|
)
|
|
|
|
svnaffectedfiles(
|
|
int id : @svnentry ref,
|
|
int file : @file ref,
|
|
varchar(500) action : string ref
|
|
)
|
|
|
|
svnentrymsg(
|
|
int id : @svnentry ref,
|
|
varchar(500) message : string ref
|
|
)
|
|
|
|
svnchurn(
|
|
int commit : @svnentry ref,
|
|
int file : @file ref,
|
|
int churnedLines : int ref
|
|
)
|
|
|
|
/*
|
|
* C# dbscheme
|
|
*/
|
|
|
|
/** ELEMENTS **/
|
|
|
|
@element = @container | @type | @expr | @stmt | @member | @variable | @namespace
|
|
| @modifier | @accessor | @event_accessor | @type_parameter_constraints
|
|
| @namespace_declaration | @using_directive | @attribute
|
|
| @xmllocatable | @externalMetric | @externalDefect;
|
|
|
|
/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/
|
|
|
|
@location = @location_default | @assembly;
|
|
|
|
locations_default(unique int id: @location_default,
|
|
int file: @file ref,
|
|
int beginLine: int ref,
|
|
int beginColumn: int ref,
|
|
int endLine: int ref,
|
|
int endColumn: int ref);
|
|
|
|
@sourceline = @file | @callable | @xmllocatable;
|
|
|
|
numlines(int element_id: @sourceline ref,
|
|
int num_lines: int ref,
|
|
int num_code: int ref,
|
|
int num_comment: int ref);
|
|
|
|
assemblies(unique int id: @assembly,
|
|
int file: @file ref,
|
|
varchar(900) fullname: string ref,
|
|
varchar(900) name: string ref,
|
|
varchar(900) version: string ref);
|
|
/*
|
|
fromSource(0) = unknown,
|
|
fromSource(1) = from source,
|
|
fromSource(2) = from library
|
|
*/
|
|
files(unique int id: @file,
|
|
varchar(900) name: string ref,
|
|
varchar(900) simple: string ref,
|
|
varchar(900) ext: string ref,
|
|
int fromSource: int ref);
|
|
|
|
folders(unique int id: @folder,
|
|
varchar(900) name: string ref,
|
|
varchar(900) simple: string ref);
|
|
|
|
@container = @folder | @file ;
|
|
|
|
containerparent(int parent: @container ref,
|
|
unique int child: @container ref);
|
|
|
|
/** NAMESPACES **/
|
|
|
|
@type_container = @namespace | @type;
|
|
|
|
namespaces(unique int id: @namespace,
|
|
varchar(900) name: string ref);
|
|
|
|
namespace_declarations(unique int id: @namespace_declaration,
|
|
int namespace_id: @namespace ref);
|
|
namespace_declaration_location(unique int id: @namespace_declaration ref,
|
|
int loc: @location ref);
|
|
|
|
parent_namespace(unique int child_id: @type_container ref,
|
|
int namespace_id: @namespace ref);
|
|
|
|
@declaration_or_directive = @namespace_declaration | @type | @using_directive;
|
|
|
|
parent_namespace_declaration(int child_id: @declaration_or_directive ref,
|
|
int namespace_id: @namespace_declaration ref);
|
|
|
|
@using_directive = @using_namespace_directive;
|
|
|
|
using_namespace_directives(unique int id: @using_namespace_directive,
|
|
int namespace_id: @namespace ref);
|
|
using_directive_location(unique int id: @using_directive ref,
|
|
int loc: @location ref);
|
|
|
|
/** TYPES **/
|
|
|
|
types(unique int id: @type,
|
|
int kind: int ref,
|
|
varchar(900) name: string ref);
|
|
case @type.kind of
|
|
1 = @bool_type
|
|
| 2 = @char_type
|
|
| 3 = @decimal_type
|
|
| 4 = @sbyte_type
|
|
| 5 = @short_type
|
|
| 6 = @int_type
|
|
| 7 = @long_type
|
|
| 8 = @byte_type
|
|
| 9 = @ushort_type
|
|
| 10 = @uint_type
|
|
| 11 = @ulong_type
|
|
| 12 = @float_type
|
|
| 13 = @double_type
|
|
| 14 = @enum_type
|
|
| 15 = @struct_type
|
|
| 17 = @class_type
|
|
| 19 = @interface_type
|
|
| 20 = @delegate_type
|
|
| 21 = @null_type
|
|
| 22 = @type_parameter
|
|
| 23 = @pointer_type
|
|
| 24 = @nullable_type
|
|
| 25 = @array_type
|
|
| 26 = @void_type
|
|
| 27 = @int_ptr_type
|
|
| 28 = @uint_ptr_type
|
|
| 29 = @dynamic_type
|
|
| 30 = @arglist_type
|
|
;
|
|
|
|
array_element_type(unique int array: @array_type ref,
|
|
int dimension: int ref,
|
|
int rank: int ref,
|
|
int element: @type ref);
|
|
nullable_underlying_type(unique int nullable: @nullable_type ref,
|
|
int underlying: @type ref);
|
|
pointer_referent_type(unique int pointer: @pointer_type ref,
|
|
int referent: @type ref);
|
|
enum_underlying_type(unique int enum_id: @enum_type ref,
|
|
int underlying_type_id: @type ref);
|
|
delegate_return_type(unique int delegate_id: @delegate_type ref,
|
|
int return_type_id: @type ref);
|
|
extend(unique int sub: @type ref,
|
|
int super: @type ref);
|
|
implement(int sub: @type ref,
|
|
int super: @type ref);
|
|
|
|
type_location(int id: @type ref,
|
|
int loc: @location ref);
|
|
|
|
attributes(unique int id: @attribute,
|
|
int type_id: @type ref,
|
|
int target: @element ref);
|
|
|
|
attribute_location(int id: @attribute ref,
|
|
int loc: @location ref);
|
|
|
|
/** GENERICS **/
|
|
|
|
@generic = @type | @method;
|
|
|
|
is_generic(unique int id: @generic ref);
|
|
is_constructed(unique int id: @generic ref);
|
|
type_parameters(unique int id: @type_parameter ref,
|
|
int index: int ref,
|
|
int generic_id: @generic ref);
|
|
type_arguments(int id: @type ref,
|
|
int index: int ref,
|
|
int constructed_id: @generic ref);
|
|
constructed_generic(unique int constructed: @generic ref,
|
|
int generic: @generic ref);
|
|
|
|
type_parameter_constraints(unique int id: @type_parameter_constraints,
|
|
int param_id: @type_parameter ref);
|
|
type_parameter_constraints_location(int id: @type_parameter_constraints ref,
|
|
int loc: @location ref);
|
|
general_type_parameter_constraints(int id: @type_parameter_constraints ref,
|
|
int kind: int ref /* class = 1, struct = 2, new = 3 */);
|
|
specific_type_parameter_constraints(int id: @type_parameter_constraints ref,
|
|
int base_id: @type ref);
|
|
|
|
|
|
/** MODIFIERS */
|
|
|
|
@modifiable = @member | @accessor;
|
|
|
|
modifiers(unique int id: @modifier,
|
|
varchar(900) name: string ref);
|
|
|
|
has_modifiers(int id: @modifiable ref,
|
|
int mod_id: @modifier ref);
|
|
|
|
compiler_generated(unique int id: @modifiable ref);
|
|
|
|
/** MEMBERS **/
|
|
|
|
@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type;
|
|
|
|
@exprorstmt_parent = @expr | @stmt | @memberoraccessor | @variable | @attribute;
|
|
|
|
@memberoraccessor = @member | @accessor | @event_accessor;
|
|
|
|
@named_exprorstmt = @goto_stmt | @labeled_stmt | @literal_expr;
|
|
|
|
exprorstmt_name(unique int parent_id: @named_exprorstmt ref,
|
|
varchar(900) name: string ref);
|
|
|
|
nested_types(unique int id: @type ref,
|
|
int declaring_type_id: @type ref,
|
|
int unbound_id: @type ref);
|
|
|
|
properties(unique int id: @property,
|
|
varchar(900) name: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int type_id: @type ref,
|
|
int unbound_id: @property ref);
|
|
|
|
property_location(int id: @property ref,
|
|
int loc: @location ref);
|
|
|
|
indexers(unique int id: @indexer,
|
|
varchar(900) name: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int type_id: @type ref,
|
|
int unbound_id: @indexer ref);
|
|
|
|
indexer_location(int id: @indexer ref,
|
|
int loc: @location ref);
|
|
|
|
accessors(unique int id: @accessor,
|
|
int kind: int ref,
|
|
varchar(900) name: string ref,
|
|
int declaring_member_id: @member ref,
|
|
int unbound_id: @accessor ref);
|
|
case @accessor.kind of
|
|
1 = @getter
|
|
| 2 = @setter
|
|
;
|
|
|
|
accessor_location(int id: @accessor ref,
|
|
int loc: @location ref);
|
|
|
|
events(unique int id: @event,
|
|
varchar(900) name: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int type_id: @type ref,
|
|
int unbound_id: @event ref);
|
|
|
|
event_location(int id: @event ref,
|
|
int loc: @location ref);
|
|
|
|
event_accessors(unique int id: @event_accessor,
|
|
int kind: int ref,
|
|
varchar(900) name: string ref,
|
|
int declaring_event_id: @event ref,
|
|
int unbound_id: @event_accessor ref);
|
|
case @event_accessor.kind of
|
|
1 = @add_event_accessor
|
|
| 2 = @remove_event_accessor
|
|
;
|
|
|
|
event_accessor_location(int id: @event_accessor ref,
|
|
int loc: @location ref);
|
|
|
|
operators(unique int id: @operator,
|
|
varchar(900) name: string ref,
|
|
varchar(900) symbol: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int type_id: @type ref,
|
|
int unbound_id: @operator ref);
|
|
|
|
operator_location(int id: @operator ref,
|
|
int loc: @location ref);
|
|
|
|
constant_value(unique int id: @variable ref,
|
|
varchar(900) value: string ref);
|
|
|
|
/** CALLABLES **/
|
|
|
|
@callable = @method | @constructor | @destructor | @operator | @accessor | @event_accessor | @variable | @indexer | @anonymous_function_expr;
|
|
|
|
methods(unique int id: @method,
|
|
varchar(900) name: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int type_id: @type ref,
|
|
int unbound_id: @method ref);
|
|
|
|
method_location(int id: @method ref,
|
|
int loc: @location ref);
|
|
|
|
constructors(unique int id: @constructor,
|
|
varchar(900) name: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int unbound_id: @constructor ref);
|
|
|
|
constructor_location(int id: @constructor ref,
|
|
int loc: @location ref);
|
|
|
|
destructors(unique int id: @destructor,
|
|
varchar(900) name: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int unbound_id: @destructor ref);
|
|
|
|
destructor_location(int id: @destructor ref,
|
|
int loc: @location ref);
|
|
|
|
overrides(int id: @callable ref,
|
|
int base_id: @callable ref);
|
|
|
|
explicitly_implements(
|
|
unique int id: @member ref,
|
|
int interface_id: @interface_type ref
|
|
);
|
|
|
|
/** VARIABLES **/
|
|
|
|
@variable = @local_variable | @parameter | @field;
|
|
|
|
fields(unique int id: @field,
|
|
int kind: int ref,
|
|
varchar(900) name: string ref,
|
|
int declaring_type_id: @type ref,
|
|
int type_id: @type ref,
|
|
int unbound_id: @field ref);
|
|
case @field.kind of
|
|
1 = @addressable_field
|
|
| 2 = @constant
|
|
;
|
|
|
|
field_location(int id: @field ref,
|
|
int loc: @location ref);
|
|
|
|
localvars(unique int id: @local_variable,
|
|
int kind: int ref,
|
|
varchar(900) name: string ref,
|
|
int implicitly_typed: int ref /* 0 = no, 1 = yes */,
|
|
int type_id: @type ref,
|
|
int parent_id: @local_var_decl_expr ref);
|
|
case @local_variable.kind of
|
|
1 = @addressable_local_variable
|
|
| 2 = @local_constant
|
|
;
|
|
|
|
localvar_location(unique int id: @local_variable ref,
|
|
int loc: @location ref);
|
|
|
|
@parameterizable = @callable | @delegate_type;
|
|
|
|
params(unique int id: @parameter,
|
|
varchar(900) name: string ref,
|
|
int type_id: @type ref,
|
|
int index: int ref,
|
|
int mode: int ref, /* value = 0, ref = 1, out = 2, array = 3, this = 4 */
|
|
int parent_id: @parameterizable ref,
|
|
int unbound_id: @parameter ref);
|
|
|
|
param_location(int id: @parameter ref,
|
|
int loc: @location ref);
|
|
|
|
/** STATEMENTS **/
|
|
|
|
statements(unique int id: @stmt,
|
|
int kind: int ref,
|
|
int index: int ref,
|
|
int parent: @exprorstmt_parent ref);
|
|
case @stmt.kind of
|
|
1 = @block_stmt
|
|
| 2 = @expr_stmt
|
|
| 3 = @if_stmt
|
|
| 4 = @switch_stmt
|
|
| 5 = @while_stmt
|
|
| 6 = @do_stmt
|
|
| 7 = @for_stmt
|
|
| 8 = @foreach_stmt
|
|
| 9 = @break_stmt
|
|
| 10 = @continue_stmt
|
|
| 11 = @goto_stmt
|
|
| 12 = @goto_case_stmt
|
|
| 13 = @goto_default_stmt
|
|
| 14 = @throw_stmt
|
|
| 15 = @return_stmt
|
|
| 16 = @yield_stmt
|
|
| 17 = @try_stmt
|
|
| 18 = @checked_stmt
|
|
| 19 = @unchecked_stmt
|
|
| 20 = @lock_stmt
|
|
| 21 = @using_stmt
|
|
| 22 = @var_decl_stmt
|
|
| 23 = @const_decl_stmt
|
|
| 24 = @empty_stmt
|
|
| 25 = @unsafe_stmt
|
|
| 26 = @fixed_stmt
|
|
| 27 = @label_stmt
|
|
| 28 = @catch
|
|
| 29 = @case
|
|
;
|
|
|
|
@labeled_stmt = @label_stmt | @case;
|
|
|
|
@decl_stmt = @var_decl_stmt | @const_decl_stmt;
|
|
|
|
stmt_location(unique int id: @stmt ref,
|
|
int loc: @location ref);
|
|
|
|
catch_type(unique int catch_id: @catch ref,
|
|
int type_id: @type ref,
|
|
int kind: int ref /* explicit = 1, implicit = 2 */);
|
|
|
|
/** EXPRESSIONS **/
|
|
|
|
expressions(unique int id: @expr,
|
|
int kind: int ref,
|
|
int type_id: @type ref,
|
|
int index: int ref,
|
|
int parent: @exprorstmt_parent ref);
|
|
case @expr.kind of
|
|
/* literal */
|
|
1 = @bool_literal_expr
|
|
| 2 = @char_literal_expr
|
|
| 3 = @decimal_literal_expr
|
|
| 4 = @int_literal_expr
|
|
| 5 = @long_literal_expr
|
|
| 6 = @uint_literal_expr
|
|
| 7 = @ulong_literal_expr
|
|
| 8 = @float_literal_expr
|
|
| 9 = @double_literal_expr
|
|
| 10 = @string_literal_expr
|
|
| 11 = @null_literal_expr
|
|
/* primary & unary */
|
|
| 12 = @this_access_expr
|
|
| 13 = @base_access_expr
|
|
| 14 = @local_variable_access_expr
|
|
| 15 = @parameter_access_expr
|
|
| 16 = @field_access_expr
|
|
| 17 = @property_access_expr
|
|
| 18 = @method_access_expr
|
|
| 19 = @event_access_expr
|
|
| 20 = @indexer_access_expr
|
|
| 21 = @array_access_expr
|
|
| 22 = @type_access_expr
|
|
| 23 = @typeof_expr
|
|
| 24 = @method_invocation_expr
|
|
| 25 = @delegate_invocation_expr
|
|
| 26 = @operator_invocation_expr
|
|
| 27 = @cast_expr
|
|
| 28 = @object_creation_expr
|
|
| 29 = @explicit_delegate_creation_expr
|
|
| 30 = @implicit_delegate_creation_expr
|
|
| 31 = @array_creation_expr
|
|
| 32 = @default_expr
|
|
| 33 = @plus_expr
|
|
| 34 = @minus_expr
|
|
| 35 = @bit_not_expr
|
|
| 36 = @log_not_expr
|
|
| 37 = @post_incr_expr
|
|
| 38 = @post_decr_expr
|
|
| 39 = @pre_incr_expr
|
|
| 40 = @pre_decr_expr
|
|
/* multiplicative */
|
|
| 41 = @mul_expr
|
|
| 42 = @div_expr
|
|
| 43 = @rem_expr
|
|
/* additive */
|
|
| 44 = @add_expr
|
|
| 45 = @sub_expr
|
|
/* shift */
|
|
| 46 = @lshift_expr
|
|
| 47 = @rshift_expr
|
|
/* relational */
|
|
| 48 = @lt_expr
|
|
| 49 = @gt_expr
|
|
| 50 = @le_expr
|
|
| 51 = @ge_expr
|
|
/* equality */
|
|
| 52 = @eq_expr
|
|
| 53 = @ne_expr
|
|
/* logical */
|
|
| 54 = @bit_and_expr
|
|
| 55 = @bit_xor_expr
|
|
| 56 = @bit_or_expr
|
|
| 57 = @log_and_expr
|
|
| 58 = @log_or_expr
|
|
/* type testing */
|
|
| 59 = @is_expr
|
|
| 60 = @as_expr
|
|
/* null coalescing */
|
|
| 61 = @null_coalescing_expr
|
|
/* conditional */
|
|
| 62 = @conditional_expr
|
|
/* assignment */
|
|
| 63 = @simple_assign_expr
|
|
| 64 = @assign_add_expr
|
|
| 65 = @assign_sub_expr
|
|
| 66 = @assign_mul_expr
|
|
| 67 = @assign_div_expr
|
|
| 68 = @assign_rem_expr
|
|
| 69 = @assign_and_expr
|
|
| 70 = @assign_xor_expr
|
|
| 71 = @assign_or_expr
|
|
| 72 = @assign_lshift_expr
|
|
| 73 = @assign_rshift_expr
|
|
/* more */
|
|
| 74 = @object_init_expr
|
|
| 75 = @collection_init_expr
|
|
| 76 = @array_init_expr
|
|
| 77 = @checked_expr
|
|
| 78 = @unchecked_expr
|
|
| 79 = @constructor_init_expr
|
|
| 80 = @add_event_expr
|
|
| 81 = @remove_event_expr
|
|
| 82 = @par_expr
|
|
| 83 = @local_var_decl_expr
|
|
| 84 = @lambda_expr
|
|
| 85 = @anonymous_method_expr
|
|
| 86 = @namespace_expr
|
|
/* dynamic */
|
|
| 87 = @dynamic_conversion_expr
|
|
| 88 = @dynamic_unary_conversion_expr
|
|
| 89 = @dynamic_invocation_expr
|
|
| 90 = @dynamic_event_compound_assign_expr
|
|
| 91 = @dynamic_constructor_binder_expr
|
|
| 92 = @dynamic_index_binder_expr
|
|
| 93 = @dynamic_member_binder_expr
|
|
/* unsafe */
|
|
| 100 = @pointer_indirection_expr
|
|
| 101 = @address_of_expr
|
|
| 102 = @sizeof_expr
|
|
/* async */
|
|
| 103 = @await_expr
|
|
;
|
|
|
|
@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr;
|
|
@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr;
|
|
@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr
|
|
| @string_literal_expr | @null_literal_expr;
|
|
|
|
@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr;
|
|
@assign_op_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr
|
|
| @assign_rem_expr | @assign_and_expr | @assign_or_expr | @assign_xor_expr
|
|
| @assign_lshift_expr | @assign_rshift_expr;
|
|
|
|
@member_access_expr = @field_access_expr | @property_access_expr | @method_access_expr
|
|
| @event_access_expr | @indexer_access_expr | @type_access_expr;
|
|
@access_expr = @member_access_expr | @local_variable_access_expr | @parameter_access_expr;
|
|
|
|
@objectorcollection_init_expr = @object_init_expr | @collection_init_expr;
|
|
|
|
@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr;
|
|
|
|
@anonymous_function_expr = @lambda_expr | @anonymous_method_expr;
|
|
|
|
@call = @method_invocation_expr | @constructor_init_expr | @operator_invocation_expr
|
|
| @delegate_invocation_expr | @object_creation_expr;
|
|
|
|
@dynamic_expr = @dynamic_conversion_expr | @dynamic_unary_conversion_expr | @dynamic_invocation_expr
|
|
| @dynamic_event_compound_assign_expr | @dynamic_constructor_binder_expr | @dynamic_index_binder_expr
|
|
| @dynamic_member_binder_expr;
|
|
|
|
object_creation_mode(unique int id: @object_creation_expr ref,
|
|
int mode: int ref /* normal = 1, default value type = 2, type parameter = 3*/);
|
|
|
|
implicitly_typed_array_creation(unique int id: @array_creation_expr ref);
|
|
|
|
explicitly_sized_array_creation(unique int id: @array_creation_expr ref);
|
|
|
|
mutator_invocation_mode(unique int id: @operator_invocation_expr ref,
|
|
int mode: int ref /* prefix = 1, postfix = 2*/);
|
|
|
|
expr_compiler_generated(unique int id: @expr ref);
|
|
|
|
expr_value(int id: @expr ref,
|
|
varchar(900) value: string ref);
|
|
|
|
expr_call(unique int caller_id: @expr ref,
|
|
int target_id: @callable ref);
|
|
|
|
expr_access(unique int accesser_id: @access_expr ref,
|
|
int target_id: @accessible ref);
|
|
@accessible = @method | @field | @property | @indexer | @event | @variable;
|
|
|
|
expr_location(unique int id: @expr ref,
|
|
int loc: @location ref);
|
|
|
|
dynamic_member_name(unique int id: @dynamic_expr ref,
|
|
varchar(900) name: string ref);
|
|
|
|
/** CONTROL-FLOW **/
|
|
|
|
@cfg_node = @stmt | @expr | @callable;
|
|
@loop = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt;
|
|
@breakable = @loop | @switch_stmt;
|
|
|
|
successors(int from: @cfg_node ref,
|
|
int to: @cfg_node ref);
|
|
|
|
truecond(int from: @cfg_node ref,
|
|
int to: @cfg_node ref);
|
|
|
|
falsecond(int from: @cfg_node ref,
|
|
int to: @cfg_node ref);
|
|
|
|
breaks(int scope: @breakable ref,
|
|
int stmt: @break_stmt ref);
|
|
|
|
break_target(int scope: @breakable ref,
|
|
int next: @cfg_node ref);
|
|
|
|
continues(int scope: @loop ref,
|
|
int stmt: @continue_stmt ref);
|
|
|
|
continue_target(int scope: @loop ref,
|
|
int next: @cfg_node ref);
|
|
|
|
goto(int from: @cfg_node ref,
|
|
int to: @labeled_stmt ref);
|
|
|
|
/* a jump from inside to outside of a try-finally statement
|
|
executes the finally block "on the way", thus a jump
|
|
can take place in several steps: */
|
|
|
|
jump_step(int origin: @cfg_node ref,
|
|
int from: @cfg_node ref,
|
|
int to: @cfg_node ref);
|
|
|
|
last_finally_node(int try: @try_stmt ref,
|
|
int node: @cfg_node ref);
|
|
|
|
jump_if_true(int node: @cfg_node ref);
|
|
|
|
jump_if_false(int node: @cfg_node ref);
|
|
|
|
/* XML Files */
|
|
|
|
xmlEncoding (unique int id: @file ref, varchar(900) encoding: string ref);
|
|
|
|
xmlDTDs (unique int id: @xmldtd,
|
|
varchar(900) root: string ref,
|
|
varchar(900) publicId: string ref,
|
|
varchar(900) systemId: string ref,
|
|
int fileid: @file ref);
|
|
|
|
xmlElements (unique int id: @xmlelement,
|
|
varchar(900) name: string ref,
|
|
int parentid: @xmlparent ref,
|
|
int idx: int ref,
|
|
int fileid: @file ref);
|
|
|
|
xmlAttrs (unique int id: @xmlattribute,
|
|
int elementid: @xmlelement ref,
|
|
varchar(900) name: string ref,
|
|
varchar(3600) value: string ref,
|
|
int idx: int ref,
|
|
int fileid: @file ref);
|
|
|
|
xmlNs (int id: @xmlnamespace,
|
|
varchar(900) prefixName: string ref,
|
|
varchar(900) URI: string ref,
|
|
int fileid: @file ref);
|
|
|
|
xmlHasNs (int elementId: @xmlnamespaceable ref,
|
|
int nsId: @xmlnamespace ref,
|
|
int fileid: @file ref);
|
|
|
|
xmlComments (unique int id: @xmlcomment,
|
|
varchar(3600) text: string ref,
|
|
int parentid: @xmlparent ref,
|
|
int fileid: @file ref);
|
|
|
|
xmlChars (unique int id: @xmlcharacters,
|
|
varchar(3600) text: string ref,
|
|
int parentid: @xmlparent ref,
|
|
int idx: int ref,
|
|
int isCDATA: int ref,
|
|
int fileid: @file ref);
|
|
|
|
@xmlparent = @file | @xmlelement;
|
|
@xmlnamespaceable = @xmlelement | @xmlattribute;
|
|
|
|
xmllocations(int xmlElement: @xmllocatable ref,
|
|
int location: @location_default ref);
|
|
|
|
@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace;
|