网站推广费计入什么科目,wordpress主页空白页,做优惠券网站赚钱吗,西安公司最新招聘信息eclipse pmd使用PMD是非常好的Java代码扫描程序#xff0c;可帮助您避免潜在的编程问题。 它可以轻松扩展以满足您的需求#xff0c;并且本文将为您带来与JPA的Enumerated注释用法相关的自定义PMD规则的简单示例。 在继续阅读之前#xff0c;您应该检查我以前的文章之一-JPA… eclipse pmd使用 PMD是非常好的Java代码扫描程序可帮助您避免潜在的编程问题。 它可以轻松扩展以满足您的需求并且本文将为您带来与JPA的Enumerated注释用法相关的自定义PMD规则的简单示例。 在继续阅读之前您应该检查我以前的文章之一-JPA-Enumerated default attribute 。 当您与一群JPA项目人员一起工作时几乎可以肯定其中一个开发人员将使用Enumerated批注而不定义EnumType 并且如果您不对数据库级别使用严格的数据验证例如列级别约束 您将陷入深深的麻烦。 我们想要实现的是在不使用EnumType的情况下使用Enumerated报告一个错误 Entity
Table(name BENEFITS)
public class Benefit implements Serializable {...Column(name BENEFIT_TYPE)Enumeratedpublic BenefitType getType() {return type;}...
}如果使用Enumerated和ORDINAL EnumType则发出警告 Entity
Table(name BENEFITS)
public class Benefit implements Serializable {...Column(name BENEFIT_TYPE)Enumerated(EnumType.ORDINAL)public BenefitType getType() {return type;}...
}我们可以通过两种方式实现我们的目标要么用Java描述PMD规则要么使用XPath-我将在本文中重点介绍第二种方式。 让我们从头开始–我们必须首先下载PMD 我使用版本4.2.5 pmd-bin-4.2.5.zip 将其解压缩到某个位置将工作目录更改为解压缩的PMD目录然后运行规则设计器可以在./bin/designer.sh中找到。 您应该会看到以下内容 让我们将要分析的代码放入源代码面板然后单击“执行”按钮 在“抽象语法树”面板的中间您可能会看到Annotation / MarkerAnnotation / Name结构对应于我们的Enumerated批注但未定义EnumType 。 为了匹配它我们将在XPath表达式之后放入XPath Query面板 //MarkerAnnotation/Name[Image Enumerated] 现在点击“开始”按钮时 您将在右下角的面板中找到找到的匹配项 – XPath查询正确。 现在当我们有了XPath查询时我们必须使用它来定义规则让我们打开新的XML文件将其命名为jpa-ruleset.xml 并放入其中 ruleset nameJPA rulesetxmlnshttp://pmd.sf.net/ruleset/1.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsdxsi:noNamespaceSchemaLocationhttp://pmd.sf.net/ruleset_xml_schema.xsddescriptionJPA ruleset/descriptionrule nameAvoidDefaultEnumeratedValue messageBy default Enumerated will use the ordinal. classnet.sourceforge.pmd.rules.XPathRulepriority2/prioritypropertiesproperty namexpath value//MarkerAnnotation/Name[Image Enumerated] //properties/rule
/ruleset 如您所见我们使用net.sourceforge.pmd.rules.XPathRule作为规则类并为包含我们的XPath查询的该规则定义xpath属性。 上例中的优先级表示1 –错误高优先级2 –错误正常优先级3 –警告高优先级4 –警告正常优先级和5 –信息。 我们将向我们的JPA规则集中添加另一条规则当Enumerated与显式的ORDINAL EnumType一起使用时它负责报告警告–它可以是EnumeratedEnumType.ORDINAL或Enumeratedvalue EnumType.ORDINAL 因此我们需要现在可以替代两个XPath表达式 rule nameEnumeratedAsOrdinal messageEnumeration constants shouldnt be persisted using ordinal. classnet.sourceforge.pmd.rules.XPathRulepriority4/prioritypropertiesproperty namexpath value//SingleMemberAnnotation/Name[Image Enumerated]/following-sibling::MemberValue//Name[Image EnumType.ORDINAL] |//NormalAnnotation/Name[Image Enumerated]/following-sibling::MemberValuePairs/MemberValuePair[Image value]//Name[Image EnumType.ORDINAL] //properties/rule 现在当我们拥有包含这两个规则的规则集时将其导入到Eclipse IDE中。 在这一点上我假设您已经安装了Eclipse的PMD插件请参阅 PMD –与IDE的集成 。 打开Eclipse Preferences找到PMD部分并将其展开您应该看到 点击“导入规则集...” 选择包含规则集的文件选择是否要通过引用或复制导入在这种情况下您的规则集名称将被忽略并且将使用 pmd-eclipse 名称并且您应该看到我们的两个规则已添加到清单 在eclipse询问时执行必要的构建然后在开始使用我们的新规则之前请检查项目属性 应该启用“启用PMD”选项以便PMD即时检查您的代码我们新添加的规则应在该项目中处于活动状态默认情况下为默认状态。 让我们现在写一些“坏代码”匹配我们定义的第一条规则 当您用鼠标将红色标记指向左侧时您将看到规则消息如XML中所定义 第二条规则匹配 和消息如XML中所定义 甜点的几个链接 如何编写PMD规则 XPath规则教程 如何制定新的规则集 参考 使用我们自己的JCG合作伙伴 Micha 的规则在Eclipse中自定义PMD 术士思想博客上的Jatak。 翻译自: https://www.javacodegeeks.com/2012/10/customize-pmd-in-eclipse-with-your-own.htmleclipse pmd使用