Repolode
rigortype

rigortype/rigor

Analisador estático para Ruby que infere tipos sem anotações e busca reportar apenas bugs conclusivos, como métodos indefinidos e receptores nil.

Estrelas
107
Forks
2
Issues abertas
538
Último commit
há 12 horas

O que é?

Rigor é uma ferramenta de análise estática para Ruby que encontra bugs como chamadas a métodos indefinidos, número incorreto de argumentos, receptores que podem ser nil em um caminho executável, branches inalcançáveis e condições sempre truthy. Ela analisa o código com Prism e executa um mecanismo de inferência sensível ao fluxo que acompanha os valores produzidos pelas expressões, não apenas suas classes. As mensagens incluem o valor calculado; por exemplo, reportam um método indefinido no objeto string "hello-world", em vez de em String.

Não são necessárias anotações nem dependências em runtime para começar. Assinaturas RBS existentes em sig/ são lidas como fonte de tipos, e rigor sig-gen pode gerar RBS a partir dos resultados da inferência. O projeto adota uma política de zero falsos positivos: os diagnósticos só são emitidos quando o tipo do receptor é conhecido estaticamente e as evidências são conclusivas. Há plugins para Rails, RSpec, Sidekiq, Sinatra, dry-rb e outras gems, e rigor-sorbet importa assinaturas Sorbet.

A ferramenta é instalada globalmente como a gem rigortype e oferece comandos para verificar o código, anotar tipos inline, fazer triagem de diagnósticos e gerar assinaturas. Os formatos de saída para CI incluem GitHub annotations, GitLab Code Quality, SARIF, JUnit e outros.

Recursos principais

  • 01Infere tipos no nível dos valores a partir de código Ruby sem anotações, usando análise sensível ao fluxo.
  • 02Reporta métodos indefinidos, número incorreto de argumentos e receptores que podem ser nil.
  • 03Lê assinaturas RBS existentes e pode gerar RBS a partir dos resultados da inferência.
  • 04Oferece plugins para Rails, RSpec, Sidekiq, Sinatra e outras gems comuns.
  • 05Gera formatos de saída nativos de CI, como GitHub annotations e SARIF.

Casos de uso

  • Encontrar erros de digitação e chamadas a métodos indefinidos em uma base de código Ruby existente, sem adicionar anotações de tipos.
  • Adicionar uma etapa de verificação estática ao CI e reduzir gradualmente o baseline de problemas.
  • Gerar assinaturas RBS para código sem tipos usando os tipos inferidos.
  • Executar verificações de tipos em uma aplicação Rails com plugins cientes do framework.

Início rápido

  1. 1

    Instale o Rigor globalmente no Ruby 4.0 com mise

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

    Execute o Rigor no seu código para encontrar bugs

    rigor check app lib

Antes de usar

  • Versão em fase inicial de avaliação (0.4.x); o escopo de compatibilidade ainda pode mudar antes da v1.0.0.
  • Mantido por uma única pessoa com financiamento limitado, então o ritmo de desenvolvimento pode variar.
  • Analisador exclusivo para Ruby; não verifica outras linguagens.

Em coleções

Tópicos

Perguntas frequentes

O que é rigor?
Analisador estático para Ruby que infere tipos sem anotações e busca reportar apenas bugs conclusivos, como métodos indefinidos e receptores nil. Rigor é uma ferramenta de análise estática para Ruby que encontra bugs como chamadas a métodos indefinidos, número incorreto de argumentos, receptores que podem ser nil em um caminho executável, branches inalcançáveis e condições sempre truthy. Ela analisa o código com Prism e executa um mecanismo de inferência sensível ao fluxo que acompanha os valores produzidos pelas expressões, não apenas suas classes. As mensagens incluem o valor calculado; por exemplo, reportam um método indefinido no objeto string "hello-world", em vez de em String.
rigor é gratuito? Qual é a licença?
rigor é open source sob a licença MPL-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
rigor ainda é mantido?
Manutenção ativa. O último commit de rigor foi em 7 de nov. de 2026.
Para que posso usar rigor?
Encontrar erros de digitação e chamadas a métodos indefinidos em uma base de código Ruby existente, sem adicionar anotações de tipos. Adicionar uma etapa de verificação estática ao CI e reduzir gradualmente o baseline de problemas. Gerar assinaturas RBS para código sem tipos usando os tipos inferidos. Executar verificações de tipos em uma aplicação Rails com plugins cientes do framework.
Como instalar rigor?
Instale o Rigor globalmente no Ruby 4.0 com mise: mise use -g ruby@4.0 gem:rigortype Execute o Rigor no seu código para encontrar bugs: rigor check app lib
Onde consigo rigor?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/rigortype/rigor

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados