私が書いたコードのほとんどはRubyで書かれており、たまにタイプミスをして、しばらくするとキャッチされてしまいます。スクリプトで長いタスクを実行しているときに、タイプミスがあったことに気付くと、これはイライラします。
これを克服するのに役立つ、活発に開発されたRuby用のlintツールはありますか?多くのソースファイルを処理するシステム全体で使用できますか?それらの一部は動的にロードされますか?
このスニペットを例として取り上げます。
a = 20
b = 30
puts c
賞金を獲得するには、c
変数を未作成/未定義として検出するツールを見せてください。
Diamondback Ruby 試してみてください。 Rubyコードの静的タイプチェックを行うため、未定義の変数を使用したことで非難されます。
DRubyは進行中の研究プロジェクトですが、小さな自己完結型のRubyスクリプトに対しては、すでに非常にうまく機能しています。現在、Ruby =標準ライブラリ「すぐに使える」。現在、彼らは入力に向けて取り組んでいますRuby on Rails(彼らの 最新の論文を参照) )。
RubyMine ( http://www.jetbrains.com/Ruby )はトリックを行います:
代替テキストhttp://img707.imageshack.us/img707/5688/31911448.png
以下のいずれも、RubyMineが実行するすべての分析を実行するわけではありません。
これらはそれぞれ、括弧の数が間違っている、定義、終了、中括弧が多すぎるなどの構文エラーを識別する機能があります。ただし、RubyMineのように無効なメソッド呼び出しを識別するものはありません。
理由は次のとおりです。難しいです。
Rubyは非常に動的であるため(そして 'c'のようなメソッドはその場で簡単に生成できます)、存在しない変数/メソッドを識別しようとするエディターは、正確な「有効性」の結果を得るために、環境全体がロードされ、複数のプログラムフローパスが常にテストされています。これは、ほとんどすべてのプログラミングが静的であるJavaよりもはるかに困難です(少なくとも、私はその帽子を落としました)。
その場でメソッドを簡単に生成できるこの機能は、コミュニティがこのように高い評価を得ている理由の1つです。テストもお勧めします。
RuboCop をご覧ください。これはRuby Rubyスタイルガイド に基づくコードスタイルチェッカーです。かなり積極的に維持され、すべての主要なRuby実装をサポートします。 Ruby 1.9および2.0でうまく機能し、Emacsとの統合が優れています。
Test::Unit
わかりました、あなたはすでにこれを知っていて、ある意味ではこれは役に立たない答えですが、ダックタイピングの否定的な結果を引き起こします。(現時点では)テストを追加するだけではどうしようもありません。 Javaのようなものが必要になるかもしれません。
したがって、記録については、Ruby標準ライブラリまたは他のテストフレームワークの1つにあるTest::Unit
を参照してください。
実行して再実行できる単体テストを用意することがエラーをキャッチするための最良の方法であり、Rubyのような動的言語ではさらに多くの単体テスト(エラーではなくテスト:-)が必要です...
nitpick あなたが探しているものかもしれません。
このコードで:
class MyString < String
def awesome
self.gsub("e", "3").gsub("l", "1").uppercase
end
end
puts MyString.new("leet").awesome
...出力:
$ nitpick misspelling.rb
*** Nitpick had trouble loading "misspelling.rb":
NoMethodError undefined method `uppercase' for "133t":MyString
Nothing to report boss! He's clean!
Pelusa は素晴らしいですが、rubiniusでのみ動作しています。ただし、これはRVMに精通している人にとっては問題にはならないはずです。