【OpenGrok代码搜索引擎】四、OpenGrok使用指南

本文详细介绍了Opengrok的查询语法,包括查询函数定义、路径下函数使用、变量赋值、文件构建信息、字符串查询、通配符查询、条件查询、文件类型搜索以及正则表达式等。同时,还阐述了Opengrok的搜索技巧,如使用加减号指定查询必须项和排除项,以及对不同域的搜索。此外,提到了正则表达式、通配符、模糊查询和范围搜索等高级搜索方式,帮助用户更高效地在源代码中定位信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、使用案例

1.1 查询函数"start_kernel"的定义

1.2 查询路径"sound/core"路径下使用函数"sprintf"

1.3 查询变量"cmdline"赋值

1.4 查询Makefiles,二进制文件“init-mm.o”构建信息 

1.5 查询字符“command line” 

1.6 使用通配符查询字符串"strart_*"

 1.7 条件查询文件

 1.8 查找所有包含". c"的文件

 1.9 查找以“ma”开头的文件

 1.10 查找所有c文件中的main函数 

二、使用技巧

2.1 特殊字符

2.2 域

2.2.1 full

2.2.2 defs

2.2.3 refs

2.2.4 path

2.2.5 hist

2.26 type


一、使用案例

1.1 查询函数"start_kernel"的定义

def:start_kernel

案例如下:

1.2 查询路径"sound/core"路径下使用函数"sprintf"

refs:sprintf  path:sound\/core\/

案例如下:

1.3 查询变量"cmdline"赋值

"command_line ="

1.4 查询Makefiles,二进制文件“init-mm.o”构建信息 

"init-mm.o" path:Makefile

1.5 查询字符“command line” 

"command line" 

1.6 使用通配符查询字符串"strart_*"

start_*

 1.7 条件查询文件

如从路径/usr/perl查询perl文件,但不查询路径为”/usr/bin/perl"下的perl文件。

-"arm/lib/Makefile" +“lib/Makefile”

 

 1.8 查找所有包含". c"的文件

". c"

 1.9 查找以“ma”开头的文件

path:/ma[a-zA-Z]*/

 1.10 查找所有c文件中的main函数 

main type:c

二、使用技巧

一次查询就是一系列的子句组合,一个子句的前缀可能包括如下:

  • “+”表示查询子句内容是必须的;形如+“clause”
  • “-”表示查询子句内容是忽略的;形如-“clause”
  • “:”表示查询子句针对一个域的搜索;形如文件类型type:c

一个子句也有可能是下面这些形式:

  • 一个词语,表示查询所有包含该词语的文档;形如“term”
  • 一个词组;表示查询所有包含该词组的文档,形如“hello term”
  • 嵌套或组合查询;如通过“+”“-”的组合或者形如"term1""term2"...
  • 逻辑运算查询;opengrok支持AND(&&),"+",OR(||),NOT(!),"-".注意,这些运算符必须要大写。

一个字句也支持诸如正则表达式,通配符,模糊查询,近似查询,范围搜索等。

  • 正则表达式;形如/[mb]an/,将会查询形如man或ban的字符等。
  • 通配符;形如"te?t",将会擦汗寻到text,test等。
  • 模糊查询;使用“~”进行模糊或近似查询,例如res~;
  • 范围查询;

2.1 特殊字符

opengrok在查询语法中支持转义字符;这些特殊字符如“+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /”。转义这些字符需要使用反斜杠\。例如搜索(1+1):2,完整的搜索字符串如下:

\(1\+\)\:2

需要特别注意的是索引字符主要是数字,字母和下划线,一个字符是无法进行索引。

2.2 域

2.2.1 full

全量搜索,包括字符串,数字,标识符等。

2.2.2 defs

定义搜索,主要对变量,函数进行查询等。 

2.2.3 refs

引用搜索,主要指符号如函数,类,变量。

2.2.4 path

资源文件路径搜索,如"src/mypath"。

2.2.5 hist

历史记录,日志注释搜索

2.26 type

类型查搜索,指定查询的文件,其中ada=Ada, asm=Asm, bzip2=Bzip(2), c=C, clojure=Clojure, csharp=C#, cxx=C++, eiffel=Eiffel, elf=ELF, erlang=Erlang, file=Image file, fortran=Fortran, golang=Golang, gzip=GZIP, haskell=Haskell, hcl=HCL, jar=Jar, java=Java, javaclass=Java class, javascript=JavaScript, json=Json, kotlin=Kotlin, lisp=Lisp, lua=Lua, mandoc=Manual pages, pascal=Pascal, perl=Perl, php=PHP, plain=Plain Text, plsql=PL/SQL, powershell=PowerShell script, python=Python, r=R, ruby=Ruby, rust=Rust, scala=Scala, sh=Shell script, sql=SQL, swift=Swift, tar=Tar, tcl=Tcl, terraform=Terraform, troff=Troff, typescript=TypeScript, uuencode=UUEncoded, vb=Visual Basic, verilog=Verilog, xml=XML, zip=Zip。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高桐@BILL

分享快乐,快乐分享...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值