Skip to content

Commit

Permalink
Split violation reason and provide a better description (#5627)
Browse files Browse the repository at this point in the history
  • Loading branch information
SimplyDanny committed Jun 22, 2024
1 parent 47ef99c commit ff96d16
Showing 1 changed file with 20 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ struct StaticOverFinalClassRule: Rule {
static let description = RuleDescription(
identifier: "static_over_final_class",
name: "Static Over Final Class",
description: "Prefer `static` over `final class`",
description: """
Prefer `static` over `class` when the declaration is not allowed to be overridden \
in child classes due to its context being final. Likewise, the compiler complains \
about `open` being used in `final` classes.
""",
kind: .idiomatic,
nonTriggeringExamples: [
Example("""
Expand Down Expand Up @@ -100,12 +104,21 @@ private extension StaticOverFinalClassRule {

// MARK: -
private func validateNode(at position: AbsolutePosition, with modifiers: DeclModifierListSyntax) {
if modifiers.contains(keyword: .final),
modifiers.contains(keyword: .class) {
violations.append(position)
} else if modifiers.contains(keyword: .class),
classContexts.peek() == true {
violations.append(position)
let reason: String? = if modifiers.contains(keyword: .final), modifiers.contains(keyword: .class) {
"Prefer `static` over `final class`"
} else if modifiers.contains(keyword: .class), classContexts.peek() == true {
"Prefer `static` over `class` in a final class"
} else {
nil
}
if let reason {
violations.append(
ReasonedRuleViolation(
position: position,
reason: reason,
severity: configuration.severity
)
)
}
}
}
Expand Down

0 comments on commit ff96d16

Please sign in to comment.