Как написать правило PMD, которое будет искать аннотацию javax.validation.constraints.NotNull
и проверить, имеет ли он атрибут сообщения?PMD найти аннотацию и проверить, есть ли атрибут
Bad:
@NotNull
private int value;
Хорошо
@NotNull(message = "value cannot be null.")
private int value;
Главная забота для меня является то, что эта аннотация может быть размещена basicaly где-нибудь
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
Отлично! Я буду проверять этот xpath завтра. Если я еще не прошу слишком много, не могли бы вы привести пример, как я могу изменить этот xpath, поэтому он будет искать другие аннотации из пакета javax.validation.constraints', например @AssertTrue или @Min, если они также имеют ' атрибут message'? – Tomasz
Решение грубой силы должно быть «или» им: '//Annotation[./*/Name[@Image = 'NotNull' или @Image = 'AssertTrue' или ...] и не (.// MemberValuePair/@ Image = 'message')] ', но с [всеми аннотациями] (https://docs.oracle.com/javaee/7/api/javax/validation/constraints/package-summary.html), что будет быть немного раздражающим. PMD имеет собственный анализатор java, который не знает, используется ли аннотация из 'javax.validation.constraints'. Возможно, это было бы возможно с некоторыми очень хакерскими запросами в операциях импорта. – HairyFotr
Я придумал довольно сумасшедший запрос, который работает для меня в pmd-дизайнере с проверкой XPath 2.0, но, пожалуйста, дайте мне знать, если он также работает в наборе правил. – HairyFotr