当前位置: 首页 > news >正文

openGrok大型源码(AOSP/openHarmonyOS等)开发提升检索效率必备神器

 #『编程工具』提升效率征文挑战赛#

由于aosp开发,代码庞大都是G为单位,传统的开发IDE,在搜索上就遇到了检索速度的瓶颈,检索个文件还勉强能行,但是检索文件中的内容就太困难了。在android4.0以前由于源码还比较小,我们还经常使用Source Insight来进行学习和阅读。但是实际工作中提升效率还是建议使用Opengrok。Android也有开放的网站搜索https://cs.android.com/search

什么是openGrok?

OpenGrok 是一个基于网页使用的开源的代码搜索与导航工具,由 Oracle 和开源社区共同维护,主要用于帮助开发者快速理解和导航大型代码库。它的名字来源于“grok”(意为“深刻理解”),旨在通过高效索引和搜索功能,让开发者更轻松地探索代码结构、依赖关系和实现细节。

核心功能

  1. 代码索引与搜索

    • 自动分析代码库(支持 C、Java、Python 等多种语言),生成索引。
    • 支持通过关键词、正则表达式或代码符号(如函数、类名)快速搜索代码。
  2. 交叉引用(Cross-Reference)

    • 定位符号(如函数、变量)的定义位置、调用者(callers)和被调用者(callees)。
    • 显示文件间的依赖关系,帮助理解代码逻辑。
  3. 代码浏览与导航

    • 提供类似 IDE 的 Web 界面,支持逐行查看代码、跳转到定义、查看变更历史等。
  4. 版本控制集成

    • 支持与 Git、SVN 等版本控制系统结合,查看代码的历史修改记录和版本差异。

使用场景?

  • 大型项目维护:快速定位代码位置,减少手动查找时间。
  • 团队协作:通过 Web 界面共享代码知识,新成员快速熟悉项目。
  • 问题排查:追踪 bug 涉及的代码路径,分析依赖关系。
  • 替代轻量级 IDE:当 IDE 性能不足时,作为快速导航代码的辅助工具。

docker方式快速搭建及使用?

我们日常开发,主要是搜索关键代码,所以使用docker搭建是最方便的。

以下是以一个docker三方镜像实例(scue/docker-opengrok:latest)

前提条件:

1.在你的源码linux电脑中安转docker

2.有空闲超过40G的磁盘空间

搭建步骤

1.新建startOpengrokRk.sh文件,

2.写入一下信息

sudo docker run --rm -d \
--name "opengrokRk" \ 
-v ~/disk240/orangePi/Android_12:/src \
-v ~/ReleaseBuild/RkOpenGrok/data:/data \
-p 9092:8080 \
scue/docker-opengrok:latest

上面配置修改为自己的真实路径:
~/disk240/orangePi/Android_12:替换你的源码路径
~/ReleaseBuild/RkOpenGrok/data:替换成你的缓存文件路径
9092:替换成你希望映射的到实体机器访问端口

3.文件授予权限 

chmod 777 ./startOpengrokRk.sh

4.启动脚本

./startOpengrokRk.sh

首次启动会比以上多一个docker镜像多拉取过程(如果网络不通记得配置docker镜像源)。另外构建需要几个小时时间检索生成缓存文件。你可以看到你的磁盘迅速减小。

5.构建后网页打开网址 ip地址:端口号(我的是9092)/source/

6.简单使用

比如我正在提取aosp的TvSettings源码到Android studio,其中Android.bp文件中需要依赖了“SettingsLibDefaults”。需要查找它的源码位置:

我们知道bp的模块命名方式是name:模块名,所以我们范围所有路径“select all”按钮搜索名称"name:SettingsLibDefaults"

可以看到秒出,这可比用vscode在上百G得源码中检索省下太多时间!

写在最后:

opengrok的搜索方式还有很多,如果你会正则表达式/筛选路径/过滤文件格式等等,那就可以看你的习惯了。

我选用的这个版本比较老,好处就是参数配置简单。如果你读docker很熟悉,可以用opengrok官网docker版本(opengrok/docker at master · oracle/opengrok · GitHub),它的ui更加好看,并且优化了功能。

相关文章:

  • Day03_数据结构
  • 微軟將開始使用 Copilot Vision 監控 Windows 10 和 11 用戶的螢幕
  • Python 装饰器
  • 136只出现一次的数字
  • C++性能测评工具
  • 【数据库】在线体验KingbaseES平台,零门槛学习,并快速体验Oracle增改查全基础功能
  • MSPM0G3507学习笔记(二) 超便捷配置led与按键
  • linux thermal framework(5)_thermal core
  • 60days challenge day34
  • Vue3+TypeScript 导入枚举(Enum)最佳实践
  • Docker 镜像相关命令介绍与示例
  • 如何为你的工作站添加“一键切换显示器接口”功能?
  • 限流系列之三:TDMQ for Apache Pulsar 限流技术深度解析
  • 聊聊 Pulsar:Consumer 源码解析
  • Kafka 4.0.0集群部署
  • coze中怎么创建插件
  • KVM高级功能部署
  • 死锁、线程总结
  • 批量调用接口(ApiFox + Postman)
  • 【记录】Ubuntu挂载硬盘
  • 手机网站模板 织梦/友情链接交换标准
  • 做桑拿网站挣钱吗/今日新闻事件
  • 动态网站怎么做/专业网站推广引流
  • 有哪些网站可以做h5/网站网络推广优化
  • 公司网站开发制作/网络seo首页
  • 邯郸网站建设推广/seo关键词分析表