pub struct GroupDetail {
pub fingerprint: CloneGroupFingerprint,
pub member_breakdowns: Vec<SimilarityBreakdown>,
pub cohesion_breakdown: SimilarityBreakdown,
pub identifier_jaccard: f64,
pub body_materiality: BodyMateriality,
pub boilerplate: Option<Boilerplate>,
pub test_code: bool,
pub test_code_evidence: Option<TestCodeEvidence>,
pub width_family: bool,
}Expand description
Reporting detail for one clone group, parallel to the group at the same
index in StructuralReport::groups.
Fields§
§fingerprint: CloneGroupFingerprintThe group’s stable, position-free fingerprint (its clone id).
member_breakdowns: Vec<SimilarityBreakdown>The similarity breakdown of the medoid against each member, parallel to
the group’s members (the medoid’s own entry is a perfect self-match).
cohesion_breakdown: SimilarityBreakdownThe verifier breakdown for the actual weakest pair in the cohesive
group. This is the evidence that establishes min_pairwise.
identifier_jaccard: f64Smallest raw-identifier Jaccard agreement against the canonical unit. It is evidence only: detection, clone class, and priority ignore it.
body_materiality: BodyMaterialityConservative evidence that every member carries a material body.
This is not a code-size estimate. It records only syntactic work that a maintainer must understand while changing each copy.
boilerplate: Option<Boilerplate>The dominant boilerplate shape of the whole group, when at least four fifths of its members match it. The per-member classifications remain available in reports so the exceptional bodies are never hidden.
test_code: boolWhether every member is test code. A group with even one member outside the suite is duplication between test and tested code, which is the interesting case and must not be ranked with the suite.
test_code_evidence: Option<TestCodeEvidence>The aggregate evidence for Self::test_code.
Marker takes precedence when any member has it; path is named only
when every member is path-derived. None means at least one member is
not test code.
width_family: boolWhether the group reads as one routine written once per integer width.
A Boilerplate category is a judgement about one body, aggregated to
the group only when every member agrees. This is not: it is a statement
about how two bodies differ, which no member can carry on its own, so it
sits beside the category rather than inside it.
Trait Implementations§
Source§impl Clone for GroupDetail
impl Clone for GroupDetail
Source§fn clone(&self) -> GroupDetail
fn clone(&self) -> GroupDetail
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more