使用 SwiftLint 创建自定义规则很困难,因为没有验证级别,就像对“正常”规则的测试一样。试试AnyLint,它是专门为解决这个问题而编写的。它是用 Swift 编写的,但适用于任何语言,因为它是基于 Regex 的。
您的用例在 AnyLint 中将如下所示:
// MARK: CommaSpace
try Lint.checkFileContents(
checkInfo: "CommaSpace: Expected only one space after a comma.",
regex: #", {2,}"#,
matchingExamples: ["[1, 2]", "obj.foo(x, y)"],
nonMatchingExamples: ["[1, 2]", "obj.foo(x, y)"],
includeFilters: [#".*\.swift"#]
)
使用 AnyLint,您甚至可以autocorrectReplacement
像这样提供自动更正:
// MARK: CommaSpace
try Lint.checkFileContents(
checkInfo: ... // same parameters as above, plus:
autoCorrectReplacement: ", ",
autoCorrectExamples: [
["before": "[1, 2]", "after": "[1, 2]"],
["before": "obj.foo(x, y)", "after": "obj.foo(x, y)"],
]
)
我希望这有帮助。