Как сопоставить только объекты верхнего уровня в swiftlint

У нас есть правило swiftlint, которое в основном обеспечивает префикс для наших структур, классов и протоколов (DC, DB или DM в зависимости от функции). Мы хотим сопоставить это только с объектами верхнего уровня, например, в приведенном ниже примере я бы хотел только TopLevel а также SecondTopLevel выкинуть ошибку:

class TopLevel {

    struct NotTopLevel {
        var test
    }

}

class SecondTopLevel {

}

Наше текущее регулярное выражение следующее: (struct|class|protocol)\s(?!(func|DB|DC|DM))[^\n\r]+\{и это будет соответствовать обоим TopLevel а также NotTopLevel, Я хотел бы как-то дать регулярное выражение (или другой инструмент swiftlint), чтобы не совпадать NotTopLevel, но все равно совпадать TopLevel а также SecondTopLevel, Это возможно? Есть идеи, как это сделать?

Подход, который я пытался имитировать, заключается в поиске 0 или более предыдущих определений классов, прежде чем проверять наш префикс, однако я сталкиваюсь с проблемами, пытаясь сопоставить весь класс один или несколько раз, прежде чем проверять префикс.

1 ответ

Ты можешь использовать

(struct|class|protocol).*

поэтому вы соответствуете только первому классу структуры или протоколу.

Другие вопросы по тегам