-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpython_test.py
More file actions
executable file
·70 lines (57 loc) · 1.65 KB
/
Copy pathpython_test.py
File metadata and controls
executable file
·70 lines (57 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from joern.all import JoernSteps
#from sets import Set
j = JoernSteps()
j.setGraphDbURL('http://localhost:7474/db/data/')
j.connectToDatabase()
#res = j.runGremlinQuery('getFunctionsByName("*")')
#res = j.runCypherQuery('')
#print res
#query = 'getAllSatements().id'
#ids = j.runGremlinQuery(query)
#print ids
#for one in ids:
# print one.o
#for one in res:
# print one
#print main_nodes
#for one in main_nodes:
#one = main_nodes[0]
#print dir(one)
#print one
## BFS from a single source
def bfs(source):
level = 0
queue = []
queue.append(source)
# queue = main_nodes
temp_queue = []
print queue
visited = set()
while len(queue) != 0:
print "level,", level
while len(queue) != 0:
cur = queue[0]
if cur._Node__id not in visited:
visited.add(cur._id)
if cur._id > -1:
print cur.properties
query = 'g.v('+str(cur._id)+').code'
print j.runGremlinQuery(query)
query = 'g.v('+str(cur._id)+').out'
#print query
s = j.runGremlinQuery(query)
print len(s)
neighbor_vs = []
for one in s:
neighbor_vs.append(one._id)
print neighbor_vs
# print s
temp_queue.extend(s)
del queue[0]
queue = temp_queue
temp_queue = []
level = level + 1
print "Depth, ", level
if __name__ == '__main__':
main_nodes = j.runGremlinQuery('getFunctionsByName("main")')
bfs(main_nodes[0])