Skip to content

Commit 0959a46

Browse files
authored
Merge pull request #65 from github/aibaars/dup-code
Add duplicate code tables to dbscheme
2 parents 1d502cb + 4c699fc commit 0959a46

File tree

2 files changed

+155
-0
lines changed

2 files changed

+155
-0
lines changed

generator/src/main.rs

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,141 @@ fn convert_nodes<'a>(nodes: &'a node_types::NodeTypeMap) -> Vec<dbscheme::Entry<
247247
name: "ast_node_parent",
248248
members: ["ast_node", "file"].iter().cloned().collect(),
249249
}));
250+
251+
// TODO: remove
252+
// Add duplicate code tables
253+
entries.extend(duplicate_code_entries());
254+
250255
entries
251256
}
252257

258+
fn duplicate_code_entries() -> Vec<dbscheme::Entry<'static>> {
259+
vec![
260+
// duplicateCode(
261+
// unique int id: @duplication,
262+
// string relativePath: string ref,
263+
// int equivClass: int ref);
264+
dbscheme::Entry::Table(dbscheme::Table {
265+
name: "duplicateCode",
266+
keysets: None,
267+
columns: vec![
268+
dbscheme::Column {
269+
db_type: dbscheme::DbColumnType::Int,
270+
name: "id",
271+
unique: true,
272+
ql_type: ql::Type::AtType("duplication"),
273+
ql_type_is_ref: false,
274+
},
275+
dbscheme::Column {
276+
db_type: dbscheme::DbColumnType::String,
277+
name: "relativePath",
278+
unique: false,
279+
ql_type: ql::Type::String,
280+
ql_type_is_ref: true,
281+
},
282+
dbscheme::Column {
283+
db_type: dbscheme::DbColumnType::Int,
284+
name: "equivClass",
285+
unique: false,
286+
ql_type: ql::Type::Int,
287+
ql_type_is_ref: true,
288+
},
289+
],
290+
}),
291+
// similarCode(
292+
// unique int id: @similarity,
293+
// string relativePath: string ref,
294+
// int equivClass: int ref);
295+
dbscheme::Entry::Table(dbscheme::Table {
296+
name: "similarCode",
297+
keysets: None,
298+
columns: vec![
299+
dbscheme::Column {
300+
db_type: dbscheme::DbColumnType::Int,
301+
name: "id",
302+
unique: true,
303+
ql_type: ql::Type::AtType("similarity"),
304+
ql_type_is_ref: false,
305+
},
306+
dbscheme::Column {
307+
db_type: dbscheme::DbColumnType::String,
308+
name: "relativePath",
309+
unique: false,
310+
ql_type: ql::Type::String,
311+
ql_type_is_ref: true,
312+
},
313+
dbscheme::Column {
314+
db_type: dbscheme::DbColumnType::Int,
315+
name: "equivClass",
316+
unique: false,
317+
ql_type: ql::Type::Int,
318+
ql_type_is_ref: true,
319+
},
320+
],
321+
}),
322+
// @duplication_or_similarity = @duplication | @similarity
323+
dbscheme::Entry::Union(dbscheme::Union {
324+
name: "duplication_or_similarity",
325+
members: ["duplication", "similarity"].iter().cloned().collect(),
326+
}),
327+
// tokens(
328+
// int id: @duplication_or_similarity ref,
329+
// int offset: int ref,
330+
// int beginLine: int ref,
331+
// int beginColumn: int ref,
332+
// int endLine: int ref,
333+
// int endColumn: int ref);
334+
dbscheme::Entry::Table(dbscheme::Table {
335+
name: "tokens",
336+
keysets: None,
337+
columns: vec![
338+
dbscheme::Column {
339+
db_type: dbscheme::DbColumnType::Int,
340+
name: "id",
341+
unique: false,
342+
ql_type: ql::Type::AtType("duplication_or_similarity"),
343+
ql_type_is_ref: true,
344+
},
345+
dbscheme::Column {
346+
db_type: dbscheme::DbColumnType::Int,
347+
name: "offset",
348+
unique: false,
349+
ql_type: ql::Type::Int,
350+
ql_type_is_ref: true,
351+
},
352+
dbscheme::Column {
353+
db_type: dbscheme::DbColumnType::Int,
354+
name: "beginLine",
355+
unique: false,
356+
ql_type: ql::Type::Int,
357+
ql_type_is_ref: true,
358+
},
359+
dbscheme::Column {
360+
db_type: dbscheme::DbColumnType::Int,
361+
name: "beginColumn",
362+
unique: false,
363+
ql_type: ql::Type::Int,
364+
ql_type_is_ref: true,
365+
},
366+
dbscheme::Column {
367+
db_type: dbscheme::DbColumnType::Int,
368+
name: "endLine",
369+
unique: false,
370+
ql_type: ql::Type::Int,
371+
ql_type_is_ref: true,
372+
},
373+
dbscheme::Column {
374+
db_type: dbscheme::DbColumnType::Int,
375+
name: "endColumn",
376+
unique: false,
377+
ql_type: ql::Type::Int,
378+
ql_type_is_ref: true,
379+
},
380+
],
381+
}),
382+
]
383+
}
384+
253385
fn create_tokeninfo<'a>(
254386
token_kinds: Map<&'a str, usize>,
255387
) -> (dbscheme::Case<'a>, dbscheme::Table<'a>) {

ql/src/ruby.dbscheme

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,3 +1435,26 @@ case @token.kind of
14351435

14361436
@ast_node_parent = @ast_node | @file
14371437

1438+
duplicateCode(
1439+
unique int id: @duplication,
1440+
string relativePath: string ref,
1441+
int equivClass: int ref
1442+
);
1443+
1444+
similarCode(
1445+
unique int id: @similarity,
1446+
string relativePath: string ref,
1447+
int equivClass: int ref
1448+
);
1449+
1450+
@duplication_or_similarity = @duplication | @similarity
1451+
1452+
tokens(
1453+
int id: @duplication_or_similarity ref,
1454+
int offset: int ref,
1455+
int beginLine: int ref,
1456+
int beginColumn: int ref,
1457+
int endLine: int ref,
1458+
int endColumn: int ref
1459+
);
1460+

0 commit comments

Comments
 (0)