Files
codeql/csharp/ql/lib/upgrades/initial/semmlecode.csharp.dbscheme
Chuan-kai Lin a7f1ee574c Upgrade scripts testing: set initial dbschemes
This commit sets initial dbschemes for cpp, csharp, java, javascript, and
python so that automated testing for upgrade scripts would also cover legacy
upgrades.
2022-02-08 11:11:41 -08:00

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;