18

構文エラー、予期しない $end、keyword_end が必要です

私たちは皆そこにいました!git diff一見しただけでは明らかではないほど十分なコードが変更されたと仮定すると、不足しているものを見つける簡単な方法はありますかend(Python のようなインデントベースの言語に切り替える以外に) ?

FWIW、私は Sublime Text 2 をエディターとして使用しています。

4

3 に答える 3

36

Ruby 1.9 を使用している場合は、Ruby-wプログラムを実行するときにフラグを試してください。

# t.rb
class Example
  def meth1
    if Time.now.hours > 12
      puts "Afternoon"
  end
  def meth2
    # ...
  end
end

ruby t.rb  
=> t.rb:10: syntax error, unexpected $end, expecting keyword_end

ruby -w t.rb
=> t.rb:5: warning: mismatched indentations at 'end' with 'if' at 3
   t.rb:9: warning: mismatched indentations at 'end' with 'def' at 2
   t.rb:10: syntax error, unexpected $end, expecting keyword_end

ソース:

http://pragdave.blogs.pragprog.com/pragdave/2008/12/ruby-19-can-check-your-indentation.html

于 2012-10-12T01:19:07.193 に答える
3

2020 年 12 月以降、欠落している s を検出するのに役立つdead_endend gem もあります。

開始する最も簡単な方法は、gem をインストールすることです。

gem install dead_end

スキャンするファイル名を指定して、コンソールから直接実行します。

dead_end myfile.rb

これにより、より役立つエラー メッセージが表示されます。

  43          if (col_idx - 1) % 3 == 0
  50            if !contains?(doc, node)
❯ 51              doc.add_child(node)
❯ 52              tree.
  53            end
  54          end

その他のオプションについては、ドキュメントを参照してください。

于 2021-03-23T20:30:51.633 に答える
2

Rails を使用している場合は、特に -w フラグを指定して問題のあるファイルを実行できます。

それでも問題の不一致が見つからない場合、この問題を解決するための私の頼りになる方法は、問題のある領域を特定できるまで、コードのチャンクをコメントアウトすることです.

OS X では、コマンド + / を使用して、強調表示されたテキストをコメントアウトできます。

于 2015-09-26T14:11:49.303 に答える