Checkstyle SDK Guiの AST ブラウジング コードは、
else if
と
else
if
いずれの場合else
もLITERAL_ELSE
、if
...
したがって、一般的な正規表現else[ \t]*[\r\n]+[ \t]*if
は、実際にその種のコードを検出するための迅速な方法です。
次の場合を含むように正規表現を修正します。
- 改行の前後にタブではなくスペースはありません
- これは複数の改行です。
もちろん、\s
空白の正規表現には改行文字が含まれているため、使用したくありません。改行文字からスペースを分離する方が明確です。
注: Checkstyle 5.0beta では、「Generic Illegal Regexp」ではなく、「Regexp」モジュールを使用してください。
その RegExp モジュールを「illegalPattern」(関連する重大度「警告」) として構成できます。任意の種類の「複数行」フラグを使用するには: 正規表現で十分です。
正規表現の
説明
指定されたパターンが存在すること、存在する回数が設定された回数未満であること、またはファイルに存在しないことを確認するチェック。
このチェックは、ファイルから正規表現を提供することを除いて、RegexpHeader、GenericIllegalRegexp、および RequiredRegexp によって提供されるすべての機能を結合します。
複数行モードで動作するという点で、それらとは異なります。正規表現は複数の行にまたがることができ、一度にファイル全体に対してこれをチェックします。その他はシングルライン モードで動作します。それらの 1 つまたは複数の正規表現は、1 行だけにまたがることができます。これらをファイルの各行に対して順番にチェックします。
Thomasはコメントで次のように述べています。
checkstyle AST には行番号情報があります。
「“<code>else if” を同じ行に強制する Checkstyle/PMD/Findbugs ルールはありますか?」を参照してください (ここでは、正規表現の一致ではなく、カスタム チェック
を使用する必要があります)。