Slide 44
Slide 44 text
LintPipeline
import SwiftSyntax
class LintPipeline: SyntaxVisitor {
override func visit(_ node: SourceFileSyntax) -> SyntaxVisitorContinueKind {
visitIfEnabled(NeverForceUnwrap.visit, for: node)
visitIfEnabled(NeverUseForceTry.visit, for: node)
...
return .visitChildren
}
// as! Int
override func visit(_ node: AsExprSyntax) -> SyntaxVisitorContinueKind {
visitIfEnabled(NeverForceUnwrap.visit, for: node)
return .visitChildren
}
// String(a)!
override func visit(_ node: ForcedValueExprSyntax) -> SyntaxVisitorContinueKind {
visitIfEnabled(NeverForceUnwrap.visit, for: node)
return .visitChildren
}
...
}
44 — How lint rules implemented in swift-format, Yusuke Kita (@kitasuke)