Выражение регулярного выражения для Checkstyle, чтобы соответствовать отсутствующим комментариям @Ignore - PullRequest
0 голосов
/ 19 октября 2011

Я пытаюсь создать собственное правило 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")

Ответы [ 2 ]

1 голос
/ 19 октября 2011

вы можете попробовать это:

@Ignore\s*$

на самом деле для теста junit, аннотация:

@Test @Ignore
public void testXXXX(){}

также действительна.так что это тоже должно совпадать.

обновлено

все должно быть в порядке:

@Ignore\s*(?!\()
1 голос
/ 19 октября 2011
@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]*\\()");
...