1

我的环境:

jRuby-1.6.5
Rails 2.3.8

宝石:

  • actionmailer (2.3.8)
  • 动作包 (2.3.8)
  • 活动记录(2.3.8)
  • activerecord-jdbc-适配器 (1.1.1)
  • activerecord-jdbcpostgresql-适配器 (0.8.2)
  • 主动资源(2.3.8)
  • 主动支持 (2.3.8)
  • 雷尔 (2.2.1)
  • 有弹性的城堡 java (1.5.0145.2)
  • 建设者(3.0.0)
  • 捆绑器 (1.0.21)
  • 水豚 (0.4.1.2)
  • 迅捷 (0.8.9)
  • 子进程(0.1.8)
  • 列化(0.3.2)
  • 配置 (1.2.0)
  • 黄瓜 (0.10.0)
  • 黄瓜导轨 (0.3.2)
  • 治疗 (0.2.15)
  • database_cleaner (0.6.6)
  • diff-lcs (1.1.2)
  • factory_girl (1.3.3)
  • 更快的csv(1.5.4)
  • 菲(1.0.7)
  • gem_plugin (0.2.3)
  • 小黄瓜 (2.3.5)
  • jdbc-postgres (8.4.702)
  • jruby 罐子 (1.5.5)
  • jruby-openssl (0.7.3)
  • json (1.4.6)
  • json_pure (1.5.1)
  • 发射 (0.4.0)
  • 哑剧类型 (1.16)
  • nokogiri (1.4.4.2)
  • 机架 (1.1.0)
  • 机架测试(0.5.7)
  • 导轨 (2.3.8)
  • 耙子 (0.8.7)
  • rcov (0.9.9)
  • rspec (1.3.1)
  • rspec-rails (1.3.3)
  • 红宝石调试(0.10.4)
  • 红宝石调试基础(0.10.4)
  • rubyzip (0.9.4)
  • 硒客户端(1.2.18)
  • 硒网络驱动程序(0.1.4)
  • 来源 (0.0.1)
  • 术语 ansicolor (1.0.5)
  • 弱者(0.0.4)
  • xpath (0.1.3)

使用 jRuby-1.6.5 和度量 gem,遇到以下问题:

从应用程序的根目录执行度量

解析 app 和 lib 文件夹中的所有 ruby​​ 文件后,命令行输出以下内容:

NoMethodError: undefined method `[]' for nil:NilClass
   initialize at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:232
   get_elements at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:169
   initialize at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:130
   assemble_files at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:111
   each at org/jruby/RubyArray.java:1612assemble_files at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:109
   analyze at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/generators/saikuro.rb:27
   send at org/jruby/RubyKernel.java:2093
   generate_report at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/base/generator.rb:130
   each at org/jruby/RubyArray.java:1612
   generate_report at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/base/generator.rb:128
   add at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metric_fu-2.1.1/lib/base/report.rb:60
   run_metric_fu at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/lib/metrical.rb:51
   each at org/jruby/RubyArray.java:1612
   run_metric_fu at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/lib/metrical.rb:51
   run at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/lib/metrical.rb:18
   (root) at c:/jruby-1.6.5/lib/ruby/gems/1.8/gems/metrical-0.0.7/bin/metrical:4
   load at org/jruby/RubyKernel.java:1063
   (root) at c:\jruby-1.6.5\bin\metrical:19

我不知道问题出在哪里,只是想知道如何绕过它,或者避免它,因为这很烦人,因为我的团队看不到给定代码的指标。

先感谢您。

4

1 回答 1

1

让我们看一下堆栈跟踪。它告诉你很多。

在堆栈的顶部,您会看到saikuro.rb:232。它是这个:

https://github.com/jscruggs/metric_fu/blob/4c12cfa9cf20e38d4d1e3e01455613ff48563ad8/lib/generators/saikuro.rb#L232

只有一个方法调用[],因此可以安全地假设它line.match(TYPE_REGEX)nil。这是为什么?好吧,我们不知道。但是看看堆栈,我们相当肯定我们在阅读时遇到了这种@file_handle情况Saikuro::SFile。我们没有找到匹配的行TYPE_REGEX=/Type:(.*) Name/

了解Saikuro::SFile.new正在获取的参数将非常有指导意义。尝试寻找它,并检查文件内容。

于 2012-01-07T04:24:30.693 回答