首页 文章

swiftlint开放式支撑规则

提问于
浏览
3

我正在使用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 回答

  • 3

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

    你可以用

    \S[ \t]+\{
    

    regex demo .

    Details

    • \S - 任何非空白字符

    • [ \t]+ - 一个或多个( +horizontal whitesapces(可以替换为 [\t\p{Zs}]+ ,其中 \p{Zs} 匹配没有选项卡的所有水平Unicode空格) .

    • \{ - 文字 { 符号 .

相关问题