Repolode
rigortype

rigortype/rigor

코드에 타입 주석을 추가하지 않아도 타입을 추론하고, 정의되지 않은 메서드나 nil 수신자처럼 확실한 버그만 보고하는 Ruby 정적 분석기입니다.

스타
107
포크
1
열린 이슈
538
마지막 커밋
13시간 전

어떤 프로젝트인가요?

Rigor는 정의되지 않은 메서드 호출, 잘못된 인자 개수, 실행 가능한 경로에서 nil일 가능성이 있는 수신자, 도달 불가능한 분기, 항상 참인 조건 등의 버그를 찾는 Ruby 정적 분석 도구입니다. Prism으로 코드를 파싱하고, 표현식의 클래스뿐 아니라 표현식이 만들어 내는 값까지 추적하는 흐름 민감 추론 엔진을 실행합니다. 메시지에는 계산된 값이 포함됩니다. 예를 들어 String에서 정의되지 않은 메서드를 호출했다고 보고하는 대신, 문자열 "hello-world"에서 정의되지 않은 메서드를 호출했다고 보고합니다.

시작하는 데 타입 주석이나 런타임 의존성은 필요하지 않습니다. sig/에 있는 기존 RBS 시그니처를 타입 정보로 읽어들이며, rigor sig-gen으로 추론 결과에서 RBS를 생성할 수도 있습니다. 이 프로젝트는 오탐을 전혀 내지 않는 것을 강조합니다. 수신자 타입을 정적으로 확정할 수 있고 근거가 명확한 경우에만 진단을 출력합니다. Rails, RSpec, Sidekiq, Sinatra, dry-rb 및 기타 gem용 플러그인을 제공하며, rigor-sorbet은 Sorbet 시그니처를 가져옵니다.

이 도구는 rigortype gem으로 전역 설치하며, 검사, 인라인 타입 주석 추가, 진단 분류, 시그니처 생성 명령을 제공합니다. CI 출력 형식으로는 GitHub annotations, GitLab Code Quality, SARIF, JUnit 등이 있습니다.

핵심 기능

  • 01흐름 민감 분석을 사용해 타입 주석이 없는 Ruby 코드에서 값 수준의 타입을 추론합니다.
  • 02정의되지 않은 메서드, 잘못된 인자 개수, nil일 가능성이 있는 수신자를 보고합니다.
  • 03기존 RBS 시그니처를 읽고 추론 결과에서 RBS를 생성할 수 있습니다.
  • 04Rails, RSpec, Sidekiq, Sinatra 및 기타 널리 쓰이는 gem용 플러그인을 제공합니다.
  • 05GitHub annotations와 SARIF 등 CI에 맞는 출력 형식을 지원합니다.

활용 사례

  • 타입 주석을 추가하지 않고 기존 Ruby 코드베이스에서 오타와 정의되지 않은 메서드 호출을 찾습니다.
  • 시간을 두고 점진적으로 해결할 기준선을 설정해 CI에 정적 검사 게이트를 추가합니다.
  • 추론한 타입을 바탕으로 타입이 지정되지 않은 코드의 RBS 시그니처를 생성합니다.
  • 프레임워크 인식 플러그인을 사용해 Rails 애플리케이션의 타입을 검사합니다.

빠른 시작

  1. 1

    mise를 사용해 Ruby 4.0에 Rigor를 전역 설치합니다

    mise use -g ruby@4.0 gem:rigortype
  2. 2

    코드에 Rigor를 실행해 버그를 찾습니다

    rigor check app lib

사용 전 알아둘 점

  • 초기 평가 단계의 릴리스(0.4.x)로, v1.0.0 이전에는 호환성 범위가 변경될 수 있습니다.
  • 자금이 제한된 1인 개발자가 유지 관리하므로 개발 속도가 달라질 수 있습니다.
  • Ruby 전용 분석기이며 다른 언어는 검사하지 않습니다.

포함된 컬렉션

토픽

자주 묻는 질문

rigor은(는) 무엇인가요?
코드에 타입 주석을 추가하지 않아도 타입을 추론하고, 정의되지 않은 메서드나 nil 수신자처럼 확실한 버그만 보고하는 Ruby 정적 분석기입니다. Rigor는 정의되지 않은 메서드 호출, 잘못된 인자 개수, 실행 가능한 경로에서 nil일 가능성이 있는 수신자, 도달 불가능한 분기, 항상 참인 조건 등의 버그를 찾는 Ruby 정적 분석 도구입니다. Prism으로 코드를 파싱하고, 표현식의 클래스뿐 아니라 표현식이 만들어 내는 값까지 추적하는 흐름 민감 추론 엔진을 실행합니다. 메시지에는 계산된 값이 포함됩니다. 예를 들어 String에서 정의되지 않은 메서드를 호출했다고 보고하는 대신, 문자열 "hello-world"에서 정의되지 않은 메서드를 호출했다고 보고합니다.
rigor은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
rigor은(는) MPL-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
rigor은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. rigor의 마지막 커밋은 2026년 11월 6일입니다.
rigor은(는) 어디에 사용할 수 있나요?
타입 주석을 추가하지 않고 기존 Ruby 코드베이스에서 오타와 정의되지 않은 메서드 호출을 찾습니다. 시간을 두고 점진적으로 해결할 기준선을 설정해 CI에 정적 검사 게이트를 추가합니다. 추론한 타입을 바탕으로 타입이 지정되지 않은 코드의 RBS 시그니처를 생성합니다. 프레임워크 인식 플러그인을 사용해 Rails 애플리케이션의 타입을 검사합니다.
rigor는 어떻게 설치하나요?
mise를 사용해 Ruby 4.0에 Rigor를 전역 설치합니다: mise use -g ruby@4.0 gem:rigortype 코드에 Rigor를 실행해 버그를 찾습니다: rigor check app lib
rigor은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/rigortype/rigor

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트