Top/Prog/TagSystem/rtags

目次

rtags

環境構築(debian パッケージを使用)

  1. 必要な関連パッケージをインストールする
    # apt-get install rtags
  2. コマンド名はオリジナルから若干アレンジされているので注意(他パッケージとの名前の干渉を避ける為と思われる)。
    コマンド名
    オリジナルdebian パッケージ版
    rcrtags-rc
    rdmrtags-rdm
    rprp
    • rtags-rc に関しては、9base パッケージの rc コマンドとの重複を避けるためと思われる。
    • 記載が煩雑になるが、本頁では rc, rdm について、説明文中では rc, rdm とし、コマンドラインについては Debian ベースの rtags-rc, rtags-rdm の表記を使用する。

環境構築(自前ビルド)

  1. 必要な関連パッケージをインストールする
    # apt-get install clang libclang-dev cmake
  2. rtags をビルドする(rtags がディストリビューションでパッケージが用意されているなら、そちらを使うと良い)
    1. コードを取得する
      $ git clone --recursive https://github.com/Andersbakken/rtags
    2. ビルドする
      $ cd rtags
      $ git submodule init
      $ git submodule update
      $ mkdir build
      $ cd build
      $ cmake ..
      $ make
      $ sudo make install

  3. rtags をインストールする
    • ビルドすると rtags/build/bin に以下の実行形式が生成されるので、環境変数 PATH の通っているところに配置する。
      $ ls rtags/build/bin
      rtags-rc  rtags-dm  rp

タグを生成する

  1. まず、daemon を起動する
    $ rtags-dm --daemon
  2. タグを生成する方法は2つある

1. rc コマンドに直接渡す

2. rc -Jコマンドで compile_commands.json を読み込ませる

rtags-rdm の終了

プロジェクト情報の unload

current project の切り替え

トラブルシューティング

"Can't seem to connect to server (/run/user/1000/rdm.socket)"

emacs から rtags を使う

emacs の設定

rtags.el の標準キーバインド

bindingfunctiondescriptionremark
C-c r ,rtags-find-references-at-point現在のカーソル位置のシンボルの定義を検索
C-c r .rtags-find-symbol-at-point現在のカーソル位置のシンボルを検索
C-c r /rtags-find-all-references-at-point現在のカーソル位置のシンボルの参照元を検索
C-c r ;rtags-find-file現在のカーソル位置のファイル名を検索複数ある場合は検索対象をTAB補完で選択
C-c r <rtags-find-references
C-c r >rtags-find-symbol対話式に指定したシンボルを検索
C-c r Artags-find-functions-called-by-this-function指定した関数から呼び出している関数を検索結果一覧(*RTags*バッファ)上で [Enter] 押しで、呼び出された側の関数の関数定義に Jump する
C-c r Brtags-show-rtags-buffer
C-c r Crtags-compile-file
C-c r Drtags-diagnostics
C-c r Ertags-preprocess-file
C-c r Frtags-fixit
C-c r Grtags-guess-function-at-point
C-c r Irtags-imenu
C-c r Krtags-make-member
C-c r Lrtags-copy-and-print-current-location現在カーソルがある位置のファイルのパス、行番号、カラム数をミニバッファに表示
C-c r Mrtags-symbol-infoカーソル位置のシンボルのサイズ(sizeof())、アライメントなどの情報を表示
C-c r Ortags-goto-offset
C-c r Prtags-dependency-tree-all
C-c r Rrtags-rename-symbol
C-c r Srtags-display-summary
C-c r Trtags-taglistタグの一覧を表示
C-c r Urtags-display-summary-as-message
C-c r Vrtags-print-enum-value-at-pointenum 値の定義位置にカーソルを置いた状態で実行すると、その enum 定義値の値を表示するenum 値の参照先では機能しない
C-c r Xrtags-fix-fixit-at-point
C-c r Yrtags-cycle-through-diagnostics
C-c r Zrtags-location-stack-visualize
C-c r [rtags-location-stack-back一つ前の検索履歴に戻る
C-c r ]rtags-location-stack-forward一つ先の検索履歴に進むrtags-location-stack-back で一つ以上検索履歴を戻った状態であることが前提
C-c r _rtags-asm-file
C-c r artags-expand-auto
C-c r ertags-reparse-file
C-c r hrtags-print-class-hierarchyクラス階層を表示
C-c r lrtags-list-results
C-c r prtags-dependency-treeソース・ヘッダの依存関係を表示
C-c r trtags-references-tree参照ツリー(指定したシンボルが関数であれば、その callstack に相当する情報)を表示実行した際、画面上何も起こってないように見えるときは、*RTags* バッファを手動で表示する。
*RTags* バッファで [Tab] キーを押すと、カーソル位置の行の呼び出し階層表示が1階層ずつ展開される。
C-c r vrtags-find-virtuals-at-point

機能(一部のみ)

rtags-find-symbol-at-point : カーソルが置かれたシンボルの定義を表示する

カーソルが指しているものジャンプ先備考
実体やポインタ変数定義位置
型名型の定義位置

rtags-print-class-hierarchy : クラス階層構造の表示

rtags-find-all-references-at-point : 参照元(=呼び出し箇所)を全て表示する

検索履歴の移動

rtags-taglist

Makefile に rtags 用 tag 生成の target を仕込む(おまけ)

トラブルシューティング

daemon 起動が SIGABRT (=6) で失敗する

バージョン組み合わせメモ

linux kernel に使えるか?

参考リンク


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-01-05 (金) 19:30:02