rigortype 0.1.0 → 0.1.2
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 +7 -2
- data/data/builtins/ruby_core/array.yml +6 -6
- data/data/builtins/ruby_core/hash.yml +1 -1
- data/data/builtins/ruby_core/io.yml +3 -3
- data/data/builtins/ruby_core/numeric.yml +1 -1
- data/data/builtins/ruby_core/pathname.yml +100 -100
- data/data/builtins/ruby_core/proc.yml +1 -1
- data/data/builtins/ruby_core/range.yml +6 -4
- data/data/builtins/ruby_core/string.yml +15 -10
- data/data/builtins/ruby_core/time.yml +3 -3
- data/lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb +116 -0
- data/lib/rigor/analysis/check_rules/dead_assignment_collector.rb +123 -0
- data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +118 -0
- data/lib/rigor/analysis/check_rules.rb +346 -18
- data/lib/rigor/analysis/rule_catalog.rb +343 -0
- data/lib/rigor/analysis/runner.rb +90 -6
- data/lib/rigor/builtins/regex_refinement.rb +104 -0
- data/lib/rigor/cli/diff_command.rb +169 -0
- data/lib/rigor/cli/explain_command.rb +129 -0
- data/lib/rigor/cli/type_of_command.rb +3 -3
- data/lib/rigor/cli/type_scan_command.rb +4 -4
- data/lib/rigor/cli.rb +29 -5
- data/lib/rigor/configuration/severity_profile.rb +18 -3
- data/lib/rigor/configuration.rb +186 -13
- data/lib/rigor/environment.rb +12 -4
- data/lib/rigor/inference/expression_typer.rb +3 -1
- data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +31 -0
- data/lib/rigor/inference/method_dispatcher/literal_string_folding.rb +43 -2
- data/lib/rigor/inference/method_dispatcher/overload_selector.rb +104 -12
- data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +68 -2
- data/lib/rigor/inference/method_dispatcher.rb +50 -1
- data/lib/rigor/inference/narrowing.rb +150 -6
- data/lib/rigor/inference/scope_indexer.rb +220 -17
- data/lib/rigor/inference/statement_evaluator.rb +29 -0
- data/lib/rigor/plugin/base.rb +43 -0
- data/lib/rigor/plugin/fact_store.rb +92 -0
- data/lib/rigor/plugin/io_boundary.rb +92 -19
- data/lib/rigor/plugin/load_error.rb +14 -2
- data/lib/rigor/plugin/loader.rb +116 -0
- data/lib/rigor/plugin/manifest.rb +75 -6
- data/lib/rigor/plugin/services.rb +14 -2
- data/lib/rigor/plugin/trust_policy.rb +30 -7
- data/lib/rigor/plugin.rb +1 -0
- data/lib/rigor/scope.rb +30 -5
- data/lib/rigor/trinary.rb +1 -1
- data/lib/rigor/type/integer_range.rb +6 -2
- data/lib/rigor/version.rb +1 -1
- data/sig/rigor/environment.rbs +3 -2
- data/sig/rigor/scope.rbs +3 -0
- data/sig/rigor.rbs +8 -2
- metadata +9 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 47346567152367cb408115b6a33214e43468f2255bd632b4894d8c68164b8ada
|
|
4
|
+
data.tar.gz: 407d5cda9e08342670a4eeb05ae2c565d398866174d292c586793cb213a77fdb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f6ffecd573e1bbb387c861cbe3a6d909d217dfadef453a7a84339a4f7fd44e2c86dbbac54c8369298b56a2de3771c0f75c28cfe098cb895355a52155657f4f9d
|
|
7
|
+
data.tar.gz: 6f924aed4bc15581bae58ffa62a5d8194db3fabbdc3056f2b6cfc4f068f972063e0148f85df8b8ef3e5f5003fad35b4e9016e534ef604cbfc581d0cdab76bb7b
|
data/README.md
CHANGED
|
@@ -376,7 +376,7 @@ analyzer guarantees live under
|
|
|
376
376
|
## Plugins (v0.1.0)
|
|
377
377
|
|
|
378
378
|
`v0.1.0` adds an extension API so projects can teach Rigor about
|
|
379
|
-
their own DSLs.
|
|
379
|
+
their own DSLs. Seven worked examples ship under
|
|
380
380
|
[`examples/`](examples/) — each is a fully-shaped plugin gem
|
|
381
381
|
with a runnable demo and an end-to-end integration spec, and
|
|
382
382
|
each spotlights a different facet of the plugin contract:
|
|
@@ -394,7 +394,12 @@ each spotlights a different facet of the plugin contract:
|
|
|
394
394
|
tracking through arithmetic.
|
|
395
395
|
- [`rigor-routes`](examples/rigor-routes/) — `Plugin::IoBoundary`
|
|
396
396
|
reads under `TrustPolicy` plus cache producers (slice 2 +
|
|
397
|
-
slice 6)
|
|
397
|
+
slice 6).
|
|
398
|
+
- [`rigor-activerecord`](examples/rigor-activerecord/) —
|
|
399
|
+
validates `Model.find` / `.find_by` / `.where` against
|
|
400
|
+
`db/schema.rb` and discovered AR model classes; combines
|
|
401
|
+
DSL interpretation, multi-file `IoBoundary`, and chained
|
|
402
|
+
cache producers — the most architecturally complete example.
|
|
398
403
|
|
|
399
404
|
[`examples/README.md`](examples/README.md) is the plugin
|
|
400
405
|
authoring landing page — comparison table, recommended reading
|
|
@@ -1361,7 +1361,7 @@ classes:
|
|
|
1361
1361
|
body_kind: composed
|
|
1362
1362
|
cexpr_target:
|
|
1363
1363
|
prelude_at: references/ruby/array.rb:22
|
|
1364
|
-
purity:
|
|
1364
|
+
purity: dispatch
|
|
1365
1365
|
arity: -1
|
|
1366
1366
|
cfunc:
|
|
1367
1367
|
defined_at: references/ruby/array.rb:22
|
|
@@ -1374,7 +1374,7 @@ classes:
|
|
|
1374
1374
|
body_kind: composed
|
|
1375
1375
|
cexpr_target:
|
|
1376
1376
|
prelude_at: references/ruby/array.rb:45
|
|
1377
|
-
purity:
|
|
1377
|
+
purity: dispatch
|
|
1378
1378
|
arity: -1
|
|
1379
1379
|
cfunc:
|
|
1380
1380
|
defined_at: references/ruby/array.rb:45
|
|
@@ -1387,7 +1387,7 @@ classes:
|
|
|
1387
1387
|
body_kind: composed
|
|
1388
1388
|
cexpr_target:
|
|
1389
1389
|
prelude_at: references/ruby/array.rb:95
|
|
1390
|
-
purity:
|
|
1390
|
+
purity: dispatch
|
|
1391
1391
|
arity: -1
|
|
1392
1392
|
cfunc:
|
|
1393
1393
|
defined_at: references/ruby/array.rb:95
|
|
@@ -1401,7 +1401,7 @@ classes:
|
|
|
1401
1401
|
body_kind: composed
|
|
1402
1402
|
cexpr_target:
|
|
1403
1403
|
prelude_at: references/ruby/array.rb:129
|
|
1404
|
-
purity:
|
|
1404
|
+
purity: dispatch
|
|
1405
1405
|
arity: -1
|
|
1406
1406
|
cfunc:
|
|
1407
1407
|
defined_at: references/ruby/array.rb:129
|
|
@@ -1415,7 +1415,7 @@ classes:
|
|
|
1415
1415
|
body_kind: composed
|
|
1416
1416
|
cexpr_target:
|
|
1417
1417
|
prelude_at: references/ruby/array.rb:166
|
|
1418
|
-
purity:
|
|
1418
|
+
purity: dispatch
|
|
1419
1419
|
arity: -1
|
|
1420
1420
|
cfunc:
|
|
1421
1421
|
defined_at: references/ruby/array.rb:166
|
|
@@ -1429,7 +1429,7 @@ classes:
|
|
|
1429
1429
|
body_kind: composed
|
|
1430
1430
|
cexpr_target:
|
|
1431
1431
|
prelude_at: references/ruby/array.rb:210
|
|
1432
|
-
purity:
|
|
1432
|
+
purity: dispatch
|
|
1433
1433
|
arity: -1
|
|
1434
1434
|
cfunc:
|
|
1435
1435
|
defined_at: references/ruby/array.rb:210
|
|
@@ -891,7 +891,7 @@ classes:
|
|
|
891
891
|
body_kind: composed
|
|
892
892
|
cexpr_target:
|
|
893
893
|
prelude_at: references/ruby/io.rb:62
|
|
894
|
-
purity:
|
|
894
|
+
purity: dispatch
|
|
895
895
|
arity: -2
|
|
896
896
|
cfunc:
|
|
897
897
|
defined_at: references/ruby/io.rb:62
|
|
@@ -906,7 +906,7 @@ classes:
|
|
|
906
906
|
body_kind: composed
|
|
907
907
|
cexpr_target:
|
|
908
908
|
prelude_at: references/ruby/io.rb:120
|
|
909
|
-
purity:
|
|
909
|
+
purity: dispatch
|
|
910
910
|
arity: -2
|
|
911
911
|
cfunc:
|
|
912
912
|
defined_at: references/ruby/io.rb:120
|
|
@@ -920,7 +920,7 @@ classes:
|
|
|
920
920
|
body_kind: composed
|
|
921
921
|
cexpr_target:
|
|
922
922
|
prelude_at: references/ruby/io.rb:133
|
|
923
|
-
purity:
|
|
923
|
+
purity: dispatch
|
|
924
924
|
arity: -1
|
|
925
925
|
cfunc:
|
|
926
926
|
defined_at: references/ruby/io.rb:133
|