我正在尝试创建一个自定义的Checkstyle规则,当开发人员在没有评论的情况下使用@Ignore
时,该规则将标记为错误。因此,我正在寻找一个符合以下情况的正则表达式:
@Ignore
@Test
public void someTest() {
...
}
和这一个:
@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 :(得分:1)
@Ignore(?![ \t]*\()
仅在@Ignore
后面没有左括号时才匹配。
<强>解释强>
@Ignore # Match "@Ignore"
(?! # Assert that we can't match...
[ \t]* # optional spaces/tabs
\( # followed by a ( at the current position
) # End of lookahead
在Java中:
Pattern regex = Pattern.compile("@Ignore(?![ \\t]*\\()");
答案 1 :(得分:1)
你可以尝试一下:
@Ignore\s*$
实际上对于junit测试,注释:
@Test @Ignore
public void testXXXX(){}
也有效。所以这也需要匹配。
<强>更新强>
这应该没问题:
@Ignore\s*(?!\()