基本的に構造体、クラス、プロトコル(機能によってDC、DB、DM)にプレフィックスを適用するswiftlintルールがあります。これをトップレベルのオブジェクトにのみ一致させたいと考えています。以下の例では、私はエラーをスローするだけTopLevel
とSecondTopLevel
が欲しい:(struct|class|protocol)\s(?!(func|DB|DC|DM))[^\n\r]+\{
、これはTopLevel
とNotTopLevel
の両方に一致しますswiftlintのトップレベルオブジェクトのみの照合方法
class TopLevel {
struct NotTopLevel {
var test
}
}
class SecondTopLevel {
}
我々の現在の正規表現は次のようです。私はどういうわけか、NotTopLevel
と一致しないように正規表現(またはその他の最善のツール)を与えたいと思いますが、まだTopLevel
とSecondTopLevel
と一致するようにしてください。これは可能ですか?どのようにこれを行うための任意のアイデア?
私が擬似しようとしてきたアプローチは、プレフィックスをチェックする前に0以上の以前のクラス定義を探すことですが、チェックする前にクラス全体を1回以上マッチさせようとしている接頭辞。
インデントが常に一貫していると想定できますか? – Faibbus
インデントを使用して宣言のレベルを見つけることができない場合は、正規表現だけでこれを行う方法はありません。どのような正規表現を思いついても、それを壊す宣言が常に存在します。 – Faibbus