ご意見箱 (作成物の箱用)
作成したVBAに対するご意見やバグ報告などお書きください。yFlowGenの出力ファイル分割 - tmm
2024/12/04 (Wed) 22:04:41
toowakiさん こんにちは
1つのファイルに多数の関数を含むソースコードを食わせるとそれが1つの大きなdotファイルになってしまうのですが1関数1頁のように出力ファイルを分割出力できないでしょうか。それとも入力ファイルを分割してから食わせるしかない?
Re: yFlowGenの出力ファイル分割 - toowaki
2024/12/05 (Thu) 04:54:54
tmm様
ご連絡ありがとうございます。
不思議ですね。tmm様の現象は仕様と異なる動きになっているように思えます。
コマンドラインから実行する場合、通常(デフォルト設定)だと、関数ごとにdotファイルが出力され、-out1fileをつけると1つのdotファイルとして出力されます。
また、エクセルファイルのyFlowGenGUI.xlsmを使う場合は、「1ソースファイルにつき1gml/1dotを出力する」というチェクボックスをoffして実行することで別々に出力されます。
もしよければ、toowaki.fc2@gmail.comにCコードのファイルをお送りいただければ、確認させていただきます。
Re: yFlowGenの出力ファイル分割 - tmm
2024/12/05 (Thu) 20:48:49
toowakiさん こんにちは
迅速なご回答ありがとうございます
ExcelのGUIから起動しているのですが「1ソースファイルにつき1gml/1dotを出力する」のチェックを外した状態でソースファイルを読み込むとファイルの先頭にある1つの関数のdotファイルだけ作成して終了してしまいます。
入力ファイルが大きすぎたのかと思い同梱されていた\sample_c_source\sample_compx.cでやっても先頭の func_f 1個分のfunc_f.dotファイルしかできません
次に「1ソースファイルにつき1gml/1dotを出力する」のチェックを入れて実行させると3個の関数がすべて処理され3つのフローが並んだdotができますが、これが例えば100個ぐらい関数を含む10000行くらいのソースだと2Mbyteくらいのdot、8MbyteくらいのSVGが生成され畳一畳?くらいの図になってしまい何とかできないかと思いました
Re: Re: yFlowGenの出力ファイル分割 - toowaki
2024/12/06 (Fri) 03:43:33
tmm様
ご説明いただきありがとうございます。
yflowGenはCコード内のインデント数を確認しながらコードの関数の最初と最後を認識し、関数の開始から最後を一つのまとまりとしてdotファイルとして出力します。
おそらく、コードの記述のどこかでyflowGenが関数の終わりを認識できず、今回の事象が発生したものと思われます。
事象を確認させていただきますので、もし可能でしたら、機密情報を取り除いた事象が再現するCコードのサンプルファイルをtoowaki.fc2@gmail.comにお送りいただけますと助かります。
Re: yFlowGenの出力ファイル分割 - tmm
2024/12/06 (Fri) 10:40:43
toowakiさん こんにちは
早速のご回答ありがとうございます
やっと原因がわかりました!!
GraphvizはインストールしてあったのですがPATHが通っていませんでした。そのためファイルの先頭の関数をdotにした後、dot.exeでSVG変換しようとして失敗してそこで強制終了したために先頭関数.dotしかできなかったようです。コマンドプロンプトが瞬時で閉じるので気付きませんでした。お騒がせしましてすみません
複雑なフローでも破綻せずに描画していてフローチャートの出来は素晴らしいです。このようなツールを公開していただきありがとうございます!
あと細かいところですが"XXX.dot"ファイルが変換されると"XXX.dot.svg"と拡張子が長くなるのと
長い関数名で引数リストのところが改行されている表記:
void func
(int x,int y,int z)
とかだと生成されるdotファイル名が").dot"になってしまうことくらいです(図の中身の関数名は大丈夫)
Re: Re: yFlowGenの出力ファイル分割 - toowaki
2024/12/06 (Fri) 21:30:31
tmm様
ご確認、ご連絡いただきありがとうございます。
GraphvizのPATHの問題だったということですね。
マニュアルにPathを通す必要があることを追加しておこうと思います。