문제

대부분의 코드를 쓰는 루비 및 모든면에서는 동안,나는 몇 가지 오타는 단 잡았습니다.이것은 자극이 나는 스크립트를 실행하는 긴 작업,그리고 반을 찾아 나는 오타.

가 적극적으로 개발을 보기 위한할 수 있는 도움을 극복하는 이?그것은 그것을 사용하에서 작동하는 시스템이 많이 소스 파일,그들 중 일부는 동적으로 읽?

이 조각으로는 예제:

a = 20
b = 30
puts c

승리하는 현상금을 내게 보이는 도구는 검출 c 변수로 만들어지지 않/정의되지 않습니다.

도움이 되었습니까?

해결책

할 수 있습 제공 다이아몬드 루비 니다.그것은 정체되 typecheck 의 루비 코드고,따라서 비난을 위해 당신을 사용하여 정의되지 않은 변수가 있습니다.

동 DRuby 은 지속적인 연구 프로젝트,그것은 이미 아주 잘 작동을 위한 작은,self-contained 루비 스크립트가 있습니다.현재,그것은 없을 분석의 표준 라이브러리 루비"out-of-the-box".현재 그들을 향해 입력하는 루비 레일(보 가장 최근의 논문).

다른 팁

  • ruby -c myfile.rb 이 올바른지 확인 Ruby 문입니다.
  • 검사 루비 코드에 대한 일반적인 코드의 냄새를 맡을 수 있습니다.
  • Roodi 검사 루비 코드에 대한 일반적인 객체 지향적 디자인 문제입니다.
  • 여자 할 수 있습에 대한 경고 비정상적으로 복잡한 코드입니다.

[플러그]프로젝트에서는 공 Github 저장소 캘리퍼스 을 실행할 수 있습 후자는 세 가지 도구와 다른 사람에 코드가 모든 시간 명령을 실행해야 한다는 것뿐이다.(면책 조항:제가 작업하고 캘리퍼스)

RubyMine (http://www.jetbrains.com/ruby)지 않:

체 텍스트 http://img707.imageshack.us/img707/5688/31911448.png

도 아래 모든 분석 RubyMine 않습니다.

  • NetBeans 루비 팩
  • Aptana RadRails
  • gVIM(와 syntastic 플러그인에 의해 scrooloose)

이러한 각각의 용량을 확인 구문 오류와 같은 잘못을의 숫자를 괄호 안에 너무 많은 defs,끝나는,교정기,등등.하지만 아무도 확인할 것이 잘못된 메소드를 호출하는 방법 RubyMine 않습니다.

여기에는 이유:그것이 어렵습니다.

루비가 매우 동적인(과 방법은 다음과 같'c'쉽게 생성),어떤 편집기를 식별하려고 존재하지 않는 변수/해야의 많은 부분을 전체 evironment 로드하는 여러 프로그램 흐름을 경로를 지속적으로 테스트를 얻기 위해서 정확'유효성'결과입니다.이것은 훨씬 더 어려운 자바에서 거의 모든 프로그램을 정적(적어도 그 때 내가 떨어졌는 모자).

이 기능을 쉽게 생성하는 방법에 비행은 이유 중 하나는 지역사회 보유하고 테스트하는 높은 존중합니다.정말 추천하려 할 테스트뿐만 아니라.

RuboCop.그것은 루비 코드 스타일에 기반 검사 루비 스타일 가이드.그것은 유지되는 꽤 적극적으로 지원하고 모든 주요 루비 구현입니다.그것은 잘 루비 1.9 2.0 과 Emacs 합니다.

그렇습니다. Test::Unit

Ok,나는 당신이 이미 알고 이는 어떤 의미에서 이것은 비 유용한 답변,하지만 당신은 당신을 가지고 부정적인 결과의 오리 입력 있는 종류의 것(이 시간)없음 방법으로 그냥 주위를 자세히 작성 테스트가 같이 Java 수 있습니다.

그래서,레코드,참조 Test::Unit Ruby 표준 라이브러리는 또 하나의 다른 테스트 frameworks.

데 단위할 수 있는 테스트 실행을 다시 실행하는 가장 좋은 방법 오류를 잡을,그리고 당신이 할 필요가 더 많은 그들(테스트,하지 오류가:-)에서 동적인 언어는 다음과 같 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

정적 분석과 스타일 린터한 루비 코드입니다.

원한다면 자신의 굴을 파서 들어갈 좋은,하지만 작업에 rubinius 니다.이 shouln 할 수 없는 더 원한 사람들에 익숙 해지만.

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

가 ya go,도구입니다"라고 IRB".Do I get 특?

나만을 반 농담입니다.썼는데 이 대답을 잘하면 집 드라이브는 루비에서,당신이 알고 싶은 경우는 무언가가 정의는지, 당신은 코드를 실행합.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top