2014-12-03 13 views
8

yakut kodunda yakut yazım hatası nasıl kontrol edilir:Ben yazım hatası kontrol etmek şimdi aşağıdaki kullanın

system "ruby -wc path/to/file.rb" 

ama (örneğin, i kodu Refactory) çok fazla dosya varsa çok atık süresi, bu yüzden Benim sorum: ruby ​​kodu sözdizimi çek ruby ​​yol var mı?

+0

görünüyor. Sizin için ilginç olabilir: https://github.com/cypher/git-ruby-syntax-check/blob/master/pre-commit –

+0

Çalışma zamanında sözdizimini kontrol edin? –

+0

Bu satırı nereye koydunuz? – Stefan

cevap

1

Deneyimlerim, kodumun düzgün bir şekilde derlenmiş olup olmadığını kontrol etmenin en kolay yolunun otomatik testleri çalıştırmasıdır. Derleyici, testleri çalıştırmak için derleme veya yalnızca dosyaların doğru bir şekilde okunup denetlenmediği konusunda aynı işi yapacak. Bunu yapmanın bir yolu olmadığına emin değilim ama

MRG

MRI'lar ayrıştırıcı, bunu nasıl erişileceği belirli bir başvuru bulamadık C ile yazılmış. Geçerli bir yakut için

rbx-2.2.10 :039 > Rubinius::ToolSets::Runtime::Melbourne.parse_file("./todo.txt") 
SyntaxError: expecting keyword_do or '{' or '(': ./todo.txt:2:17 

ve: Sadece birisi Rubinius Rubinius yılında

... Yakut daha Yakut farkında yapım biraz zaman geçirdim olsaydı, doğrudan Melbourne aracılığıyla ayrıştırıcı erişim vardır dosya:

rbx-2.2.10 :044 > Rubinius::ToolSets::Runtime::Melbourne.parse_file('./valid.rb') 
=> #<Rubinius::ToolSets::Runtime::AST::Class:0x1e6b4 @name=# <Rubinius::ToolSets::Runtime::AST::ClassName:0x1e6b8 @name=:RubyStuff @line=1 @superclass=#<Rubinius::ToolSets::Runtime::AST::NilLiteral:0x1e6bc @line=1>> @body=#<Rubinius::ToolSets::Runtime::AST::EmptyBody:0x1e6c8 @line=1> @line=1 @superclass=#<Rubinius::ToolSets::Runtime::AST::NilLiteral:0x1e6bc @line=1>> 

Komut Satırı

Şu anda usin ediyoruz Ruby'yi ayrıştırmak için g komut satırı araçları. Eğer Ruby dosyalar arasında döngü bazı yapıyorsanız, belki sadece yanı komut satırı götürme ve benzeri şeyler yapmalıyım: Ruby şöyle

[email protected]:/projects/open/compile-test$ find . | grep ".rb$" | xargs ruby -c 
Syntax OK 

[email protected]:/projects/open/compile-test$ find . | grep ".rb$" | xargs ruby -c 
./invalid.rb:2: expecting $end: ./invalid.rb:2:3 

:

system "find . | grep ".rb$" | xargs ruby -c" 

Kaynaklar

http://rubini.us/doc/en/bytecode-compiler/parser/

6

MR altında, RubyVM::InstructionSequence#compile (relevant documentation) istisnalar atmak hangi (Yakut kodunu derlemek için kullanabilirsiniz inci eğer ere) hatalar şunlardır:

2.1.0 :001 > RubyVM::InstructionSequence.compile "a = 1 + 2" 
=> <RubyVM::InstructionSequence:<compiled>@<compiled>> 

2.1.0 :002 > RubyVM::InstructionSequence.compile "a = 1 + " 
<compiled>:1: syntax error, unexpected end-of-input 
a = 1 + 
     ^
SyntaxError: compile error 
     from (irb):2:in `compile' 
     from (irb):2 
     from /usr/local/rvm/rubies/ruby-2.1.0/bin/irb:11:in `<main>' 
İlgili konular