如何编写将搜索javax.validation.constraints.NotNull
批注并验证其是否具有消息属性的PMD规则?
坏:
@NotNull
private int value;
好
@NotNull(message = "value cannot be null.")
private int value;
我主要担心的是,该注释基本上可以放置在任何地方
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
最佳答案
这是xpath查询,用于查找没有消息的NotNull批注://Annotation[*/Name/@Image = 'NotNull' and not(.//MemberValuePair/@Image = 'message')]
我已经测试了除ANNOTATION_TYPE之外的所有情况,我不确定如何在PMD构建器应用程序中进行测试。
如果您想全部javax.validation.constraints
我想出了这个://Annotation[*/Name/@Image = tokenize(replace(string-join(//ImportDeclaration/Name/@Image[starts-with(., "javax.validation.constraints.")], "|"), "javax.validation.constraints.", ""), '[|]') and not(.//MemberValuePair/@Image = 'message')]
因此:取所有以javax.validation.constraints.
开头的导入,用string-join
转换为字符串,用javax.validation.constraints.
除去replace
并用tokenize
拆分为一组值。
关于java - PMD查找批注并检查是否具有属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40111626/