背景
一直比較忙,太久沒寫點東西了,今天介紹下之前做的一個 Emacs 腳本,在公司里主要用 C++ 作為生產語言,平時用 Mac 電腦作業,但是代碼開發都是在遠端服務器上,公司代碼例外龐大,思考不遜色 Linux 內核代碼量,并且源代碼級別依賴的專案更是幾十個,作為 Spacemacs 老用戶平時都是用它做主力生產工具,盡管源代碼在遠端服務器上,我仍然用本地 Mac 上帶 GUI 的 Spacemacs 開發,通過 Oxfs 可以非常容易的將服務器上檔案系統掛到本地進行開發,不卡頓,
開發程序中為了更好的代碼跳轉體驗,嘗試過暴力 grep,到 ripgrep,然后是 cscope,也折騰過 cquery,以及 ccls,在我這種遠端開發模式下都不好用,要么是查找不精確,要么是太慢,要么是難以捕捉出 clang 編譯資料庫,公司用的 Scons 版本太老,也不好升級,最好是能夠幾個命令就能搞定才是我想要的,
opengrok
一有空就會去搜羅一番,看看是否大家有更好方案,一直未果,偶然機會發現了 opengrok,看了專案主頁做的同類工具對比,真是厲害啊,
提供了函式定義,參考查找,全文檢索,檔案查找,甚至 Web UI,直接通過瀏覽器瀏覽源代碼,并隨意跳轉,這方便程度非常高啊,上個圖給大家感受下,

一開始我用 opengrok 瀏覽一些陌生代碼,寫代碼時候用它查找一些依賴的函式定義,查看引數等,還是比較方便,時間久了以后還是覺得麻煩,要是在 Spacemacs 里直接快捷鍵跳轉該多好,有了這個想法首先要調研下別人是否做了類似事情,Google 幾輪下來,還是有人做了 Emacs 對 opengrok 適配,能用的基本上只有 eopengrok.el,該專案在 Emacs 中封裝了 opengrok 命令列,實作我想要的功能,
有個致命的問題,我編輯的代碼在遠端開發機上,opengrok 必須得部署在開發機上,我本地呼叫開發機上 opengrok 命令麻煩,要寫轉換腳本,解決兩端目錄還不一致等問題,再加上opengrok 基于 java開發,開發機上各種環境都比較老舊,且不好動,真是麻煩,
opengrok-restful
未果后,發現了 opengrok 提供了 restful api,突然想到我 Emacs 直接走 restful api 與 opengrok 互動豈不美哉,我本地查找符號,查找定義時,只是和開發機做一次 http 互動,這可太清晰簡單明了,
說干就干,暴力開發了一段時間后,基本上成型可用,專案提交代碼到 github 上了,希望感興趣的童鞋也來嘗試使用鴨~
https://github.com/RainMark/opengrok-restful
目前基本實作了各個專案之間專案查找符號定義,參考,檔案查找等,個人平時使用感徑訓行,上個圖看下,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/252426.html
標籤:C++
上一篇:C++概念性總結
