2021-09-08 opengrok比lxr先进

在同样的Ubuntu服务器上,OpenGrok的效率比LXR要高很多。扫描整个Android AOSP代码,LXR需要18个小时以上,而OpenGrok只需要4个小时。

搭建方法:
https://blog.messyidea.com/archives/44/

对比:
https://daimajiaoliu.com/daima/60f312f2e6e6803

tomcat修改:
catalina.sh
300 # add by guolongji
301 JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx20g"

非常神奇的替换JAVA中文件的方法!!!
unzip source.war WEB-INF/web.xml
edit web.xml and re-package the jar file.
zip -u source.war WEB-INF/web.xml

opengrok-deploy -c /opengrok/etc/configuration.xml
/opengrok/dist/lib/source.war /var/lib/tomcat10/webapps

java
-Djava.util.logging.config.file=/home/fb-3/guolongji/opengrok/etc/logging.properties
-jar /home/fb-3/guolongji/opengrok/dist/lib/opengrok.jar
-c /usr/local/bin/ctags
-s /home/fb-3/guolongji/opengrok/src/ -d /home/fb-3/guolongji/opengrok/data -H -P -S -G
-W /home/fb-3/guolongji/opengrok/etc/configuration.xml -U http://localhost:8080/source

opengrok-deploy -c /home/fb-3/guolongji/opengrok/etc/configuration.xml
/home/fb-3/guolongji/opengrok/dist/lib/source.war /home/fb-3/guolongji/tomcat/apache-tomcat-10.0.10/webapps

解决路径问题十分耗时,也不是很必要,所以:

重来一遍,按照别人网页上面的所有默认的,知道了吗?yes,sir!

opengrok太多的优化项了:
https://blog.csdn.net/wd229047557/article/details/94571186

别人的方法:

java -Xmx8g -jar ~/software/opengrok/opengrok-1.2.23/lib/opengrok.jar
-c /opt/software/universal-ctags/bin/ctags
-s ~/software/src
-d ~/software/opengrok/opengrok-1.2.23/data -H -P -S -G -v
-W ~/software/opengrok/opengrok-1.2.23/etc/configuration.xml
-U http://localhost:8080/source
-m 256

最终的解决方法!!!!!!:
java -Xmx8g
-Djava.util.logging.config.file=/opengrok/etc/logging.properties
-jar /opengrok/dist/lib/opengrok.jar
-c /usr/bin/ctags
-s /opengrok/src/ -d /opengrok/data -H -P -S -G
-W /opengrok/etc/configuration.xml -U http://localhost:8080/source
-m 512

opengrok-deploy -c /opengrok/etc/configuration.xml /opengrok/dist/lib/source.war /var/lib/tomcat10/webapps

极大提高opengrok的索引速度!!!

export JAVA_OPTS="-Xmx8192m -server"
export OPENGROK_FLUSH_RAM_BUFFER_SIZE="-m 256"

下面这两行可以极大加速index的速度

export OPENGROK_SCAN_REPOS=false
export OPENGROK_GENERATE_HISTORY=off

把索引历史去掉了,这个看起来还是很不错滴!

#######################################
(1)
opengrok-deploy -c /opengrok/etc/configuration.xml /opengrok/dist/lib/source.war /tomcat/webapps

java
-Djava.util.logging.config.file=/opengrok/etc/logging.properties
-jar /opengrok/dist/lib/opengrok.jar
-c /usr/bin/ctags
-s /opengrok/src/ -d /opengrok/data -H -P -S -G
-W /opengrok/etc/configuration.xml -U http://localhost:8080/source

不使用localhost的话需要验签!

opengrok-indexer
-J=-Djava.util.logging.config.file=/opengrok/etc/logging.properties
-a /opengrok/dist/lib/opengrok.jar --
-c /usr/bin/ctags
-s /opengrok/src -d /opengrok/data -H -P -S -G
-W /opengrok/etc/configuration.xml -U http://localhost:8080/source
-m 512

opengrok构建索引也太耗时了吧,需要4个小时,虽然说后续改动的话索引会快很多。
opengrok大功告成!

后续?用什么?感觉最简单的还是用vim cscope和grok啊。静态的看一下大项目也可以!

tinyhttp,转发,安装python管理器,之后按照文档一步一步做。其中不少步骤是文档中没有体现出来的!!!

又是dmesg:

70203 66731 65348 18011 60909 80605

vim最大化窗口:
https://lotabout.me/2015/Vim-%E6%9C%80%E5%A4%A7%E5%8C%96%E5%BD%93%E5%89%8D%E7%AA%97%E5%8F%A3/
太厉害了!

vim实用技巧:
https://zhuanlan.zhihu.com/p/128656618

"允许<BS>键删除自动缩进产生的空白字符、换行符和非本次输入的字符
set bs=indent,eol,start 

"设置搜索字符串高亮
set hlsearch
"设置增量搜索
set incsearch 

"设置viminfo
set viminfo='100,<50,s10,%

"设置行号
set number
"或者设置相对行号
" set relativenumber

"设置当请行有下划线
set cursorline
au ColorScheme * hi! Cursorline cterm=bold ctermbg=236 guibg=Grey90
au ColorScheme * hi! CursorLineNr cterm=bold ctermfg=159 ctermbg=236 guibg=Grey90
"设置光标列
set cursorcolumn
au ColorScheme * hi! CursorColumn cterm=bold ctermfg=250 ctermbg=232 guibg=Grey90

"设置背景为亮的
set background=light
"设置颜色组合为默认
colorscheme default
"触发ColorScheme事件时设置自定义配色方案,实现了4组

function! Get_Mode()
    let mode_opts =
        \ {
            \ 'n': 'Normal',
            \ 'no': 'Operator-pending',
            \ 'v': 'visual',
            \ 'V': 'VISUAL',
            \ 'CTRL-V': 'VB',
            \ 'i': 'Insert',
            \ 'R': 'Replace',
            \ 's': 'Select',
            \ 'S': 'Select',
            \ 'CTRL-S': 'Select'
        \ }
    let mode = mode()
    if has_key(mode_opts, mode)
        return mode_opts[mode]
    else
        echo "get mode error!!!"
    endif
endfunc

" set status line
" colorscheme will run hi clear, which clear you own color settings so need
" autocmd to keep you color settings
autocmd ColorScheme *
    \ hi User1 ctermbg=DarkBlue ctermfg=Red guibg=DarkBlue guifg=Red |
    \ hi User2 ctermbg=DarkBlue ctermfg=Yellow guibg=DarkBlue guifg=Red |
    \ hi User3 ctermbg=White ctermfg=Green guibg=White guifg=DarkBlue |
    \ hi User4 ctermbg=White ctermfg=Blue guibg=DarkBlue guifg=Red |
    \ hi User5 term=bold cterm=bold ctermfg=17 ctermbg=190 gui=bold guifg=#00005f guibg=#dfff00 |
    \ hi User6 ctermfg=190 ctermbg=238

"hi! StatusLine ctermfg=White ctermbg=DarkGreen
set statusline =\ %5*%{Get_Mode()}%*
set statusline+=\ %6*[%-6.100F]%*
"设置状态栏,%4*表示选择第4组自定义颜色,%-表示文件名在左侧显示(相对于文件名的长度小于最短字符个数的情况),6.100表示文件名最少占6个字符最多占100个字符,F显示文件的绝对路径,%*是选择自定义颜色的结束标志
"%2*选择第2组自定义颜色,%r显示文件的只读属性”[RO]”,%*表示选择用户自定义颜色的结束
set statusline+=\ %2*%r%*
"当打开preview窗口时显示"[Preview]"
set statusline+=%w
"%1*选择第1组自定义颜色,%m显示文件被修改过的标记为”[+]”,%*表示选择用户自定义颜色的结束
set statusline+=\ %1*%m%*
"%=表示状态栏左栏和右栏的分界
set statusline+=%=
"%l显示行号,%c显示列号
set statusline+=%l,%c
"%p显示插入符所在位置在文件中的百分比,%%显示一个百分比字符
set statusline+=\ %p%%
"%3*选择第3组自定义颜色,%{&fileformat}表示读取’fileformat’选项的内容显示到状态栏上,%*表示选择用户自定义颜色的结束
set statusline+=\ [%3*%{&fileformat}%*]
"2表示总是显示状态栏
set laststatus=2

"设置命令行补全行为为列表模式
set wildmode=longest:list

"设置补全菜单的行为,menuone表示只有一条匹配时也显示菜单,noinsert表示弹出菜单时不插入选项
set completeopt=menuone,noinsert

"保存修改历史到文件中
set undofile
"设置修改历史文件的保存路径
set undodir=~/.vim/undodir

"打开文件类型检测功能,并在必要时自动加载用户定义的插件,’runtimepath’选项定义了Vim加载插件的路径
filetype plugin on

"打开语法高亮 
syntax on

"设置每行的文本宽度为80个字符
set textwidth=80
"删除允许超过屏幕长度行的属性
set formatoptions-=l
"当字符数到达textwidth设置的值时,自动换行
set formatoptions+=t

" 使能所有的帮助文档,包括来自第三方的文档
silent! helptags ALL

"TagList插件参数设置
let Tlist_Ctags_Cmd ='/usr/bin/ctags'
let Tlist_Exit_OnlyWindow = 1
let Tlist_File_Fold_Auto_Close= 1
let Tlist_Inc_Winwidth = 0

"WinMananger插件参数设置
let g:winManagerWindowLayout = "FileExplorer,TagList|BufExplorer,Qucikfix"
let g:persistentBehaviour = 0

"配置cscope的输出到quickfix窗口中
set cscopequickfix=s-,c-,d-,i-,t-,e-,a-
"自动加载cscope产生的符号数据库
if has("cscope")
    set csprg=/usr/bin/cscope
    set csto=0
    set cst
    set nocsverb

    " add any database in current directory
    if filereadable("cscope.out")
        cs add cscope.out
    " else add database pointed to by environment
    elseif $CSCOPE_DB != ""
        cs add $CSCOPE_DB
    endif
    set csverb
endif
"映射cscope的快捷键
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>
nmap <C-\>i :cs find i <C-R>=expand("<cfile>")<CR><CR>:copen<CR>

"F1打开quickfix窗口
nmap <F1> :copen<CR>
"F2关闭quickfix窗口
nmap <F2> :ccl<CR>
"F3控制TagList窗口
nmap <F3> :Tlist<CR>
"设置CTRL-C复制所选的内容到剪切板
nmap <C-c> “+y<CR>

"关闭当前搜索高亮
nnoremap <Leader>l :nohls<CR>

"选择要跳转的tag
function! GotoJump()
    jumps
    let j = input("Please select your jump: ")
    if j != ''
        let pattern = '\v\c^\+'
        if j =~ pattern
            let j = substitute(j, pattern, '', 'g')
            execute "normal " . j . "\<c-i>"
        else
            execute "normal " . j . "\<c-o>"
        endif
    endif
endfunction

nmap <Leader>jj :call GotoJump()<CR>

"自动更新ctags的符号数据库
function! DelTagOfFile(file)
    let fullpath = a:file
    let cwd = getcwd()
    let tagfilename = cwd . "/tags"
    let f = substitute(fullpath, cwd . "/", "", "")
    let f = escape(f, './')
    let cmd = 'sed -i "/' . f . '/d" "' . tagfilename . '"'
    let resp = system(cmd)
endfunction

function! UpdateTags()
    let f = expand("%:p")
    let cwd = getcwd()
    let tagfilename = cwd . "/tags"
    let cmd = 'ctags -a -f ' . tagfilename . ' --c++-kinds=+p --fields=+iaS --extra=+q ' . '"' . f . '"'
    call DelTagOfFile(f)
    let resp = system(cmd)
endfunction
" autocmd BufWritePost *.cpp,*.h,*.c call UpdateTags()

"Vim退出时自动保存指定类型的文件
function! SaveFile()
    if filewritable(bufname("%")) && getbufvar("%","&modified")
       write
    endif
endfunction

"设置默认的智能补全函数
if has("autocmd") && exists("+omnifunc")
    autocmd Filetype *
       \  if &omnifunc == "" |
           \  setlocal omnifunc=syntaxcomplete#Complete | 
       \  endif
endif
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容