swiftlint开放式支撑规则

时间:2017-03-09 07:30:44

标签: regex swift swiftlint

我使用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() {

}

1 个答案:

答案 0 :(得分:4)

你的(\S+.*\{)正则表达式匹配任何不是空白的字符(一个或多个reptitions - \S+),然后是除了linebreak之外的任何字符(包括非空格 - 这里是您问题的根本原因)和{

您可以使用

\S[ \t]+\{

请参阅regex demo

<强>详情:

  • \S - 任何非空白字符
  • [ \t]+ - 一个或多个(+水平 whitesapces(可以替换为[\t\p{Zs}]+,其中\p{Zs}匹配所有水平Unicode空白而不标签)。
  • \{ - 文字{符号。