2011-12-19 17 views
1

私の環境:JRubyの-1.6.5:NoMethodError未定義のメソッド '[]' ゼロの場合:NilClass

jRuby-1.6.5 
Rails 2.3.8 

宝石:

  • actionmailerの(2.3.8)
  • actionpack(2.3 0.8)
  • ActiveRecordの(2.3.8)
  • のActiveRecord-JDBCアダプタ(1.1.1)
  • のActiveRecord-jdbcpostgresqlアダプタ(0.8.2)
  • activeresource(2.3.8)
  • activesupportの(2.3.8)
  • AREL(2.2.1)
  • 快活-城-JAVA(1.5.0145.2 )
  • ビルダー(3.0.0)
  • バンドラ(1.0.21)
  • カピバラ(0.4.1.2)
  • セレリティ(0.8.9)
  • 子プロセス(0.1.8)
  • columnize(0.3.2)
  • 構成(1.2.0)
  • キュウリ(0.10.0)
  • キュウリレール(0.3.2)
  • culerity(0.2.15)
  • database_cleaner(0.6.6)
  • 差分-LCS(1.1.2)
  • factory_girl(1.3.3)
  • fastercsv(1.5.4)
  • FFI(1.0.7)
  • gem_plugin(0.2.3)
  • ガーキン(2.3.5)
  • JDBC-Postgresの(8.4.702)
  • のJRuby-ジャー(1.5.5)
  • (0.7.3)のJRuby-OpenSSLの
  • JSON(1.4.6)
  • json_pure(1.5.1)
  • Launchyの(0.4.0)
  • MIMEタイプ(1.16)
  • 鋸山(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のレール(1.3.3)
  • ルビー・デバッグ(0.10.4)
  • ルビーデバッグベース(0.10。4)
  • ruby​​zip(0.9.4)
  • セレンクライアント(1.2.18)
  • セレンwebdriverを(0.1.4)
  • 源(0.0.1)
  • 用語-ANSICOLOR(1.0 0.5)のJRuby-1.6.5および韻律宝石を使用して
  • 弱虫(0.0.4)
  • のxpath(0.1.3)

は、次のような問題を得た:

アプリとlibフォルダからすべてのルビーのファイルを解析した後、アプリケーション

のルートから韻律の実行は、コマンドラインは次のように出力します

問題は、私はちょうど疑問に、見当がつかないある
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 

それを回避する方法、または回避する方法があります。なぜなら、私のチームは与えられたコードのメトリックを見ることができないため、かなり苛立つからです。

ありがとうございます。

答えて

1

スタックトレースを見てみましょう。それはあなたに多くを伝えます。

スタックの先頭には、saikuro.rb:232が表示されます。それはこれです:

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

あり[]に一つだけのメソッド呼び出しがあるので、line.match(TYPE_REGEX)nilであると仮定しても安全です。何故ですか?まあ、私たちは知らない。しかし、スタックを見ると、我々はをSaikuro::SFileのために@file_handleと読んでいる間、この状況に来たことはかなり確信しています。 TYPE_REGEX=/Type:(.*) Name/と一致する行は見つかりませんでした。

Saikuro::SFile.newが取得しているパラメータを知ることは非常に有益です。狩りを試み、ファイルの内容を調べてください。

関連する問題