SwiftLint Rule for Braces 在下一行,但有一些异常(exception)

标签 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 }
}

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

最佳答案

我建议使用

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 - 设置获取
    • \h+ - 1+ 水平空格
    • \{.*\} - {,任何 0+ 个字符,尽可能多,以及 }
  • .* - 任何 0+ 个字符,尽可能多
  • \S - 非空白字符
  • \h* - 0+ 水平空格
  • \{ - { 字符。

关于SwiftLint Rule for Braces 在下一行,但有一些异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56371051/

相关文章:

javascript - 如何从单词字符中清除字符串,Javascript

sql - 如何使用 regexp_substr 提取包名称

ios - 什么是 extension_access_modifier swiftlint?

swift - NSRange 和 NSMakeRange 的区别

ios - UINavigationBar + largeTitleDisplayMode

PHP过滤1个url的数组

ios - 循环播放 AVPlayer 视频流并刷新每次循环的比特率

ios - Swiftlint 自动更正命令不起作用

ios - 整数错误

swift - 如何在使用 Parse 和 swift 保存数据后立即获取 objectId