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