
REIZ.IO adalah mesin pencari kode sumber struktural untuk Python. Dibandingkan dengan alternatif populer (misalnya pencarian kode gitub) ia menjalankan kueri atas pohon sintaks (bukan kode sumber mentah) dan mencoba untuk memadamkan pengetahuan struktural (tidak ada semantik yang diterapkan). Untuk informasi lebih lanjut, silakan lihat dokumen.
REIZ adalah kerangka pencarian kode yang dibangun oleh REIZ.IO. Karena sifatnya, itu semata -mata bekerja dengan ASTS dan dengan sengaja menghindari melakukan pekerjaan semantik apa pun.
Some ASTs attach a bit of contextual knowledge (e.g `Name(ctx=...)`
on python) which can be queried through simple matcher queries but
reiz.io doesn't include them when comparing references (see
matchers#reference-matcher for details).
Berikut adalah kueri REIZQL sederhana yang mencari fungsi yang berakhir dengan pernyataan coba di mana kami mengembalikan panggilan ke fungsi yang memiliki nama yang sama dengan fungsi kami berada di dalam.
FunctionDef ( ~ func , body = [ * ..., Try ( body = [ Return ( Call ( Name ( ~ func )))])])yang akan cocok dengan berikut ini;
def foo ( spam ):
eggs = bar ()
try :
return foo ( spam + eggs )
except ValueError :
return NoneDalam pengertian yang sangat mendasar, itu menghasilkan AST dari kode di atas dan memeriksa apakah itu sesuai dengan pola (kueri REIZQL) atau tidak.;
FunctionDef (
name = 'foo' ,
args = arguments (
posonlyargs = [],
args = [ arg ( arg = 'spam' , annotation = None , type_comment = None )],
vararg = None ,
kwonlyargs = [],
kw_defaults = [],
kwarg = None ,
defaults = [],
),
body = [
Assign (
targets = [ Name ( id = 'eggs' , ctx = Store ())],
value = Call (
func = Name ( id = 'bar' , ctx = Load ()),
args = [],
keywords = [],
),
type_comment = None ,
),
Try (
body = [
Return (
value = Call (
func = Name ( id = 'foo' , ctx = Load ()),
args = [
BinOp (
left = Name ( id = 'spam' , ctx = Load ()),
op = Add (),
right = Name ( id = 'eggs' , ctx = Load ()),
),
],
keywords = [],
),
),
],
handlers = [
ExceptHandler (
type = Name ( id = 'ValueError' , ctx = Load ()),
name = None ,
body = [
Return (
value = Constant ( value = None , kind = None ),
),
],
),
],
orelse = [],
finalbody = [],
),
],
decorator_list = [],
returns = None ,
type_comment = None ,
)