プレイ日記
ナツキ natukin1978
非参照関数 削除ツール UNREF DELETER Ver 0.01 【M3S8QXK1】
9そうだね
プレイ済み
返信[1]
親投稿
ナツキ natukin1978
昨日、私が独り言で話していた「関数の依存を調べて、関数やグローバル変数を抜き出すツール」です。 公開しないつもりでしたが、とりあえず「おんつく」など限定的には使えるので公開します。 他の方が書いたプログラムを解析して動かない可能性が高いです。 動作をチュートリアル方式で進めます。
0そうだね
プレイ済み
返信[2]
親投稿
ナツキ natukin1978
UNREF DELETER 自身に解析をかけてみます。 起動後「UNREF_DELETER_」を選択します。 ちょっと待ちますが、お待ち下さい。
0そうだね
プレイ済み
返信[3]
親投稿
ナツキ natukin1978
定義してある関数が全て列挙されます。おんつくのファイル選択などでお馴染みのインターフェースです。
0そうだね
プレイ済み
返信[4]
親投稿
ナツキ natukin1978
main関数を抽出してみます。mainにカーソルを合わせてXボタンを押して下さい。チェックが付きます。 チェックを付けたらAボタンを押して下さい。 MAIN と入力して絞り込みもできますが、項目が多いので少し重いです。
0そうだね
プレイ済み
返信[5]
親投稿
ナツキ natukin1978
下画面でファイル名を入力します。とりあえず末尾の_(アンダーバー)を消してから決定して下さい。
0そうだね
プレイ済み
返信[6]
親投稿
ナツキ natukin1978
ちなみに元ファイルと同じファイル名にはできません。元ファイルはとても大事なので……
0そうだね
プレイ済み
返信[7]
親投稿
ナツキ natukin1978
元ファイルは165068バイトでしたが、抽出後は21245バイトになりました。 UNREF_DELETER をロードして編集画面に移動下さい。 ちなみにまだ動きません。手直しが必要です。
0そうだね
プレイ済み
返信[8]
親投稿
ナツキ natukin1978
ちなみに実行したら、こうなります。エラーの箇所を直していきます。
0そうだね
プレイ済み
返信[9]
親投稿
ナツキ natukin1978
273,274行目は不要なので削除します。 勘の良い人は「何でツールが削除してくれないの?」と思うかもしれません。このツールは関数定義は消しますが、呼び出し箇所は消してくれません。
0そうだね
プレイ済み
返信[10]
親投稿
ナツキ natukin1978
実行したら、別のエラーがでました。 編集画面の該当箇所に行きましょう。
0そうだね
プレイ済み
返信[11]
親投稿
ナツキ natukin1978
295,296行目の関数は、参照していない関数と判定されて削除されましたので、これも削除します。
0そうだね
プレイ済み
返信[12]
親投稿
ナツキ natukin1978
次、実行したら、実行できました。 一応、プログラムを一通り動かして、問題なければ成功です。
0そうだね
プレイ済み
返信[13]
親投稿
ナツキ natukin1978
今回は2箇所の修正で済みましたが場合によっては、かなり手こずるかもしれません。 main関数は根幹の関数なので参照している関数やグローバル変数が多いですが、小さな関数だと依存が少ない事が多いので、ぐっと減ります。 興味がある人は色々試してみて下さい。
0そうだね
プレイ済み
返信[14]
親投稿
ナツキ natukin1978
念をおして言いますが、このツールは「音楽つくろうぜ!(おんつく)」のプログラムソース向けに作りました。(UNREF DELETERが解析できるのは、おんつくを改造して作ったから) よって他の人が書いたプログラムでは正常に動作しないかもしれません。が、動く様に修正する予定は現在のところありません。
0そうだね
プレイ済み