kazurayam / vba-callgraph

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

ある特定のモジュールをWorkbookから拾って矩形をpuファイルに含めるかどうかをモジュール名で選択可能にせよ #20

Closed kazurayam closed 3 months ago

kazurayam commented 3 months ago

v0.1.7のOptionsクラス https://github.com/kazurayam/VBAProcedureUsageAnalyzer/blob/0.1.7/lib/src/main/java/com/kazurayam/vba/Options.java がこうなっている。17行目

    public Boolean shouldExclude(VBAModule module) {
        String moduleNameLowerCase = module.getName().toLowerCase();
        Boolean isUnitTestModule=
                (moduleNameLowerCase.startsWith("test") ||
                        moduleNameLowerCase.endsWith("test"));
        return excludeUnittestModules && isUnitTestModule;
    }

モジュールの名前が "Test" で始まるか、または "Test"で終わるかをチェックしている。例えば

Sub Test_FOO ()

とか

Function BarTest(): As Boolean

とかが該当する。

VBEditorへ追加する拡張 Rubberduck を使ってユニットテストを実装することができる。それをやると名前が"Test"で始まるか”Test"で終わるモジュールを作ることになる。ユニットテストを真面目にやればやるほどモジュールが増える。モジュールが増えると最終的に描画されるクラス図が混雑してしまう。

そこでOptionsクラスのshouldExcludeメソッドを経由して、Indexerクラスがユニットテストのためのモジュールを無視してクラスの矩形をそもそも生成しないように、そういう選択が可能なようにした。それがOptionsの17行めだ。

ところがRubberduckによるユニットテストの他に モジュールを無視してしまいたい場合もある。#14 で示したように「プロシージャー一覧を作る」モジュールをkazurayamは無視したい。

もっと別の名前のモジュールを無視したくなることもあるだろう。だから実行時に除外対象のモジュールを指定できるようにOptionsクラスを修正しよう。

kazurayam commented 3 months ago

v0.1.10 で対応した。

kazurayam commented 3 months ago

v0.1.10 の https://github.com/kazurayam/VBAProcedureUsageAnalyzer/blob/0.1.10/lib/src/main/java/com/kazurayam/vba/FindUsageApp.java が3つのテストを実行した。

FindUsageAppにOptions.KAZURAYAMを指定した場合。エッセンシャルなpuファイルとクラス図が生成された。

test_writeDiagram_Options_KAZURAYAM.pu.txt

diagram-8491140437889689872

これは実用に堪えるレベルだと思う。

kazurayam commented 3 months ago

FindUsageAppにOptions.DEFAULTを指定した場合。「プロシジャ一覧を作る」のモジュールが追加されるため、やや冗長なpuファイルとクラス図が生成された。

test_writeDiagram_Options_DEFAULT.pu.txt

diagram-18268904958079501247

kazurayam commented 3 months ago

FindUsageAppにOptions.RELAXを指定した場合。RubberDuckによるユニットテストのためのモジュールが全部収録され、モジュールの総数がほぼ倍増する。大変に冗長なpuファイルが生成された。

test_writeDiagram_Options_RELAXED.pu.txt

puファイルからPlantUMLで画像を生成しようとしたが、データが大きすぎて処理できなかった。実用的でない。

kazurayam commented 3 months ago

とりあえずこのissueをクローズする。

v0.1.10。