File tree Expand file tree Collapse file tree 2 files changed +127
-0
lines changed Expand file tree Collapse file tree 2 files changed +127
-0
lines changed Original file line number Diff line number Diff line change
1
+ import python
2
+
3
+ from string msg , int cnt , int sort
4
+ where
5
+ sort = 0 and
6
+ msg = "Lines of code in DB" and
7
+ cnt = sum ( Module m | | m .getMetrics ( ) .getNumberOfLinesOfCode ( ) )
8
+ or
9
+ sort = 1 and
10
+ msg = "Lines of code in repo" and
11
+ cnt =
12
+ sum ( Module m | exists ( m .getFile ( ) .getRelativePath ( ) ) | m .getMetrics ( ) .getNumberOfLinesOfCode ( ) )
13
+ or
14
+ sort = 2 and
15
+ msg = "Files" and
16
+ cnt = count ( File f )
17
+ or
18
+ sort = 10 and msg = "----------" and cnt = 0
19
+ or
20
+ sort = 11 and
21
+ msg = "Modules" and
22
+ cnt = count ( Module m )
23
+ or
24
+ sort = 12 and
25
+ msg = "Classes" and
26
+ cnt = count ( Class c )
27
+ or
28
+ sort = 13 and
29
+ msg = "Functions" and
30
+ cnt = count ( Function f )
31
+ or
32
+ sort = 14 and
33
+ msg = "async functions" and
34
+ cnt = count ( Function f | f .isAsync ( ) )
35
+ or
36
+ sort = 15 and
37
+ msg = "*args params" and
38
+ cnt = count ( Function f | f .hasVarArg ( ) )
39
+ or
40
+ sort = 16 and
41
+ msg = "**kwargs params" and
42
+ cnt = count ( Function f | f .hasKwArg ( ) )
43
+ or
44
+ sort = 20 and msg = "----------" and cnt = 0
45
+ or
46
+ sort = 21 and
47
+ msg = "call" and
48
+ cnt = count ( Call c )
49
+ or
50
+ sort = 22 and
51
+ msg = "for loop" and
52
+ cnt = count ( For f )
53
+ or
54
+ sort = 23 and
55
+ msg = "comprehension" and
56
+ cnt = count ( Comp c )
57
+ or
58
+ sort = 24 and
59
+ msg = "attribute" and
60
+ cnt = count ( Attribute a )
61
+ or
62
+ sort = 25 and
63
+ msg = "assignment" and
64
+ cnt = count ( Assign a )
65
+ or
66
+ sort = 26 and
67
+ msg = "await" and
68
+ cnt = count ( Await a )
69
+ or
70
+ sort = 27 and
71
+ msg = "yield" and
72
+ cnt = count ( Yield y )
73
+ or
74
+ sort = 28 and
75
+ msg = "with" and
76
+ cnt = count ( With w )
77
+ or
78
+ sort = 29 and
79
+ msg = "raise" and
80
+ cnt = count ( Raise r )
81
+ or
82
+ sort = 30 and
83
+ msg = "return" and
84
+ cnt = count ( Return r )
85
+ or
86
+ sort = 31 and
87
+ msg = "match" and
88
+ cnt = count ( MatchStmt m )
89
+ or
90
+ sort = 32 and
91
+ msg = "from ... import ..." and
92
+ cnt = count ( Import i | i .isFromImport ( ) )
93
+ or
94
+ sort = 33 and
95
+ msg = "import ..." and
96
+ cnt = count ( Import i | not i .isFromImport ( ) )
97
+ or
98
+ sort = 34 and
99
+ msg = "import *" and
100
+ cnt = count ( ImportStar i )
101
+ select sort , msg , cnt order by sort
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Fill in your class name and file path below, to inspect the class hierarchy.
3
+ */
4
+
5
+ import python
6
+ import semmle.python.dataflow.new.internal.DataFlowPublic
7
+ import semmle.python.dataflow.new.internal.DataFlowPrivate
8
+
9
+ predicate interestingClass ( Class cls ) {
10
+ cls .getName ( ) = "YourClassName"
11
+ // and cls.getLocation().getFile().getAbsolutePath().matches("%/folder/file.py")
12
+ }
13
+
14
+ query predicate superClasses ( Class cls , Class super_ ) {
15
+ interestingClass ( cls ) and
16
+ super_ = getADirectSuperclass + ( cls )
17
+ }
18
+
19
+ query predicate subClasses ( Class cls , Class super_ ) {
20
+ interestingClass ( cls ) and
21
+ super_ = getADirectSubclass + ( cls )
22
+ }
23
+
24
+ from Class cls
25
+ where interestingClass ( cls )
26
+ select cls
You can’t perform that action at this time.
0 commit comments