質問

私が書いているコードのほとんどは Ruby で作られていますが、時々タイプミスをすることがありますが、それはしばらくしてから発見されます。これは、スクリプトで長いタスクを実行していて、戻ってみるとタイプミスがあったことにイライラするものです。

これを克服するのに役立つ、現在開発されている Ruby 用の lint ツールはありますか?多くのソース ファイル (一部は動的にロードされる) を扱うシステム全体でこれを使用することは可能でしょうか?

このスニペットを例として取り上げます。

a = 20
b = 30
puts c

賞金を獲得するには、 c 変数は作成されていない/未定義です。

役に立ちましたか?

解決

Diamondback Ruby を試してみてください。 Rubyコードの静的型チェックを実行するため、未定義の変数を使用したことであなたを責めます。

DRubyは現在進行中の研究プロジェクトですが、小さな自己完結型のRubyスクリプトに対してはすでに非常にうまく機能しています。現在、Ruby標準ライブラリの多くをすぐに分析することはできません“すぐに使える”。現在、Ruby on Railsの入力に取り組んでいます(最新の論文)。

他のヒント

  • ruby -c myfile.rb Ruby の構文が正しいかどうかをチェックします。
  • リーク Ruby コードに一般的なコードの匂いがないかどうかをチェックします。
  • ルーディ 一般的なオブジェクト指向設計の問題について Ruby コードをチェックします。
  • フロッグ 異常に複雑なコードについて警告することができます。

[プラグ] プロジェクトがパブリック Github リポジトリにある場合、 キャリパー 後者の 3 つのツールとその他のツールは、コミットするたびにコード上で実行できます。(免責事項:キャリパーの仕事をしています)

ルビーマイン (http://www.jetbrains.com/ruby) 効果があります:

代替テキスト http://img707.imageshack.us/img707/5688/31911448.png

以下のいずれも、RubyMine が行うすべての分析を行うわけではありません。

  • NetBeans Ruby パック
  • アプタナ RadRails
  • gVIM (scrooloose による構文プラグインを使用)

これらのそれぞれには、括弧の数が間違っている、defs、ends、中括弧が多すぎるなどの構文エラーを識別する機能があります。ただし、RubyMine のように無効なメソッド呼び出しを識別するものはありません。

その理由は次のとおりです。それは難しい。

Ruby は非常に動的であるため (および「c」のようなメソッドはその場で簡単に生成できます)、存在しない変数/メソッドを識別しようとするエディターでは、環境全体の大部分をロードし、複数のプログラム フロー パスを用意する必要があります。正確な「妥当性」の結果を得るために常にテストされています。これは、ほとんどすべてのプログラミングが静的である Java よりもはるかに困難です (少なくとも私が帽子を脱いだときはそうでした)。

オンザフライでメソッドを簡単に生成できるこの機能が、コミュニティがテストをこれほど高く評価している理由の 1 つです。ぜひテストしてみることをお勧めします。

RuboCop をご覧ください。これは、 Ruby Style Guide に基づくRubyコードスタイルチェッカーです。それはかなり積極的に維持され、すべての主要なRuby実装をサポートしています。 Ruby 1.9およびRuby 1.9でうまく動作し、Emacsとの統合が優れています。

はい。 Test :: Unit

OK Javaのようなものが必要とするよりも多くのテストを書く。

したがって、記録については、Ruby標準ライブラリまたは他のテストフレームワークの 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!

まだ使用していませんが、有望に聞こえます(これをテストすると更新されます)。

https://github.com/michaeledgar/laser

Rubyコードの静的分析とスタイルリンター。

Pelusa は便利ですが、Rubiniusでのみ動作しています。ただし、これはRVMに馴染みのある人にとっては問題ではありません。

avdi@lazarus:~$ irb
>> a = 20
=> 20
>> b = 30
=> 30
>> puts c
NameError: undefined local variable or method `c' for main:Object
        from (irb):3
>>

やっぱり、このツールは「IRB」と呼ばれています。賞金はもらえますか?

私は半分冗談を言っています。 Rubyで、何かが定義されているかどうかを知りたい場合は、コードを実行する必要があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top