下一行大括号的 SwiftLint 规则,但有一些例外



我想修改.swiftlint.yml以添加一些自定义规则以在下一行强制执行大括号。这对我有用...

  opening_braces:
    name: "Opening Braces not on Next Line"
    message: "Opening braces should be placed on the next line."
    include: "*.swift"
    regex: 'S[ t]*{'
    severity: warning

但是,在某些情况下,我想在同一行上允许大括号,例如:

override var cornerRadius: CGFloat
{
    get { return layer.cornerRadius }
    set { layer.cornerRadius = newValue }
}

如何更改我的正则表达式以允许单行获取者/设置者使用相同的行?

我建议使用

regex: '^(?![ t]*[sg]et[ t]+{.*}).*S[ t]*{'

或者,它的替代方案与h匹配的水平空白:

regex: '^(?!h*[sg]eth+{.*}).*Sh*{'

请参阅正则表达式演示(或此演示(。

  • ^ - 字符串的开头
  • (?!h*[sg]eth+{.*}) - 字符串中不应紧跟的位置
    • h* - 0+ 水平空格
    • [sg]et - setget
    • h+ - 1+ 水平空格
    • {.*} - { 、任何 0+ 字符,尽可能多的字符和}
  • .* - 任何 0+ 字符,
  • 尽可能多的
  • S - 非空格字符
  • h* - 0+ 水平空格
  • { - 一个{字符。

最新更新