rigortype 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/docs/handbook/11-sig-gen.md +90 -17
- data/docs/manual/02-cli-reference.md +39 -9
- data/docs/manual/03-configuration.md +10 -8
- data/docs/manual/04-diagnostics.md +16 -5
- data/docs/manual/05-inspecting-types.md +2 -2
- data/docs/manual/06-baseline.md +1 -1
- data/docs/manual/07-plugins.md +2 -1
- data/docs/manual/08-skills.md +7 -0
- data/docs/manual/10-mcp-server.md +8 -1
- data/docs/manual/18-removing-dead-code.md +18 -7
- data/docs/manual/plugins/rigor-rspec.md +101 -1
- data/lib/rigor/analysis/check_rules/clause_coverage.rb +134 -0
- data/lib/rigor/analysis/check_rules/lexical_method_sites.rb +111 -7
- data/lib/rigor/analysis/check_rules/rbs_receiver_surface.rb +190 -0
- data/lib/rigor/analysis/check_rules/rule_ids.rb +3 -1
- data/lib/rigor/analysis/check_rules/source_arity.rb +32 -3
- data/lib/rigor/analysis/check_rules/unreachable_clause_collector.rb +13 -4
- data/lib/rigor/analysis/check_rules.rb +228 -15
- data/lib/rigor/analysis/dependency_source_inference/walker.rb +2 -1
- data/lib/rigor/analysis/incremental.rb +49 -0
- data/lib/rigor/analysis/incremental_run_slot/write_guard.rb +36 -18
- data/lib/rigor/analysis/incremental_session.rb +166 -24
- data/lib/rigor/analysis/path_expansion.rb +3 -1
- data/lib/rigor/analysis/reachability/graph.rb +90 -13
- data/lib/rigor/analysis/reachability/scan.rb +279 -39
- data/lib/rigor/analysis/rule_catalog.rb +17 -4
- data/lib/rigor/analysis/runner/pool_coordinator.rb +69 -16
- data/lib/rigor/analysis/runner.rb +69 -65
- data/lib/rigor/analysis/severity_stamp.rb +11 -0
- data/lib/rigor/analysis/worker_session.rb +12 -1
- data/lib/rigor/cache/descriptor.rb +40 -7
- data/lib/rigor/cache/engine_source.rb +3 -2
- data/lib/rigor/cache/incremental_snapshot.rb +26 -8
- data/lib/rigor/cache/rbs_descriptor.rb +2 -1
- data/lib/rigor/cache/store.rb +4 -3
- data/lib/rigor/cli/command.rb +3 -1
- data/lib/rigor/cli/docs_command.rb +3 -2
- data/lib/rigor/cli/doctor_command.rb +1 -1
- data/lib/rigor/cli/explain_command.rb +3 -2
- data/lib/rigor/cli/plugin_command.rb +2 -1
- data/lib/rigor/cli/plugins_command.rb +2 -1
- data/lib/rigor/cli/sig_gen_command.rb +32 -11
- data/lib/rigor/cli/skill_command.rb +2 -1
- data/lib/rigor/cli/skill_describe.rb +3 -2
- data/lib/rigor/cli/unused_command.rb +10 -7
- data/lib/rigor/cli.rb +3 -2
- data/lib/rigor/config_audit.rb +60 -15
- data/lib/rigor/configuration/severity_profile.rb +20 -2
- data/lib/rigor/configuration.rb +29 -3
- data/lib/rigor/effects/signature_sources.rb +3 -1
- data/lib/rigor/environment/bundle_sig_discovery.rb +3 -2
- data/lib/rigor/environment/gated_signature_guard.rb +2 -1
- data/lib/rigor/environment/gated_signature_plan.rb +2 -1
- data/lib/rigor/environment/installed_gem_set.rb +2 -1
- data/lib/rigor/environment/missing_gem_constant_index.rb +4 -3
- data/lib/rigor/environment/rbs_loader.rb +21 -1
- data/lib/rigor/inference/block_call_timing.rb +7 -1
- data/lib/rigor/inference/builtins/method_catalog.rb +2 -1
- data/lib/rigor/inference/captured_locals.rb +44 -13
- data/lib/rigor/inference/clause_widening.rb +90 -0
- data/lib/rigor/inference/definer_resolution.rb +87 -20
- data/lib/rigor/inference/expression_typer.rb +35 -5
- data/lib/rigor/inference/intervening_ivar_reset.rb +303 -0
- data/lib/rigor/inference/macro_block_self_type.rb +20 -6
- data/lib/rigor/inference/method_dispatcher/constant_folding.rb +170 -35
- data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +50 -2
- data/lib/rigor/inference/method_dispatcher.rb +67 -3
- data/lib/rigor/inference/module_function_state.rb +137 -42
- data/lib/rigor/inference/narrowing.rb +54 -10
- data/lib/rigor/inference/parameter_inference_collector.rb +4 -26
- data/lib/rigor/inference/project_patched_methods.rb +168 -4
- data/lib/rigor/inference/project_patched_mixins.rb +162 -0
- data/lib/rigor/inference/project_patched_scanner.rb +51 -12
- data/lib/rigor/inference/project_patched_visibility.rb +214 -0
- data/lib/rigor/inference/project_seed_tables.rb +120 -0
- data/lib/rigor/inference/refined_dispatch/constructed_class.rb +113 -0
- data/lib/rigor/inference/refined_dispatch/own_method.rb +41 -12
- data/lib/rigor/inference/reflective_ivar_write.rb +6 -6
- data/lib/rigor/inference/return_barrier.rb +16 -0
- data/lib/rigor/inference/scope_indexer.rb +675 -105
- data/lib/rigor/inference/self_call_ivar_writes.rb +11 -6
- data/lib/rigor/inference/singleton_external_ahead.rb +64 -0
- data/lib/rigor/inference/singleton_hook_decline.rb +7 -0
- data/lib/rigor/inference/statement_evaluator.rb +446 -139
- data/lib/rigor/inference/unthreaded_rebinds.rb +3 -1
- data/lib/rigor/lens/contract_reader.rb +45 -2
- data/lib/rigor/lens/document.rb +2 -1
- data/lib/rigor/lens/file_reader.rb +12 -2
- data/lib/rigor/lens/members.rb +16 -2
- data/lib/rigor/lens/run.rb +34 -7
- data/lib/rigor/mcp/server.rb +2 -2
- data/lib/rigor/plugin/base.rb +3 -2
- data/lib/rigor/plugin/io_boundary.rb +42 -6
- data/lib/rigor/plugin/isolation.rb +4 -3
- data/lib/rigor/protection/discovery_seed.rb +9 -36
- data/lib/rigor/protection/mutation_cache.rb +8 -2
- data/lib/rigor/rooted_glob.rb +27 -0
- data/lib/rigor/scope/discovery_index.rb +5 -0
- data/lib/rigor/scope/resolution_chain/relevance.rb +14 -0
- data/lib/rigor/scope/resolution_chain.rb +40 -5
- data/lib/rigor/scope.rb +45 -2
- data/lib/rigor/sig_gen/alias_index.rb +2 -1
- data/lib/rigor/sig_gen/classification.rb +4 -1
- data/lib/rigor/sig_gen/generator.rb +167 -22
- data/lib/rigor/sig_gen/layout_index.rb +5 -2
- data/lib/rigor/sig_gen/observation_collector.rb +137 -11
- data/lib/rigor/sig_gen/renderer.rb +13 -155
- data/lib/rigor/sig_gen/skip_reason_catalog.rb +11 -0
- data/lib/rigor/sig_gen/write_reporter.rb +203 -0
- data/lib/rigor/sig_gen/write_result.rb +3 -1
- data/lib/rigor/sig_gen/writer.rb +5 -3
- data/lib/rigor/signature_path_audit.rb +4 -2
- data/lib/rigor/type/constant.rb +10 -1
- data/lib/rigor/version.rb +1 -1
- data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/channel_discoverer.rb +1 -1
- data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_discoverer.rb +1 -1
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_discoverer.rb +1 -1
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/render_locals.rb +6 -1
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_assigns.rb +1 -1
- data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers/serializer_discoverer.rb +1 -1
- data/plugins/rigor-activejob/lib/rigor/plugin/activejob/effects.rb +4 -3
- data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_discoverer.rb +1 -1
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb +1 -1
- data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/attachment_discoverer.rb +1 -1
- data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_discoverer.rb +1 -1
- data/plugins/rigor-dry-types/lib/rigor/plugin/dry_types.rb +1 -1
- data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/factory_discoverer.rb +1 -1
- data/plugins/rigor-ffi/lib/rigor/plugin/ffi/discoverer.rb +38 -9
- data/plugins/rigor-ffi/lib/rigor/plugin/ffi/target_detector.rb +1 -1
- data/plugins/rigor-pundit/lib/rigor/plugin/pundit/authorization_scan.rb +1 -1
- data/plugins/rigor-pundit/lib/rigor/plugin/pundit/policy_discoverer.rb +1 -1
- data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_index.rb +7 -2
- data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_loader.rb +5 -5
- data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n.rb +18 -17
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +1 -1
- data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/worker_discoverer.rb +1 -1
- data/plugins/rigor-sinatra/lib/rigor/plugin/sinatra.rb +4 -2
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet.rb +2 -2
- data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_discoverer.rb +2 -2
- data/sig/rigor/plugin/io_boundary.rbs +5 -2
- data/sig/rigor/rooted_glob.rbs +7 -0
- data/sig/rigor/scope.rbs +4 -3
- data/skills/rigor-doctor/references/01-checks.md +23 -11
- data/skills/rigor-type-oracle/references/01-oracle-commands.md +2 -1
- metadata +13 -1
|
@@ -78,17 +78,24 @@ Make sure a single `rigortype` is on the load path.
|
|
|
78
78
|
- `warn` — the baseline file failed to load. Check the `baseline:` path
|
|
79
79
|
in the config.
|
|
80
80
|
|
|
81
|
-
### `plugin_gap` — the stack has a plugin that is not
|
|
81
|
+
### `plugin_gap` — the stack has a plugin that is not listed
|
|
82
82
|
|
|
83
|
-
Read from the `DEPENDENCIES` section of `Gemfile.lock
|
|
83
|
+
Read from the `DEPENDENCIES` section of `Gemfile.lock`, plus the Rails
|
|
84
|
+
components a direct `rails` stands for. A `plugins:` entry counts as
|
|
85
|
+
listing its plugin even with `enabled: false`. Skipped when no
|
|
86
|
+
`.rigor.yml` or `.rigor.dist.yml` is discovered in the current directory.
|
|
84
87
|
|
|
85
88
|
- `fail` — the project depends on gems that bundled plugins model, and
|
|
86
|
-
**none** of
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
`plugins:` lists **none** of the bundled plugins that model gems (those
|
|
90
|
+
declaring `target_gems:`; `rigor-rbs-inline` does not count): framework
|
|
91
|
+
calls will not resolve. Add the plugins for the stack to `plugins:` (the
|
|
92
|
+
`rigor-plugin-tune` skill does this). Once any such plugin is listed,
|
|
93
|
+
the remaining gaps are reported as the per-plugin warnings below.
|
|
89
94
|
- `warn` — one per plugin that models a direct dependency but is not
|
|
90
|
-
|
|
91
|
-
a
|
|
95
|
+
listed. Add it, or decline it deliberately — declining is a legitimate
|
|
96
|
+
choice, and the way to record it is a `plugins:` entry with
|
|
97
|
+
`enabled: false`. Do not enable an unrelated plugin only to silence
|
|
98
|
+
this check.
|
|
92
99
|
|
|
93
100
|
### `gemfile_install` — Rigor is a project dependency
|
|
94
101
|
|
|
@@ -98,10 +105,15 @@ Read from the `DEPENDENCIES` section of `Gemfile.lock`.
|
|
|
98
105
|
|
|
99
106
|
### `bundle_layout` — gem-shipped signatures are not discovered
|
|
100
107
|
|
|
101
|
-
`warn` when a `Gemfile.lock` exists
|
|
102
|
-
bundle
|
|
103
|
-
ship their own `sig/` are then
|
|
104
|
-
|
|
108
|
+
`warn` when a `Gemfile.lock` exists in the current directory but Rigor
|
|
109
|
+
cannot locate the installed bundle — typically the gems live in the
|
|
110
|
+
active Ruby's default gem home. Gems that ship their own `sig/` are then
|
|
111
|
+
not loaded. Rigor looks only where the project records the bundle: a
|
|
112
|
+
`bundler.bundle_path:` in `.rigor.yml` is used alone and must exist;
|
|
113
|
+
without one, and unless `bundler.auto_detect: false`, it reads
|
|
114
|
+
`.bundle/config`'s `BUNDLE_PATH`, then an in-tree `vendor/bundle`, then
|
|
115
|
+
the global Bundler config. Point Rigor at the install root with
|
|
116
|
+
`bundler.bundle_path:`, install into `vendor/bundle`, or supply
|
|
105
117
|
signatures with `rbs collection install` instead.
|
|
106
118
|
|
|
107
119
|
## Not covered by `rigor doctor`: is the analysis seeing your code?
|
|
@@ -212,7 +212,8 @@ rigor explain [<rule>]
|
|
|
212
212
|
| `--format=text\|json` | Default `text`. |
|
|
213
213
|
|
|
214
214
|
With no argument it lists every rule. With a rule id, a legacy alias, or
|
|
215
|
-
a family prefix (`call`, `flow`, `assert`, `dump`, `
|
|
215
|
+
a family prefix (`call`, `flow`, `def`, `assert`, `dump`, `global`,
|
|
216
|
+
`suppression`, `static`, `effect`) it prints the
|
|
216
217
|
rule's firing conditions, the severity per profile, the evidence tier,
|
|
217
218
|
and how to suppress it.
|
|
218
219
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rigortype
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rigor contributors
|
|
@@ -446,6 +446,7 @@ files:
|
|
|
446
446
|
- lib/rigor/analysis/buffer_binding.rb
|
|
447
447
|
- lib/rigor/analysis/check_rules.rb
|
|
448
448
|
- lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb
|
|
449
|
+
- lib/rigor/analysis/check_rules/clause_coverage.rb
|
|
449
450
|
- lib/rigor/analysis/check_rules/dead_assignment_collector.rb
|
|
450
451
|
- lib/rigor/analysis/check_rules/dead_version_guard_arms.rb
|
|
451
452
|
- lib/rigor/analysis/check_rules/declaration_sourced_guard.rb
|
|
@@ -455,6 +456,7 @@ files:
|
|
|
455
456
|
- lib/rigor/analysis/check_rules/lexical_method_sites.rb
|
|
456
457
|
- lib/rigor/analysis/check_rules/main_pass_collector.rb
|
|
457
458
|
- lib/rigor/analysis/check_rules/published_constant_guard.rb
|
|
459
|
+
- lib/rigor/analysis/check_rules/rbs_receiver_surface.rb
|
|
458
460
|
- lib/rigor/analysis/check_rules/return_in_ensure_collector.rb
|
|
459
461
|
- lib/rigor/analysis/check_rules/ruby_deprecations.rb
|
|
460
462
|
- lib/rigor/analysis/check_rules/rule_ids.rb
|
|
@@ -705,6 +707,7 @@ files:
|
|
|
705
707
|
- lib/rigor/inference/builtins/struct_catalog.rb
|
|
706
708
|
- lib/rigor/inference/builtins/time_catalog.rb
|
|
707
709
|
- lib/rigor/inference/captured_locals.rb
|
|
710
|
+
- lib/rigor/inference/clause_widening.rb
|
|
708
711
|
- lib/rigor/inference/closure_escape_analyzer.rb
|
|
709
712
|
- lib/rigor/inference/content_join.rb
|
|
710
713
|
- lib/rigor/inference/coverage_scanner.rb
|
|
@@ -743,6 +746,7 @@ files:
|
|
|
743
746
|
- lib/rigor/inference/in_effect_refinements/walk.rb
|
|
744
747
|
- lib/rigor/inference/index_write_widening.rb
|
|
745
748
|
- lib/rigor/inference/indexed_narrowing.rb
|
|
749
|
+
- lib/rigor/inference/intervening_ivar_reset.rb
|
|
746
750
|
- lib/rigor/inference/jump_targets.rb
|
|
747
751
|
- lib/rigor/inference/key_presence_guard.rb
|
|
748
752
|
- lib/rigor/inference/key_presence_guard/scan.rb
|
|
@@ -819,7 +823,10 @@ files:
|
|
|
819
823
|
- lib/rigor/inference/project_method_ownership.rb
|
|
820
824
|
- lib/rigor/inference/project_patched_definedness_guard.rb
|
|
821
825
|
- lib/rigor/inference/project_patched_methods.rb
|
|
826
|
+
- lib/rigor/inference/project_patched_mixins.rb
|
|
822
827
|
- lib/rigor/inference/project_patched_scanner.rb
|
|
828
|
+
- lib/rigor/inference/project_patched_visibility.rb
|
|
829
|
+
- lib/rigor/inference/project_seed_tables.rb
|
|
823
830
|
- lib/rigor/inference/protection_scanner.rb
|
|
824
831
|
- lib/rigor/inference/range_constant.rb
|
|
825
832
|
- lib/rigor/inference/rbs_type_translator.rb
|
|
@@ -829,6 +836,7 @@ files:
|
|
|
829
836
|
- lib/rigor/inference/refine_self.rb
|
|
830
837
|
- lib/rigor/inference/refined_dispatch.rb
|
|
831
838
|
- lib/rigor/inference/refined_dispatch/class_object.rb
|
|
839
|
+
- lib/rigor/inference/refined_dispatch/constructed_class.rb
|
|
832
840
|
- lib/rigor/inference/refined_dispatch/own_method.rb
|
|
833
841
|
- lib/rigor/inference/refinement_mutation.rb
|
|
834
842
|
- lib/rigor/inference/reflective_ivar_write.rb
|
|
@@ -844,6 +852,7 @@ files:
|
|
|
844
852
|
- lib/rigor/inference/scope_indexer/mixin_accumulator.rb
|
|
845
853
|
- lib/rigor/inference/scope_indexer/superclasses_collector.rb
|
|
846
854
|
- lib/rigor/inference/self_call_ivar_writes.rb
|
|
855
|
+
- lib/rigor/inference/singleton_external_ahead.rb
|
|
847
856
|
- lib/rigor/inference/singleton_hook_decline.rb
|
|
848
857
|
- lib/rigor/inference/singleton_object_constant.rb
|
|
849
858
|
- lib/rigor/inference/statement_evaluator.rb
|
|
@@ -946,6 +955,7 @@ files:
|
|
|
946
955
|
- lib/rigor/reflection.rb
|
|
947
956
|
- lib/rigor/reflection/constant_ancestors.rb
|
|
948
957
|
- lib/rigor/reflection/constant_path.rb
|
|
958
|
+
- lib/rigor/rooted_glob.rb
|
|
949
959
|
- lib/rigor/runtime/jit.rb
|
|
950
960
|
- lib/rigor/scope.rb
|
|
951
961
|
- lib/rigor/scope/discovery_index.rb
|
|
@@ -969,6 +979,7 @@ files:
|
|
|
969
979
|
- lib/rigor/sig_gen/skip_reason_catalog.rb
|
|
970
980
|
- lib/rigor/sig_gen/superclass_spelling.rb
|
|
971
981
|
- lib/rigor/sig_gen/type_elaborator.rb
|
|
982
|
+
- lib/rigor/sig_gen/write_reporter.rb
|
|
972
983
|
- lib/rigor/sig_gen/write_result.rb
|
|
973
984
|
- lib/rigor/sig_gen/writer.rb
|
|
974
985
|
- lib/rigor/signature_path_audit.rb
|
|
@@ -1290,6 +1301,7 @@ files:
|
|
|
1290
1301
|
- sig/rigor/plugin/type_node_resolver.rbs
|
|
1291
1302
|
- sig/rigor/rbs_extended.rbs
|
|
1292
1303
|
- sig/rigor/reflection.rbs
|
|
1304
|
+
- sig/rigor/rooted_glob.rbs
|
|
1293
1305
|
- sig/rigor/scope.rbs
|
|
1294
1306
|
- sig/rigor/sig_gen/skip_reason_catalog.rbs
|
|
1295
1307
|
- sig/rigor/source.rbs
|