5

Ruby で警告を表示するrubyには、フラグを付けて呼び出すことができます-w。ライブラリを使用すると、Ruby は多くの警告を表示することがあるため、実際に作業しているファイルから警告を見つけるのは困難です。ruby一部のファイルに対してのみ警告を表示するように指示することはできますか?

問題を説明する例を次に示します。以下は、多くの警告を生成するライブラリをロードし、定数を再定義することによって独自に警告も生成します。

require 'grooveshark'

CONSTANT = 'foo'
CONSTANT = 'bar'

の出力ruby -w warning_test.rbは次のとおりです。

/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/exceptions.rb:157: 警告: 割り当てられているが未使用の変数 - メッセージ
/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/exceptions.rb:167: 警告: 割り当てられているが未使用の変数 - メッセージ
/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/response.rb:11: 警告: メソッドが再定義されました。古い体を捨てる
/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/payload.rb:47: 警告: 40 の 'case' と 'end' のインデントが一致しません
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:63: 警告: 割り当てられているが未使用の変数 - ステータス
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:63: 警告: 割り当てられているが未使用の変数 - stderr
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:56: 警告: 割り当てられているが未使用の変数 - re
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:59: 警告: 割り当てられているが未使用の変数 - null
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:126: 警告: 外部ローカル変数をシャドウイングしています - cid
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:213: 警告: 外部ローカル変数をシャドーイング - buf
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:215: 警告: 外側のローカル変数をシャドウする - buf
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:208: 警告: 割り当てられているが未使用の変数 - 無視
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:252: 警告: 外部ローカル変数のシャドウ - キー
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:249: 警告: 割り当てられているが未使用の変数 - 無視
/var/lib/gems/1.9.1/gems/grooveshark-0.2.7/lib/grooveshark/user.rb:65: 警告: メソッドが再定義されました。古いプレイリストの破棄
/var/lib/gems/1.9.1/gems/grooveshark-0.2.7/lib/grooveshark/user.rb:93: 警告: メソッドが再定義されました。古いお気に入りを捨てる
warning_test.rb:4: 警告: 既に初期化された定数 CONSTANT

この場合、最後の警告のみを表示したい

warning_test.rb:4: 警告: 既に初期化された定数 CONSTANT

他の警告はライブラリによるものであるため、警告を直接制御することはできません。それらの警告はそれほど興味深いものではありません。作業中のプロジェクトの警告のみを表示するよう Ruby に指示できるようにしたいと考えています。

電流を定義するのは難しいかもしれません。おそらく、指定されたファイルと経由で含まれるファイルの警告のみを表示するrequire_relativeことができます。もう 1 つの方法は、ディレクトリ構造内で特定のファイルに近いファイルに対して警告を表示することです。

4

1 に答える 1

1

stderr を stdout にリダイレクトしてから grep することができます。次に例を示します。

ruby -w warning_test.rb 2>&1 | grep "warning_test"

于 2013-05-31T01:26:45.110 に答える