3

我想修改.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 }
}

如何更改我的正则表达式以允许单行 getter/setter 使用同一行?

4

1 回答 1

2

我建议使用

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

或者,它具有\h匹配的水平空格的替代方案:

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

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

细节

  • ^- 字符串的开始
  • (?!\h*[sg]et\h+\{.*\})- 字符串中不应紧跟的位置
    • \h*- 0+ 水平空格
    • [sg]et-setget
    • \h+- 1+ 水平空格
    • \{.*\}- {, 任何 0+ 字符, 尽可能多, 和}
  • .*- 任何 0+ 个字符,尽可能多
  • \S- 一个非空白字符
  • \h*- 0+ 水平空格
  • \{- 一个{字符。
于 2019-05-30T07:40:19.597 回答