opengrok搭建
需要提前下载的相关工具包
-
Tomcat 版本:10.0.27
-
JDK 版本:17.0.6
-
Universal Ctags 版本:新版本即可,我是用的是Ctags58
-
OpenGrok 版本:最新版本即可
JDK配置
下载好JDK后进行安装,安装完成配置环境变量,配置 JAVA_HOME 或者 JRE_HOME 环境变量为安装目录
Tomcat配置
配置CATALINA_HOME环境变量为解压目录,比如D:\SOFT\apache\apache-tomcat-10.0.27
Ctags配置
将 ctags.exe 文件所在目录添加到 PATH 环境变量
opengrok配置
-
解压缩,并在opengrok目录中创建一个data和一个source文件夹,data存放索引信息,source存放项目代码,可以通过mklink链接
-
java -jar "D:\SOFT\opengrok\opengrok-1.7.42\opengrok-1.7.42\lib\opengrok.jar" -W "D:\SOFT\opengrok\opengrok-1.7.42\opengrok-1.7.42\data\configuration.xml" -P -S -v -s "D:\SOFT\opengrok\opengrok-1.7.42\opengrok-1.7.42\source" -d "D:\SOFT\opengrok\opengrok-1.7.42\opengrok-1.7.42\data"
/**注释
*
*
-P 表示为 source root 目录下的每个一级子目录生成一个工程。
-S 表示搜索并添加 “external” source repositories。
-v 表示打印操作的进度信息。
-s 表示指定 source root。
-d 表示指定 data root。
-W 表示指定将配置写到该文件。
*
*
**/
执行上述命令,目录根据自身情况修改。执行完会在data目录中创建索引文件和configureation.xml
-
将lib目录中的source.war文件拷贝到tomcat的D:\SOFT\apache\apache-tomcat-10.0.27\webapps目录下,运行bin\catalina.bat start即可自动解压缩source.war并部署。
-
打开source.war解压后的source文件夹修改WEB-INF/web.xml文件的CONFIGURATION 为第二步生成的 data 目录下的 configureation.xml
-
最后执行./catalina.bat start或者startup.bat启动Tomcat服务即可
遇到的问题
问题一:
kernel-4.4创建索引后,在opengrok中无法执行搜索操作!!!
问题根因:
window不区分文件名大小写,kernel-4.4中又部分文件名称相同大小写不同,导致创建索引报错,
解决方案:
#开启window指定目录文件大小写 我的path = D:\SOFT\opengrok\opengrok-1.7.42\data
fsutil.exe file setCaseSensitiveInfo "<path>" enable
#执行下面指令后才可以执行上面指令
Enable-WindowsOptionalFeature -Online-FeatureName Microsoft-Windows-Subsystem-Linux
问题二:
启动tomcat后没有加载出对应项目的代码
问题根因:
项目代码在服务器,window管理员权限无权访问
解决方案:
使用mklink时采用管理员权限发开cmd,启动tomcat和窗前引用的的时候使用普通的cmd窗口即可
参考链接
https://www.cnblogs.com/bluestorm/p/15502051.html
https://zhuanlan.zhihu.com/p/24369747
fsutil - setCaseSensitiveInfo之后不支持该请求-腾讯云开发者社区-腾讯云
opengrok使用
![](https://i-blog.csdnimg.cn/blog_migrate/ff5dbbbaeb354ec15bc2391542bf4899.png)
-
project:提供在特定目录下搜索,例如在分析 Framework 时,可以选择 frameworks 目录,这样可以减少搜索范围,能够更加精确地定位到需要的源代码。
-
Full Search: 进行全文搜索,会匹配所有的单词、字符串、标识符以及数字等
-
Definition:搜索符号定义相关的代码,
-
Symbol:搜索符号,例如可以搜索类中的成员变量等
-
File Path:搜索源码文件名中包含给定字符串的文件
-
+ 表示包含此字符串,- 表示不包含此字符串。例如在 Full Search 中搜索包含 activity字符串但是不包含 service 字符串的源文件,可以填入+”activity” -“service”(去掉双引号同样可以,但是对于不可分割的词且两者间包含空格则双引号不可去,此规则适用于所有的搜索规则,例如 Full Search “final String”,双引号去除表示或的关系,这个与 Google 的搜索规则是一样的);
-
布尔操作,可以使用 AND(&&),”+”,OR(||),NOT(!)以及”-”(AND 等必须全部大写),例如搜索既包含 final 又包含 String 的源码文件,可以 Full Search 中填入”final” AND “String”;
-
使用通配符,”?”代表一个字符,”*”代表多个字符(“?”和”*”不可用于字符串的开头);
-
模糊查询,可以使用”~”搜索包含与提供的字符串拼写类似的源码文件等内容;
-
转义字符,OpenGrok 中使用到的特殊字符包括+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \ ,因此如果需要搜索的内容中包含这些特殊字符,可以使用\进行转义,例如搜索(1+1):2,可以这样1+11+1\:2