概要
D-ScannerというD言語のコード行数などを調べるツールの使い方メモです。
コード行数だけでなく、シンボルの定義位置を調べたりトークン数やimportしているモジュールなどを一覧で出力したりできます。
全部は調べ切れていないので、よく使いそうなやつだけピックアップします。
便利な使い方などあれば編集リクエストをお願いします。
準備
D-Scannerはdubで公開されているツールです。
ソースはGitHubにあるので1からビルドしても良いですが、dub経由が圧倒的に楽です。
要するにdubさえインストール済みなら dub fetch dscanner
でダウンロード、 dub run dscanner
で実行できます。
以下、fetchを済ませた前提で実行部分だけ書いていきます。
ちなみにdub run
で動作させるアプリに引数を指定するときはdub run dscanner -- --help
のように--
で区切ってそれ以降に指定します。
手順
行数を調べる (--sloc)
--sloc
を指定することでファイルの行数を調べることができます。
フォルダも指定することができるため、dubでビルドが設定してある場合はsourceフォルダを指定すれば良いです。
# ファイルのコード行数を調べる
dub run dscanner -- --sloc app.d
# 結果例
app.d: 8
total: 8
# dubプロジェクトの行数を調べる
dub run dscanner -- --sloc ./source
# 結果例
./source/app.d: 8
./source/config.d: 26
total: 34
importの一覧を調べる (--imports)
--imports
を指定するとimportしているモジュールがわかります。
# ファイルのimport一覧を調べる
dub run dscanner -- --imports app.d
# 結果例
std.experimental.all
std.experimental.typecons
# dubプロジェクトのimports一覧を調べる
dub run dscanner -- --imports ./source
# 結果例
std.experimental.all
std.experimental.typecons
std.json
std.traits
定義位置を調べる (--declaration/-d)
引数に-d <シンボル名>
を指定すると定義位置調べられます。
VSCodeのコンソールで実行していれば、ファイルパスをctrl+clickすることで対象のファイルが開けます。
(定義位置に飛ぶのもできそうだけどちょっと書式が違う?)
# 定義位置を調べる
dub run dscanner -- -d main
# 結果例
./app.d(19:6)