Enum AnalysisName
pub enum AnalysisName {
Show 57 variants
Hotspots,
HotspotVelocity,
Coupling,
Ownership,
CodeAge,
AbsChurn,
AuthorChurn,
EntityChurn,
Communication,
CodeHealth,
Summary,
Revisions,
Authors,
Clones,
CloneCoupling,
Soc,
Messages,
MainDev,
MainDevByRevs,
MainDevByDeletions,
EntityEffort,
EntityOwnership,
TopCommitters,
KnowledgeIslands,
Centrality,
Communities,
GodClasses,
ArchViolations,
DependencyCycles,
ArchitectureRoles,
Instability,
ArchitectureMetrics,
ArchitectureTrend,
HealthTrend,
CycleOrigins,
ModularityViolations,
UnstableInterface,
Crossing,
StaleCode,
PairProgramming,
LeadTime,
BusFactor,
DeliveryFriction,
DeliveryMetrics,
RefactoringTargets,
EffortExposure,
CodeFamiliarity,
TeamComposition,
CoordinationNeeds,
MarginalOwnerRisk,
ReleaseCadence,
FunctionXray,
FunctionHotspots,
FunctionCoupling,
FindingHotspotOverlap,
CycleHealth,
DefectValidation,
}Variants§
Hotspots
HotspotVelocity
Coupling
Ownership
CodeAge
AbsChurn
AuthorChurn
EntityChurn
Communication
CodeHealth
Summary
Revisions
Authors
Clones
CloneCoupling
Soc
Messages
MainDev
MainDevByRevs
MainDevByDeletions
EntityEffort
EntityOwnership
TopCommitters
KnowledgeIslands
Centrality
Communities
GodClasses
ArchViolations
DependencyCycles
ArchitectureRoles
Instability
ArchitectureMetrics
ArchitectureTrend
HealthTrend
CycleOrigins
ModularityViolations
UnstableInterface
Crossing
StaleCode
PairProgramming
LeadTime
BusFactor
DeliveryFriction
DeliveryMetrics
RefactoringTargets
EffortExposure
CodeFamiliarity
TeamComposition
CoordinationNeeds
MarginalOwnerRisk
ReleaseCadence
FunctionXray
FunctionHotspots
FunctionCoupling
FindingHotspotOverlap
CycleHealth
DefectValidation
Implementations§
§impl AnalysisName
impl AnalysisName
pub fn as_str(self) -> &'static str
pub fn all() -> &'static [Self]
pub fn supports_time_bucket(&self) -> bool
pub fn supports_time_bucket(&self) -> bool
Classify which analyses can run under
--time-bucket. The bucketed source table (changes_bucketed)
is materialised by lineage::materialize_source and synthesises
rev as a date-truncated string. Any analysis that JOINs
c.rev = commits.rev against the non-bucketed commits table
silently returns zero rows. Any analysis that uses
materialize_if_needed (no-op on the bucketed branch) crashes
with Catalog Error: Table changes_bucketed does not exist.
Both failure modes are unacceptable user experiences.
Currently only coupling, soc, hotspots, and code-health
invoke materialize_source AND have SQL that doesn’t depend on
the commits JOIN for rev equality. These four are the only
analyses that semantically MAKE SENSE under bucketing (they’re
all about co-change, which --time-bucket is designed to
smooth). The other 50 are either per-file or per-author
aggregations where bucketing is semantically a no-op or
outright invalid.
Adding a new analysis: opt INTO bucketing by adding the variant
to this match arm AND wiring materialize_source (not
materialize_if_needed) in the analysis’s run_* function.
Trait Implementations§
§impl Clone for AnalysisName
impl Clone for AnalysisName
§fn clone(&self) -> AnalysisName
fn clone(&self) -> AnalysisName
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for AnalysisName
§impl Debug for AnalysisName
impl Debug for AnalysisName
§impl Display for AnalysisName
impl Display for AnalysisName
impl Eq for AnalysisName
§impl FromStr for AnalysisName
impl FromStr for AnalysisName
§impl Hash for AnalysisName
impl Hash for AnalysisName
§impl PartialEq for AnalysisName
impl PartialEq for AnalysisName
impl StructuralPartialEq for AnalysisName
Auto Trait Implementations§
impl Freeze for AnalysisName
impl RefUnwindSafe for AnalysisName
impl Send for AnalysisName
impl Sync for AnalysisName
impl Unpin for AnalysisName
impl UnsafeUnpin for AnalysisName
impl UnwindSafe for AnalysisName
Blanket Implementations§
impl<T> Allocation for T
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more