2013-02-23 18 views
5

Ruby ile uyarıları göstermek için -w işaretli ruby numaralı telefonu arayabilirsiniz. Kütüphaneleri kullanırken Ruby, üzerinde çalıştığınız dosyalardan uyarıları bulmak zor olacak şekilde çok sayıda uyarı gösterebilir. Sadece bazı dosyalar için uyarı göstermek için ruby söylemek mümkün mü?Uyarıların gösterileceği dosyaları nasıl seçebilirim?

Sorunu açıklayan bir örnek aşağıdadır. Aşağıdakiler çok sayıda uyarı üreten bir kütüphaneyi yükler ve aynı zamanda bir sabiti yeniden tanımlayarak kendi başına bir uyarı üretir.

Bu durumda
 
/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 

Ben sadece diğer uyarılar kütüphanelere nedeniyle bu yana sadece son uyarısını

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

görmek istiyorum şu şekildedir:

require 'grooveshark' 

CONSTANT = 'foo' 
CONSTANT = 'bar' 

ruby -w warning_test.rb çıkışı olan Onları ilginç olmadığı için uyarılar üzerinde doğrudan kontrol sahibi değilim. Ruby’ye, sadece bir proje için uyarılar göstermesini söyleyebilmeyi isterdim.

Akımın tanımlanmasının zor olabileceğini anlıyorum. Belki de sadece verilen dosya ve uyarıların gösterilmesi için require_relative numaralı dosyalarda yer alır. Başka bir alternatif, dizin yapısına yakın olan dosyalar için verilen dosyaya uyarı göstermektir.

+0

bahsediyorsun uyarı ne tür: İşte bir örnek? –

+0

@AndrewMarshall: istisnalar, belki? –

+0

@AndrewMarshall "ruby" ile kullandığınız zaman aldığınızlara atıfta bulunuyorum. –

cevap

1

Stderr'i stdout'a ve ardından grep'e yönlendirebilirsiniz.

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

+0

Başka bir alternatif ise, 'grep -v gems' kullanarak kütüphaneleri dağıtmaktır. –

İlgili konular