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