Merge pull request #14248 from RasmusWL/debug-queries

Python: Add debug queries
This commit is contained in:
yoff 2023-09-19 11:27:27 +02:00 коммит произвёл GitHub
Родитель c45ca7212a fd8d186b34
Коммит 811a7d0671
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 127 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,101 @@
import python
from string msg, int cnt, int sort
where
sort = 0 and
msg = "Lines of code in DB" and
cnt = sum(Module m | | m.getMetrics().getNumberOfLinesOfCode())
or
sort = 1 and
msg = "Lines of code in repo" and
cnt =
sum(Module m | exists(m.getFile().getRelativePath()) | m.getMetrics().getNumberOfLinesOfCode())
or
sort = 2 and
msg = "Files" and
cnt = count(File f)
or
sort = 10 and msg = "----------" and cnt = 0
or
sort = 11 and
msg = "Modules" and
cnt = count(Module m)
or
sort = 12 and
msg = "Classes" and
cnt = count(Class c)
or
sort = 13 and
msg = "Functions" and
cnt = count(Function f)
or
sort = 14 and
msg = "async functions" and
cnt = count(Function f | f.isAsync())
or
sort = 15 and
msg = "*args params" and
cnt = count(Function f | f.hasVarArg())
or
sort = 16 and
msg = "**kwargs params" and
cnt = count(Function f | f.hasKwArg())
or
sort = 20 and msg = "----------" and cnt = 0
or
sort = 21 and
msg = "call" and
cnt = count(Call c)
or
sort = 22 and
msg = "for loop" and
cnt = count(For f)
or
sort = 23 and
msg = "comprehension" and
cnt = count(Comp c)
or
sort = 24 and
msg = "attribute" and
cnt = count(Attribute a)
or
sort = 25 and
msg = "assignment" and
cnt = count(Assign a)
or
sort = 26 and
msg = "await" and
cnt = count(Await a)
or
sort = 27 and
msg = "yield" and
cnt = count(Yield y)
or
sort = 28 and
msg = "with" and
cnt = count(With w)
or
sort = 29 and
msg = "raise" and
cnt = count(Raise r)
or
sort = 30 and
msg = "return" and
cnt = count(Return r)
or
sort = 31 and
msg = "match" and
cnt = count(MatchStmt m)
or
sort = 32 and
msg = "from ... import ..." and
cnt = count(Import i | i.isFromImport())
or
sort = 33 and
msg = "import ..." and
cnt = count(Import i | not i.isFromImport())
or
sort = 34 and
msg = "import *" and
cnt = count(ImportStar i)
select sort, msg, cnt order by sort

Просмотреть файл

@ -0,0 +1,26 @@
/**
* Fill in your class name and file path below, to inspect the class hierarchy.
*/
import python
import semmle.python.dataflow.new.internal.DataFlowPublic
import semmle.python.dataflow.new.internal.DataFlowPrivate
predicate interestingClass(Class cls) {
cls.getName() = "YourClassName"
// and cls.getLocation().getFile().getAbsolutePath().matches("%/folder/file.py")
}
query predicate superClasses(Class cls, Class super_) {
interestingClass(cls) and
super_ = getADirectSuperclass+(cls)
}
query predicate subClasses(Class cls, Class super_) {
interestingClass(cls) and
super_ = getADirectSubclass+(cls)
}
from Class cls
where interestingClass(cls)
select cls