pub struct SpecGroupInconsistency { /* private fields */ }Expand description
SpecGroupInconsistency rule
Detects modules where Spec TypeAliases use different Groups.
§Rule Code
RS004 (Ryo Spec)
§Detection
- Group Spec TypeAliases by their parent module
- Extract the Group name from each Spec definition
- Report modules with multiple different Groups
§Example Violation
ⓘ
// src/domain/task.rs
type TaskSpec = Spec<DomainGroup, Task>; // Uses DomainGroup
type UserSpec = Spec<OtherGroup, User>; // Uses OtherGroup - inconsistent!§Fix
This is a report-only rule. Manual review is required to decide which Group should be used consistently.
Implementations§
Trait Implementations§
Source§impl Default for SpecGroupInconsistency
impl Default for SpecGroupInconsistency
Source§impl LintSuggest for SpecGroupInconsistency
impl LintSuggest for SpecGroupInconsistency
Source§fn default_severity(&self) -> LintSeverity
fn default_severity(&self) -> LintSeverity
Returns the default severity for this lint rule
Source§fn create_lint_opportunity(
&self,
id: OpportunityId,
targets: Vec<SymbolId>,
location: SuggestLocation,
message: impl Into<String>,
details: LintDetails,
) -> SuggestOpportunity
fn create_lint_opportunity( &self, id: OpportunityId, targets: Vec<SymbolId>, location: SuggestLocation, message: impl Into<String>, details: LintDetails, ) -> SuggestOpportunity
Helper to create a lint opportunity
Source§impl SpecSuggest for SpecGroupInconsistency
impl SpecSuggest for SpecGroupInconsistency
Source§fn spec_suffix(&self) -> &str
fn spec_suffix(&self) -> &str
Get the suffix pattern for identifying Spec TypeAliases (default: “Spec”)
Source§fn is_spec_alias(&self, name: &str) -> bool
fn is_spec_alias(&self, name: &str) -> bool
Check if a TypeAlias name looks like a Spec
Source§fn extract_base_type<'a>(&self, alias_name: &'a str) -> Option<&'a str>
fn extract_base_type<'a>(&self, alias_name: &'a str) -> Option<&'a str>
Extract the base type name from a Spec alias name
e.g., “TaskSpec” -> “Task”
Source§fn get_module_path(&self, path: &SymbolPath) -> Option<SymbolPath>
fn get_module_path(&self, path: &SymbolPath) -> Option<SymbolPath>
Get the module path for a symbol (parent of the symbol)
Source§impl Suggest for SpecGroupInconsistency
impl Suggest for SpecGroupInconsistency
Source§fn description(&self) -> &str
fn description(&self) -> &str
Human-readable description
Source§fn category(&self) -> SuggestCategory
fn category(&self) -> SuggestCategory
Category for filtering/grouping
Source§fn safety_level(&self) -> SafetyLevel
fn safety_level(&self) -> SafetyLevel
Safety level for auto-application decisions
Source§fn priority_weight(&self) -> f32
fn priority_weight(&self) -> f32
Priority weight for ranking (higher = more important)
Source§fn detect(
&self,
ctx: &AnalysisContext,
symbols: &[SymbolId],
) -> Vec<SuggestOpportunity>
fn detect( &self, ctx: &AnalysisContext, symbols: &[SymbolId], ) -> Vec<SuggestOpportunity>
Detect opportunities for the given symbols Read more
Source§fn to_mutation_specs(
&self,
_ctx: &AnalysisContext,
_opportunity: &SuggestOpportunity,
) -> SuggestResult<Vec<MutationSpec>>
fn to_mutation_specs( &self, _ctx: &AnalysisContext, _opportunity: &SuggestOpportunity, ) -> SuggestResult<Vec<MutationSpec>>
Convert a detected opportunity to executable MutationSpecs Read more
Source§fn rule_id(&self) -> Option<&str>
fn rule_id(&self) -> Option<&str>
Optional rule ID for pattern-based rules (e.g., “RL021”).
Returns None for non-pattern suggestions.
Source§fn target_scopes(&self) -> Vec<SymbolScope>
fn target_scopes(&self) -> Vec<SymbolScope>
Target scopes where this suggest applies. Read more
Source§fn accepts_params(&self) -> bool
fn accepts_params(&self) -> bool
Whether this suggestion accepts external parameters. Read more
Source§fn param_schema(&self) -> Vec<ParamDef>
fn param_schema(&self) -> Vec<ParamDef>
Schema of accepted parameters (for LLM consumption). Read more
Source§fn detect_with_params(
&self,
ctx: &AnalysisContext,
symbols: &[SymbolId],
_params: &SuggestParams,
) -> Vec<SuggestOpportunity>
fn detect_with_params( &self, ctx: &AnalysisContext, symbols: &[SymbolId], _params: &SuggestParams, ) -> Vec<SuggestOpportunity>
Detect opportunities with external parameters. Read more
Auto Trait Implementations§
impl Freeze for SpecGroupInconsistency
impl RefUnwindSafe for SpecGroupInconsistency
impl Send for SpecGroupInconsistency
impl Sync for SpecGroupInconsistency
impl Unpin for SpecGroupInconsistency
impl UnsafeUnpin for SpecGroupInconsistency
impl UnwindSafe for SpecGroupInconsistency
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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