Violations grouped by rule ID (lazily computed, cached).
late final Map<String, int> countByRule = _computeRuleCounts();