Repolode
rigortype

rigortype/rigor

Статический анализатор Ruby, который выводит типы из кода без аннотаций и стремится сообщать только о достоверно выявленных ошибках, например неопределённых методах и вызовах на nil.

Звёзды
107
Форки
1
Открытые issues
538
Последний коммит
11 часов назад

Что это?

Rigor — инструмент статического анализа Ruby, который находит такие ошибки, как вызовы неопределённых методов, неверное число аргументов, получатели, которые могут оказаться nil на выполняемом пути, недостижимые ветви и условия, всегда истинные. Он разбирает код с помощью Prism и использует чувствительный к потоку выполнения механизм вывода типов, отслеживающий значения выражений, а не только их классы. В сообщениях указывается вычисленное значение: например, вместо String инструмент сообщит о вызове неопределённого метода у строки "hello-world".

Для начала работы не нужны аннотации и зависимости времени выполнения. Существующие сигнатуры RBS в sig/ используются как источник типов, а команда rigor sig-gen может генерировать RBS по результатам вывода типов. В проекте действует политика нулевого числа ложных срабатываний: диагностика появляется, только если тип получателя статически известен и доказательства однозначны. Доступны плагины для Rails, RSpec, Sidekiq, Sinatra, dry-rb и других гемов, а rigor-sorbet загружает сигнатуры Sorbet.

Инструмент устанавливается глобально как гем rigortype и предоставляет команды для проверки кода, добавления аннотаций типов прямо в код, разбора диагностик и генерации сигнатур. Среди форматов вывода для CI — GitHub annotations, GitLab Code Quality, SARIF, JUnit и другие.

Ключевые возможности

  • 01Выводит типы значений из кода Ruby без аннотаций с помощью анализа, чувствительного к потоку выполнения.
  • 02Находит неопределённые методы, неверное число аргументов и получателей, которые могут оказаться nil.
  • 03Читает существующие сигнатуры RBS и может генерировать RBS по результатам вывода типов.
  • 04Предоставляет плагины для Rails, RSpec, Sidekiq, Sinatra и других распространённых гемов.
  • 05Поддерживает форматы вывода для CI, например GitHub annotations и SARIF.

Сценарии использования

  • Поиск опечаток и вызовов неопределённых методов в существующей кодовой базе Ruby без добавления аннотаций типов.
  • Добавление проверки в CI с базовым набором диагностик, который можно постепенно сокращать.
  • Генерация сигнатур RBS для кода без типов на основе выведенных типов.
  • Проверка типов в приложении Rails с помощью плагинов, учитывающих особенности фреймворка.

Быстрый старт

  1. 1

    Установите Rigor глобально для Ruby 4.0 с помощью mise

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

    Запустите Rigor для проверки кода и поиска ошибок

    rigor check app lib

Что важно знать

  • Релиз на раннем этапе оценки (0.4.x); область совместимости может измениться до выхода v1.0.0.
  • Проект поддерживает один человек при ограниченном финансировании, поэтому темпы разработки могут меняться.
  • Анализатор только для Ruby; другие языки он не проверяет.

В подборках

Темы

Частые вопросы

Что такое rigor?
Статический анализатор Ruby, который выводит типы из кода без аннотаций и стремится сообщать только о достоверно выявленных ошибках, например неопределённых методах и вызовах на nil. Rigor — инструмент статического анализа Ruby, который находит такие ошибки, как вызовы неопределённых методов, неверное число аргументов, получатели, которые могут оказаться nil на выполняемом пути, недостижимые ветви и условия, всегда истинные. Он разбирает код с помощью Prism и использует чувствительный к потоку выполнения механизм вывода типов, отслеживающий значения выражений, а не только их классы. В сообщениях указывается вычисленное значение: например, вместо String инструмент сообщит о вызове неопределённого метода у строки "hello-world".
rigor можно использовать бесплатно? Какая у него лицензия?
rigor распространяется с открытым исходным кодом под лицензией MPL-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
rigor всё ещё поддерживается?
Активно поддерживается. Последний коммит в rigor — 6 нояб. 2026 г..
Для чего можно использовать rigor?
Поиск опечаток и вызовов неопределённых методов в существующей кодовой базе Ruby без добавления аннотаций типов. Добавление проверки в CI с базовым набором диагностик, который можно постепенно сокращать. Генерация сигнатур RBS для кода без типов на основе выведенных типов. Проверка типов в приложении Rails с помощью плагинов, учитывающих особенности фреймворка.
Как установить rigor?
Установите Rigor глобально для Ruby 4.0 с помощью mise: mise use -g ruby@4.0 gem:rigortype Запустите Rigor для проверки кода и поиска ошибок: rigor check app lib
Где скачать rigor?
Исходный код и инструкции по установке — на GitHub: https://github.com/rigortype/rigor

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Библиотека статического анализа Python для автодополнения, перехода к определению, рефакторинга и поиска по коду; используется преимущественно в плагинах для редакторов.

6,2 тыс.+3 за неделю549PythonOtherАктивно поддерживаетсяОбновлён 5 дней назад