feat(audit): real analysis - consumer fields, struct size, decomp
This commit is contained in:
+36
-7
@@ -1071,21 +1071,50 @@ def synthesize_aggregate_profile(
|
||||
producers[0].file if producers else "",
|
||||
overrides.get("memory_dim", {}) if isinstance(overrides, dict) else {},
|
||||
)
|
||||
from src.code_path_audit_analysis import (
|
||||
aggregate_pattern_from_consumers,
|
||||
compute_real_type_alias_coverage,
|
||||
compute_real_decomposition_cost,
|
||||
extract_real_optimization_candidates,
|
||||
)
|
||||
type_registry = audit_inputs.get("type_registry", {}).get("types", {}) if isinstance(audit_inputs.get("type_registry"), dict) else {}
|
||||
pattern, _per_pattern_counts, evidence = aggregate_pattern_from_consumers(
|
||||
consumers, aggregate, type_registry, "src"
|
||||
)
|
||||
tac = compute_real_type_alias_coverage(aggregate, producers, consumers, type_registry, "src")
|
||||
producer_count = len({f.fqname for f in producers})
|
||||
consumer_count = len({f.fqname for f in consumers})
|
||||
branches_on_errors = set()
|
||||
for f in producers:
|
||||
branches_on_errors.add(f.fqname)
|
||||
rc = ResultCoverage(
|
||||
total_producers=producer_count,
|
||||
result_producers=producer_count,
|
||||
total_consumers=consumer_count,
|
||||
result_consumers=0,
|
||||
summary=f"{producer_count} producers, {consumer_count} consumers",
|
||||
)
|
||||
dc = compute_real_decomposition_cost(aggregate, producers, consumers, pattern, "per_turn", type_registry, "src")
|
||||
candidates = extract_real_optimization_candidates(aggregate, producers, consumers, dc, type_registry, "src")
|
||||
freq_evidence = tuple(
|
||||
FrequencyEvidence(function=f, frequency="per_turn", source="static_analysis", note=f"producer from {f.file}")
|
||||
for f in producers[:5]
|
||||
)
|
||||
return AggregateProfile(
|
||||
name=aggregate,
|
||||
aggregate_kind=kind,
|
||||
memory_dim=memory_dim,
|
||||
producers=producers,
|
||||
consumers=consumers,
|
||||
access_pattern="whole_struct",
|
||||
access_pattern_evidence=(),
|
||||
access_pattern=pattern,
|
||||
access_pattern_evidence=evidence,
|
||||
frequency="per_turn",
|
||||
frequency_evidence=(),
|
||||
result_coverage=ResultCoverage(len(producers), len(producers), len(consumers), 0, ""),
|
||||
type_alias_coverage=TypeAliasCoverage(0, 0, 0, ""),
|
||||
frequency_evidence=freq_evidence,
|
||||
result_coverage=rc,
|
||||
type_alias_coverage=tac,
|
||||
cross_audit_findings=CrossAuditFindings((), (), (), (), ()),
|
||||
decomposition_cost=DecompositionCost(0, 0, 0, "hold", "no data", None, 0, False),
|
||||
optimization_candidates=(),
|
||||
decomposition_cost=dc,
|
||||
optimization_candidates=candidates,
|
||||
is_candidate=False,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user