kazurayam / vba-callgraph

Generating a Call Graph for Excel VBA workbooks
https://kazurayam.github.io/VBACallGraph/
Apache License 2.0
1 stars 0 forks source link

ひとつのSubがどこで使われているかをshellコマンドで検索することができる、それで十分なんじゃないか?ANTLRイラナイ #6

Closed kazurayam closed 3 months ago

kazurayam commented 3 months ago

VBAのソースコードをRubberduckでexportしてテキストファイルにすることはできた。 私はひとつのSubを取り上げて、それがどこか他所で参照されているかどうかを調べたい。 さてどうやって実現するか?

VBAのソースコードを構文解析してAbstract Syntax Treeを生成し、そこからGraphVizで画像を描画する、ということをイメージしてみた。が、まあ、実現するのが難しい。

もっと簡単な対処方法があるのではないか?bashシェルのgrepコマンドで.basや.clsという名前のテキストファイル群をスキャンしまくればいいだけなんじゃないの?

kazurayam commented 3 months ago

KVLプロシージャー一覧を作る.bas というprocedureを作った。もうずっと前に。

https://github.com/aogan-office/kazurayam-vba-lib/blob/master/office/exported-vba-source/kazurayam-vba-lib/KVL%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC%E4%B8%80%E8%A6%A7%E3%82%92%E4%BD%9C%E3%82%8B.bas

このprocesureを実行すると、ブックの中に含まれているSubやFunctionの名前を列挙したテキストが生成される。このテキストのことをProcedureListと呼ぶことにしようか。7つあるExcelワークブックそれぞれについてProcedureListを出力しよう。テキストファイルが7つできる。この7つを手かがりとしてシェルのfind grepコマンドを動かせば、参照関係を文字にすることができると思う。

VBAのソースコードをANTLRで構文解析するんじゃなくてKVLプロしじゃー一覧が同等の情報を出力できるわけだ。

いいんんじゃないか?

kazurayam commented 3 months ago

もういい