Мне нужно правило, которое проверяет, чтобы поля и классы были правильно аннотированы с помощью java-параллелизма, на практике аннотации, предоставляемые: http://mvnrepository.com/artifact/net.jcip/jcip-annotations
Поля должны быть аннотированы @GuardedBy, а классы должны быть аннотированы одним из @Immutable, @ThreadSafe или @ NotThreadSafe.
В настоящее время у меня есть правило, которое гарантирует, что классы Spring Dao аннотируются @Repository вместо @Service или @ Component.
<module name="Regexp">
<property name="format"
value="(@Component|@Service)(.*[\n])*.*class.*Dao.*\{" />
<property name="message"
value="Daos sollten lieber mit @Repository annotiert werden." />
<property name="illegalPattern" value="true" />
</module>
Проблема с этим подходом состоит в том, что я могу только проверить некоторую аннотацию и сказать, что лучше использовать другую аннотацию. Это не помогает мне с проверкой аннотаций jcip, потому что я не могу проверить, нет ли «конкретной аннотации».
Для начала было бы здорово, если бы кто-то знал, как преобразовать приведенную выше проверку Dao в проверку, которая просто гарантирует, что @Repository присутствует в классах, имена которых заканчиваются на Dao.
Затем этот шаблон можно использовать для разработки проверок аннотаций jcip.
Или, может быть, вместо того, чтобы пытаться преобразовать проверку регулярного выражения, возможно, есть какой-то способ реализовать правила jcip с поддержкой токенов checkstyle? Это может сделать правило надежным.
В любом случае, я хотел бы знать, как обеспечить наличие конкретной аннотации для определенного элемента с помощью контрольного стиля. Надеюсь, кто-то знает это. :)