[Gauche-devel-jp] 未使用のモジュールを指摘する機能

Back to archive index

Rui Ueyama rui31****@gmail*****
2006年 10月 20日 (金) 11:07:16 JST


みなさんこんにちは。

インポートしている未使用のモジュールを指摘する機能を作成してみまし
た。不要なインポートはロード時間が長くなる原因になるし、見た目にも
ズラッと並んでわずらわしいんですが、どれが必要なのかわかりにくいの
で削除できないと思います。それをテストで検出できればよいと思って作っ
てみた機能です。

gauche.testのtest-moduleがエラーを報告します。:allow-unusedキーワー
ド引数でエラーを抑制できます。

コンパイルするgoshの変数を使っているので、パッチをあてたあと2回ビ
ルドしてください。makeしてインストールし、make cleanしてから、もう
いちどmakeしてインストールします。


実装ですが、コンパイラのグローバル変数の解決に手を加えて、コンパイ
ラのフラグが立っているとき、変数が見つかった先のモジュールを探し元
のモジュールと関連づけて記録しておくようにしました。gauche.testの
test-moduleがそのリストを見て、インポートしている未使用のモジュー
ルを報告します。gauche.testをrequire (use)するとフラグを立てます。
なんだかんだでコンパイラに多少変更を加えることになってしまいました。

変数の解決は実行時にも行われますが、これは辻本さんの作った既存の未
定義の変数を見つけるのと同じようにモジュールが探されます。

インポートしたモジュールのマクロだけを使っていて、コンパイルと実行
が分かれているときは、マクロがコンパイル時に展開されてコンパイル後
のコードに残らず、モジュールを使っているかどうか分からなくなってし
まいます。srfi-11のlet*-valuesなどがこれにあたります。そんなケース
のためにgencompに手を加えて、コンパイル時に使ったモジュールのリスト
をコンパイルしたコードに残しておくようにしました。

また、未定義の変数を見つける既存の機能にバグがあったのですがこれも
ついでに直しておきました。VMコードが参照しているVMコードをスキャン
していなかったので、internal defineの内部の未定義変数がエラー通知
されていませんでした。

--
植山 類 <rui31****@gmail*****>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: module-use.patch
型:         application/octet-stream
サイズ:     15727 バイト
説明:       無し
Descargar 


Gauche-devel-jp メーリングリストの案内
Back to archive index