2011-10-19 9 views
0

開発者がコメントなしで@Ignoreを使用すると、エラーとしてフラグを付けるカスタムCheckstyleルールを作成しようとしています。したがって、私は次のシナリオに一致する正規表現を探しています:CheckstyleのRegex式が@Ignoreコメントの不一致で一致するようにしました

@Ignore 
@Test 
public void someTest() { 
    ... 
} 

と、この1:

@Ignore @Test //or @Test @Ignore 
public void someTest() { 
    ... 
} 

が、このシナリオを一致しません:

@Ignore("some comment detailing why this test was ignored") 
@Test 
public void someTest() { 
    ... 
} 

またはこのいずれかを:

@Test 
public void someTest() { 
    ... 
} 

だから基本的にその正規表現は@Ignoreと一致しますが、そのときだけ、そして予選のコメントなしで現在が存在するときだけです。 @Ignore("commnent here")

+0

あなたが正規表現エンジンを使用していますか? (Regexのタグ情報(http://stackoverflow.com/tags/regex/info))で説明されているように、ソリューションは少し異なるかもしれません。 –

+0

@Tim、私はそれがJavaと思われます –

答えて

1
@Ignore(?![ \t]*\() 

は、それが左括弧が続いていない場合にのみ@Ignore一致します。

説明:Javaでは

@Ignore # Match "@Ignore" 
(?!  # Assert that we can't match... 
[ \t]* # optional spaces/tabs 
\(  # followed by a (at the current position 
)   # End of lookahead 

Pattern regex = Pattern.compile("@Ignore(?![ \\t]*\\()"); 
+0

おかげでTim。上記の私の元の例ではこれがうまくいくように見えます。しかし、ケントが指摘したように、私が忘れたもう一つのシナリオがあります(私の質問に追加されました) –

+0

@Chris:OK、私は答えを書き直しました。それはあなたのために働いていますか?具体的には、 '@ Ignore'とコメントとの間にスペースやタブなどの空白を入れることは可能ですか? –

+0

はいスペースは '@ Ignore'とコメントの間にある可能性があります。例えば。 '@Ignore(" some comment ")'は有効です(一致するはずはありません) –

1

あなたはこれを試してみることができます:JUnitテストのために、実際に

@Ignore\s*$ 

を、注釈:

@Test @Ignore 
public void testXXXX(){} 

も有効です。だからこれも一致する必要があります。

更新

が、これは[OK]をする必要があり:

@Ignore\s*(?!\() 
+0

ありがとうございました。 @Ignore @Testがあるときにはうまくいかないことを除いて、私はあなたの単純さが好きです。 –

+0

私の更新された回答を参照してください – Kent

+0

あなたはいくつかのコードレビューをしていると思います。おそらくIDEで? IDEには通常、フォーマッタ/ checkStyleのコード機能があります。注釈の後に改行を追加することを定義することができます。 (1行につき1つの注釈)、この質問のためだけでなく、コードをより読みやすくするためです。 – Kent

関連する問題