2013-02-23 12 views
5

Um Warnungen mit Ruby anzuzeigen, kann man ruby mit dem Flag -w aufrufen. Bei der Verwendung von Bibliotheken zeigt Ruby möglicherweise viele Warnungen an, so dass es schwierig ist, die Warnungen der Dateien zu finden, an denen Sie gerade arbeiten. Ist es möglich, ruby zu sagen, Warnungen nur für einige Dateien anzuzeigen?Wie kann ich auswählen, für welche Dateien Warnungen angezeigt werden sollen?

Hier ist ein Beispiel zur Veranschaulichung des Problems. Im folgenden Beispiel wird eine Bibliothek geladen, die viele Warnungen generiert. Außerdem wird eine Warnung generiert, indem eine Konstante neu definiert wird.

require 'grooveshark' 

CONSTANT = 'foo' 
CONSTANT = 'bar' 

Der Ausgang des ruby -w warning_test.rb ist wie folgt:

 
/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/exceptions.rb:157: warning: assigned but unused variable - message 
/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/exceptions.rb:167: warning: assigned but unused variable - message 
/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/response.rb:11: warning: method redefined; discarding old body 
/var/lib/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/payload.rb:47: warning: mismatched indentations at 'end' with 'case' at 40 
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:63: warning: assigned but unused variable - status 
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:63: warning: assigned but unused variable - stderr 
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:56: warning: assigned but unused variable - re 
/var/lib/gems/1.9.1/gems/macaddr-1.6.1/lib/macaddr.rb:59: warning: assigned but unused variable - null 
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:126: warning: shadowing outer local variable - cid 
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:213: warning: shadowing outer local variable - buf 
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:215: warning: shadowing outer local variable - buf 
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:208: warning: assigned but unused variable - ignored 
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:252: warning: shadowing outer local variable - key 
/var/lib/gems/1.9.1/gems/systemu-2.5.2/lib/systemu.rb:249: warning: assigned but unused variable - ignored 
/var/lib/gems/1.9.1/gems/grooveshark-0.2.7/lib/grooveshark/user.rb:65: warning: method redefined; discarding old playlists 
/var/lib/gems/1.9.1/gems/grooveshark-0.2.7/lib/grooveshark/user.rb:93: warning: method redefined; discarding old favorites 
warning_test.rb:4: warning: already initialized constant CONSTANT 

In diesem Fall

würde ich nur nur die letzte Warnung

 
warning_test.rb:4: warning: already initialized constant CONSTANT 

Da die anderen Warnungen beruhen auf Bibliotheken sehen möchten Ich habe keine direkte Kontrolle über die Warnungen für sie sind nicht so interessant. Ich würde gerne Ruby sagen können, nur Warnungen für das Projekt zu zeigen, das gerade funktioniert.

Ich weiß, dass die Definition der Stromstärke schwierig sein könnte. Vielleicht nur Warnungen für die angegebene Datei anzuzeigen und Dateien, die über require_relative enthalten sind, würden tun. Eine weitere Alternative besteht darin, Warnungen für Dateien anzuzeigen, die sich in der Verzeichnisstruktur in der angegebenen Datei befinden.

+0

Welche Warnung reden Sie? –

+0

@AndrewMarshall: Ausnahmen, vielleicht? –

+0

@AndrewMarshall Ich beziehe mich auf diejenigen, die Sie erhalten, wenn Sie "-w" mit 'Ruby' verwenden. –

Antwort

1

Sie könnten stderr auf stdout umleiten und dann grep. Hier ein Beispiel:

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

+0

Eine andere Alternative besteht darin, die Bibliotheken mit 'grep -v-Gems 'auszugeben. –

Verwandte Themen