由于一些奇怪的原因,PMD给出了这个错误:
@Transactional
这是我在ruleset.xml中声明此规则的方式:
An internal error occurred during: "ReviewCode".
Unable to find referenced rule UseSingleton; perhaps the rule name is mispelled?
我正在使用带有4.0.6 PMD插件版本的Eclipse Kepler。我究竟做错了什么?
答案 0 :(得分:3)
另请参阅错误报告#1339和changelog for 5.3.1:
的答案Language Java,ruleset design.xml:规则“UseSingleton”已重命名为“UseUtilityClass”。另见错误#1059和#1339。
这已通过PMD 5.3.1及更高版本修复。
目前,您需要手动修复规则集文件,并将UseSingleton
替换为UseUtilityClass
。我建议关闭eclipse,在工作区中找到ruleset.xml文件,更改它,然后启动eclipse。
答案 1 :(得分:0)
您尝试将配置用于PMD> = 5.0。对于较低版本,您需要从规则参考中删除java/
:
<rule ref="rulesets/design.xml/UseSingleton"/>
从PMD 5.0发行说明:
此版本的PMD破坏了与先前版本的PMD的API兼容性,以及RuleSet XML兼容性。 maven坐标(groupId)也已更改。决定打破兼容性,允许PMD 内部和代码组织得到改进,以更好地处理额外的 语言。