2017-12-29 15 views
0

checkstyleを設定して、メソッド本体の先頭、複数行または末尾の空行を防ぐ方法はありますか?Java Checkstyleルールでメソッドの空行を制限する

private void a() { 
- 
int a = 1; 
doStuff(a); 
- 
- 
doMoreStuff(a); 
- 
} 

上記の例では、空白行を-文字で示しています。

メソッドの先頭行、末尾行、および複数の行を防ぐことができるようにしたいと思います。任意のブロックの最初と最後に空白行を強制しないように

+0

自動コードフォーマッタを使用します。 –

+0

自動化されたビルドがフォーマットを検証し、誰かがフォーマッタの適用を忘れるとCIビルドが失敗する可能性があるように、checkstyleルールでこれを強制することが目的です。 –

答えて

0

、あなたは複数行の正規表現を使用することができますチェック:

<module name="RegexpMultiline"> 
    <property name="message" value="Blank line at start of block should be removed" /> 
    <property name="format" value="(?&lt;=\{\s{0,99}$)^$" /> 
    <property name="fileExtensions" value="groovy,java" /> 
</module> 
<module name="RegexpMultiline"> 
    <property name="message" value="Blank line at end of block should be removed" /> 
    <property name="format" value="(?&lt;!\{\s{0,99}$)^$(?=^\s{0,99}\})" /> 
    <property name="fileExtensions" value="groovy,java" /> 
</module> 

「^ $」は空白行を意味します。

+0

有望に見えますが、メソッドやフィールド宣言の前でも後でもすべての改行に一致するようです。 –

0

複数の空白行を防ぐには、EmptyLineSeparatorチェックを使用します。その主な目的は、ファイル内のメンバー間に空白行があることを確認することですが、allowMultipleEmptyLinesプロパティも持っています。これを禁止するには "false"に設定できます。

現時点では、チェックの際にはbugがあります。つまり、メソッド間にコメント(JavaDocを含む)があるメソッド間に複数の空白行が正しく検出されません。私はこの時点でfixに取り組んでいます。

ブロックの先頭または最後に改行をチェックするのは、Pankajの答えに記載されているように、RegexpMultilineのチェックだけが可能だと思います。

関連する問題