要使用 Ruby 显示警告,可以ruby
使用 flag调用-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:警告:“end”处的缩进不匹配,“case”处为 40 /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
就可以了。另一种选择是对在给定文件的目录结构中接近的文件显示警告。