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

时间:2019-05-30 02:52:49

标签: swift regex 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 }
}

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

1 个答案:

答案 0 :(得分:1)

我建议使用

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

或者,用\h匹配水平空白的替代方法:

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

请参见regex demo(或this one)。

详细信息

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