swiftlin 开括号规则

swiftlint open brace rule

我正在使用 Swiftlint 在我们的代码库中实施一些实践。我想添加一个自定义规则,确保 { 始终出现在换行符之后。我以为我知道正则表达式,但似乎无法弄清楚。我只是检查一行是否包含 { 之前除空格以外的任何字符。 {.

之后可以有内容

我现在拥有的:

invalid_open_brace:
    name: "Open brace should start on its own line"
    regex: "(\S+.*\{)"
    message: "Open brace should start on its own line"
    severity: warning

以下是一些应该匹配和不应该匹配的示例字符串:

// NO MATCH
else if let var1 = var1 as? String, !var1.isEmpty 
{

//NO MATCH
class Person
{
    // MATCH
    int() 
    {
    }

    // NO MATCH
    function() 
    {

    }
 }

// MATCH
function() {

}

您的 (\S+.*\{) 正则表达式匹配任何不是空格的字符(一个或多个重复 - \S+),然后是换行符以外的任何字符(包括非空格 - 这是您问题的根本原因)和 {.

您可以使用

\S[ \t]+\{

参见regex demo

详情:

  • \S - 任何非空白字符
  • [ \t]+ - 一个或多个 (+) 水平 whiteapces(可以替换为 [\t\p{Zs}]+ 其中 \p{Zs} 匹配所有没有制表符的水平 Unicode 空格)。
  • \{ - 文字 { 符号。