necropsy 0.1.0 → 0.3.0

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.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +33 -0
  3. data/CHANGELOG.md +44 -0
  4. data/MEASUREMENTS.md +112 -0
  5. data/README.md +233 -16
  6. data/Rakefile +3 -1
  7. data/bench/README.md +92 -0
  8. data/bench/audit.rb +113 -0
  9. data/bench/audits/0.2.1/audit.json +501 -0
  10. data/bench/audits/0.2.1/audit.md +55 -0
  11. data/bench/audits/0.2.1/baseline_performance.yml +16 -0
  12. data/bench/audits/0.2.1/config.yml +42 -0
  13. data/bench/audits/0.2.1/review.yml +56 -0
  14. data/bench/audits/0.2.1/review_queue.yml +3651 -0
  15. data/bench/corpora/v1/README.md +30 -0
  16. data/bench/corpora/v1/labels.yml +37 -0
  17. data/bench/corpora/v1/manifest.yml +63 -0
  18. data/bench/corpora/v1/rubocop.necropsy.yml +7 -0
  19. data/bench/corpora/v1/self.necropsy.yml +8 -0
  20. data/bench/corpora/v1/tools/debride.yml +42 -0
  21. data/bench/corpora/v1/tools/spoom.yml +12 -0
  22. data/bench/corpora/v1/tools/type_aware.yml +11 -0
  23. data/bench/golden/v1/candidate_union.json +21918 -0
  24. data/bench/golden/v1/metadata.json +12 -0
  25. data/bench/golden/v1/reports/dynamic_evidence.json +146 -0
  26. data/bench/golden/v1/reports/plain_ruby.json +135 -0
  27. data/bench/golden/v1/reports/rails.json +176 -0
  28. data/bench/golden/v1/reports/rubocop_1_75_0.json +26848 -0
  29. data/bench/golden/v1/reports/self.json +3449 -0
  30. data/bench/review_queue.rb +35 -0
  31. data/bench/run.rb +31 -0
  32. data/bench/schema/candidate-union-v1.schema.json +70 -0
  33. data/docs/impv_implementation_matrix.md +179 -0
  34. data/docs/migrations/0.2.1.md +57 -0
  35. data/docs/migrations/0.3.0.md +207 -0
  36. data/docs/migrations/0.4.0.md +13 -0
  37. data/docs/necropsy_performance_adr.md +43 -0
  38. data/docs/necropsy_scope_decisions.md +58 -0
  39. data/docs/necropsy_type_facts_adr.md +22 -0
  40. data/gemfiles/prism_min.gemfile +9 -0
  41. data/gemfiles/prism_min.gemfile.lock +50 -0
  42. data/lib/necropsy/analyzer.rb +121 -2
  43. data/lib/necropsy/analyzers/dynamic/coverage_collector.rb +81 -19
  44. data/lib/necropsy/analyzers/dynamic/coverage_importer.rb +104 -10
  45. data/lib/necropsy/analyzers/dynamic/coverband_importer.rb +74 -250
  46. data/lib/necropsy/analyzers/dynamic/coverband_payload_set.rb +149 -0
  47. data/lib/necropsy/analyzers/dynamic/observation_policy.rb +96 -0
  48. data/lib/necropsy/analyzers/dynamic/redis_input_limits.rb +121 -0
  49. data/lib/necropsy/analyzers/dynamic/redis_nonblocking_io.rb +94 -0
  50. data/lib/necropsy/analyzers/dynamic/redis_payload_loader.rb +165 -0
  51. data/lib/necropsy/analyzers/dynamic/redis_transport.rb +217 -0
  52. data/lib/necropsy/analyzers/dynamic/runtime_reference.rb +96 -0
  53. data/lib/necropsy/analyzers/dynamic/trace_point_collector.rb +225 -20
  54. data/lib/necropsy/analyzers/dynamic/trace_point_importer.rb +3 -1
  55. data/lib/necropsy/analyzers/legacy_result_adapter.rb +226 -0
  56. data/lib/necropsy/analyzers/static/cha.rb +33 -69
  57. data/lib/necropsy/analyzers/static/name_resolution.rb +151 -21
  58. data/lib/necropsy/analyzers/static/rta.rb +249 -25
  59. data/lib/necropsy/ast_scanner/call_recording.rb +275 -0
  60. data/lib/necropsy/ast_scanner/call_site_creation.rb +54 -0
  61. data/lib/necropsy/ast_scanner/definition_creation.rb +43 -0
  62. data/lib/necropsy/ast_scanner/dsl_macros.rb +532 -0
  63. data/lib/necropsy/ast_scanner/method_definitions.rb +358 -0
  64. data/lib/necropsy/ast_scanner/references.rb +115 -0
  65. data/lib/necropsy/ast_scanner/ruby_semantics.rb +263 -0
  66. data/lib/necropsy/ast_scanner/traversal.rb +347 -0
  67. data/lib/necropsy/ast_scanner/value_definitions.rb +78 -0
  68. data/lib/necropsy/ast_scanner.rb +89 -564
  69. data/lib/necropsy/bench/candidate_union.rb +555 -0
  70. data/lib/necropsy/bench/claim_gate.rb +112 -0
  71. data/lib/necropsy/bench/evaluator.rb +356 -24
  72. data/lib/necropsy/bench/finding_facts.rb +152 -0
  73. data/lib/necropsy/bench/precision_gate.rb +144 -0
  74. data/lib/necropsy/bench/release_audit/adversarial_runner.rb +56 -0
  75. data/lib/necropsy/bench/release_audit/artifact_writer.rb +112 -0
  76. data/lib/necropsy/bench/release_audit/config_validator.rb +112 -0
  77. data/lib/necropsy/bench/release_audit/git_snapshot.rb +36 -0
  78. data/lib/necropsy/bench/release_audit/performance_gate.rb +165 -0
  79. data/lib/necropsy/bench/release_audit/run_provenance.rb +133 -0
  80. data/lib/necropsy/bench/release_audit.rb +360 -0
  81. data/lib/necropsy/bench/report_normalizer.rb +140 -0
  82. data/lib/necropsy/bench/review_queue.rb +154 -0
  83. data/lib/necropsy/bench/safety_mutation_harness.rb +59 -0
  84. data/lib/necropsy/bench/seed_runner.rb +408 -0
  85. data/lib/necropsy/bounded_canonicalizer.rb +218 -0
  86. data/lib/necropsy/cache/scan_cache.rb +94 -18
  87. data/lib/necropsy/call_site_identity.rb +54 -0
  88. data/lib/necropsy/cli.rb +296 -53
  89. data/lib/necropsy/clock.rb +40 -0
  90. data/lib/necropsy/confidence/scorer.rb +181 -58
  91. data/lib/necropsy/configuration.rb +339 -18
  92. data/lib/necropsy/convention_rules.rb +138 -0
  93. data/lib/necropsy/definition_identity/canonical_digest.rb +278 -0
  94. data/lib/necropsy/definition_identity.rb +37 -0
  95. data/lib/necropsy/diagnostics.rb +342 -0
  96. data/lib/necropsy/embedded_ruby.rb +55 -0
  97. data/lib/necropsy/entry_points/plain.rb +125 -7
  98. data/lib/necropsy/entry_points/rails.rb +422 -105
  99. data/lib/necropsy/entry_points/test.rb +6 -1
  100. data/lib/necropsy/flow_interpreter.rb +460 -0
  101. data/lib/necropsy/graph/blocker_matching.rb +338 -0
  102. data/lib/necropsy/graph/call_graph.rb +1234 -62
  103. data/lib/necropsy/graph/definition_index.rb +149 -0
  104. data/lib/necropsy/graph/dynamic_evidence_tracking.rb +206 -0
  105. data/lib/necropsy/graph/evidence_store.rb +213 -0
  106. data/lib/necropsy/graph/resolution_store.rb +497 -0
  107. data/lib/necropsy/graph_self_check.rb +79 -0
  108. data/lib/necropsy/guardrail/baseline.rb +359 -13
  109. data/lib/necropsy/guardrail/diff.rb +5 -2
  110. data/lib/necropsy/guardrail/quarantine.rb +101 -10
  111. data/lib/necropsy/load_graph.rb +206 -0
  112. data/lib/necropsy/models.rb +894 -21
  113. data/lib/necropsy/performance_profiler.rb +108 -0
  114. data/lib/necropsy/project.rb +361 -13
  115. data/lib/necropsy/reachability/engine.rb +80 -15
  116. data/lib/necropsy/reference_barrier.rb +458 -0
  117. data/lib/necropsy/report.rb +153 -14
  118. data/lib/necropsy/reporter.rb +441 -19
  119. data/lib/necropsy/runner.rb +258 -14
  120. data/lib/necropsy/runtime_feedback.rb +136 -0
  121. data/lib/necropsy/semantics_matrix.rb +153 -0
  122. data/lib/necropsy/trace_point_runtime.rb +19 -0
  123. data/lib/necropsy/type_facts.rb +53 -0
  124. data/lib/necropsy/version.rb +1 -1
  125. data/lib/necropsy/why_not_explanation.rb +436 -0
  126. data/lib/necropsy/why_not_renderer.rb +197 -0
  127. data/lib/necropsy/world_policy.rb +90 -0
  128. data/lib/necropsy.rb +39 -2
  129. data/schema/necropsy-report-v2.schema.json +366 -0
  130. data/script/measure.rb +20 -0
  131. metadata +106 -2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: necropsy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yudai Takada
@@ -16,6 +16,9 @@ dependencies:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
18
  version: '1.0'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '2.0'
19
22
  type: :runtime
20
23
  prerelease: false
21
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -23,6 +26,9 @@ dependencies:
23
26
  - - ">="
24
27
  - !ruby/object:Gem::Version
25
28
  version: '1.0'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '2.0'
26
32
  description: Necropsy combines static call-graph reachability, optional dynamic evidence,
27
33
  and CI guardrails for Ruby dead-code detection.
28
34
  email:
@@ -32,48 +38,146 @@ executables:
32
38
  extensions: []
33
39
  extra_rdoc_files: []
34
40
  files:
41
+ - ".rubocop.yml"
42
+ - CHANGELOG.md
35
43
  - LICENSE.txt
44
+ - MEASUREMENTS.md
36
45
  - README.md
37
46
  - Rakefile
47
+ - bench/README.md
48
+ - bench/audit.rb
49
+ - bench/audits/0.2.1/audit.json
50
+ - bench/audits/0.2.1/audit.md
51
+ - bench/audits/0.2.1/baseline_performance.yml
52
+ - bench/audits/0.2.1/config.yml
53
+ - bench/audits/0.2.1/review.yml
54
+ - bench/audits/0.2.1/review_queue.yml
55
+ - bench/corpora/v1/README.md
56
+ - bench/corpora/v1/labels.yml
57
+ - bench/corpora/v1/manifest.yml
58
+ - bench/corpora/v1/rubocop.necropsy.yml
59
+ - bench/corpora/v1/self.necropsy.yml
60
+ - bench/corpora/v1/tools/debride.yml
61
+ - bench/corpora/v1/tools/spoom.yml
62
+ - bench/corpora/v1/tools/type_aware.yml
63
+ - bench/golden/v1/candidate_union.json
64
+ - bench/golden/v1/metadata.json
65
+ - bench/golden/v1/reports/dynamic_evidence.json
66
+ - bench/golden/v1/reports/plain_ruby.json
67
+ - bench/golden/v1/reports/rails.json
68
+ - bench/golden/v1/reports/rubocop_1_75_0.json
69
+ - bench/golden/v1/reports/self.json
70
+ - bench/review_queue.rb
71
+ - bench/run.rb
72
+ - bench/schema/candidate-union-v1.schema.json
73
+ - docs/impv_implementation_matrix.md
74
+ - docs/migrations/0.2.1.md
75
+ - docs/migrations/0.3.0.md
76
+ - docs/migrations/0.4.0.md
77
+ - docs/necropsy_performance_adr.md
78
+ - docs/necropsy_scope_decisions.md
79
+ - docs/necropsy_type_facts_adr.md
38
80
  - exe/necropsy
81
+ - gemfiles/prism_min.gemfile
82
+ - gemfiles/prism_min.gemfile.lock
39
83
  - lib/necropsy.rb
40
84
  - lib/necropsy/analyzer.rb
41
85
  - lib/necropsy/analyzers/dynamic/coverage_collector.rb
42
86
  - lib/necropsy/analyzers/dynamic/coverage_importer.rb
43
87
  - lib/necropsy/analyzers/dynamic/coverband_importer.rb
88
+ - lib/necropsy/analyzers/dynamic/coverband_payload_set.rb
89
+ - lib/necropsy/analyzers/dynamic/observation_policy.rb
90
+ - lib/necropsy/analyzers/dynamic/redis_input_limits.rb
91
+ - lib/necropsy/analyzers/dynamic/redis_nonblocking_io.rb
92
+ - lib/necropsy/analyzers/dynamic/redis_payload_loader.rb
93
+ - lib/necropsy/analyzers/dynamic/redis_transport.rb
94
+ - lib/necropsy/analyzers/dynamic/runtime_reference.rb
44
95
  - lib/necropsy/analyzers/dynamic/trace_point_collector.rb
45
96
  - lib/necropsy/analyzers/dynamic/trace_point_importer.rb
97
+ - lib/necropsy/analyzers/legacy_result_adapter.rb
46
98
  - lib/necropsy/analyzers/static/cha.rb
47
99
  - lib/necropsy/analyzers/static/name_resolution.rb
48
100
  - lib/necropsy/analyzers/static/rta.rb
49
101
  - lib/necropsy/ast_scanner.rb
102
+ - lib/necropsy/ast_scanner/call_recording.rb
103
+ - lib/necropsy/ast_scanner/call_site_creation.rb
104
+ - lib/necropsy/ast_scanner/definition_creation.rb
105
+ - lib/necropsy/ast_scanner/dsl_macros.rb
106
+ - lib/necropsy/ast_scanner/method_definitions.rb
107
+ - lib/necropsy/ast_scanner/references.rb
108
+ - lib/necropsy/ast_scanner/ruby_semantics.rb
109
+ - lib/necropsy/ast_scanner/traversal.rb
110
+ - lib/necropsy/ast_scanner/value_definitions.rb
111
+ - lib/necropsy/bench/candidate_union.rb
112
+ - lib/necropsy/bench/claim_gate.rb
50
113
  - lib/necropsy/bench/evaluator.rb
114
+ - lib/necropsy/bench/finding_facts.rb
115
+ - lib/necropsy/bench/precision_gate.rb
116
+ - lib/necropsy/bench/release_audit.rb
117
+ - lib/necropsy/bench/release_audit/adversarial_runner.rb
118
+ - lib/necropsy/bench/release_audit/artifact_writer.rb
119
+ - lib/necropsy/bench/release_audit/config_validator.rb
120
+ - lib/necropsy/bench/release_audit/git_snapshot.rb
121
+ - lib/necropsy/bench/release_audit/performance_gate.rb
122
+ - lib/necropsy/bench/release_audit/run_provenance.rb
123
+ - lib/necropsy/bench/report_normalizer.rb
124
+ - lib/necropsy/bench/review_queue.rb
125
+ - lib/necropsy/bench/safety_mutation_harness.rb
126
+ - lib/necropsy/bench/seed_runner.rb
127
+ - lib/necropsy/bounded_canonicalizer.rb
51
128
  - lib/necropsy/cache/scan_cache.rb
129
+ - lib/necropsy/call_site_identity.rb
52
130
  - lib/necropsy/cli.rb
131
+ - lib/necropsy/clock.rb
53
132
  - lib/necropsy/confidence/scorer.rb
54
133
  - lib/necropsy/configuration.rb
134
+ - lib/necropsy/convention_rules.rb
55
135
  - lib/necropsy/coverage_runtime.rb
136
+ - lib/necropsy/definition_identity.rb
137
+ - lib/necropsy/definition_identity/canonical_digest.rb
138
+ - lib/necropsy/diagnostics.rb
139
+ - lib/necropsy/embedded_ruby.rb
56
140
  - lib/necropsy/entry_points/plain.rb
57
141
  - lib/necropsy/entry_points/rails.rb
58
142
  - lib/necropsy/entry_points/test.rb
143
+ - lib/necropsy/flow_interpreter.rb
144
+ - lib/necropsy/graph/blocker_matching.rb
59
145
  - lib/necropsy/graph/call_graph.rb
146
+ - lib/necropsy/graph/definition_index.rb
147
+ - lib/necropsy/graph/dynamic_evidence_tracking.rb
148
+ - lib/necropsy/graph/evidence_store.rb
149
+ - lib/necropsy/graph/resolution_store.rb
150
+ - lib/necropsy/graph_self_check.rb
60
151
  - lib/necropsy/guardrail/baseline.rb
61
152
  - lib/necropsy/guardrail/diff.rb
62
153
  - lib/necropsy/guardrail/quarantine.rb
154
+ - lib/necropsy/load_graph.rb
63
155
  - lib/necropsy/models.rb
156
+ - lib/necropsy/performance_profiler.rb
64
157
  - lib/necropsy/project.rb
65
158
  - lib/necropsy/reachability/engine.rb
159
+ - lib/necropsy/reference_barrier.rb
66
160
  - lib/necropsy/report.rb
67
161
  - lib/necropsy/reporter.rb
68
162
  - lib/necropsy/runner.rb
163
+ - lib/necropsy/runtime_feedback.rb
164
+ - lib/necropsy/semantics_matrix.rb
165
+ - lib/necropsy/trace_point_runtime.rb
166
+ - lib/necropsy/type_facts.rb
69
167
  - lib/necropsy/version.rb
168
+ - lib/necropsy/why_not_explanation.rb
169
+ - lib/necropsy/why_not_renderer.rb
170
+ - lib/necropsy/world_policy.rb
171
+ - schema/necropsy-report-v2.schema.json
172
+ - script/measure.rb
70
173
  homepage: https://github.com/ydah/necropsy
71
174
  licenses:
72
175
  - MIT
73
176
  metadata:
74
177
  allowed_push_host: https://rubygems.org
75
178
  homepage_uri: https://github.com/ydah/necropsy
76
- source_code_uri: https://github.com/ydah/necropsy.git
179
+ source_code_uri: https://github.com/ydah/necropsy/tree/main
180
+ changelog_uri: https://github.com/ydah/necropsy/blob/main/CHANGELOG.md
77
181
  rubygems_mfa_required: 'true'
78
182
  rdoc_options: []
79
183
  require_paths: