尝试将 pmd 从 6.17.0 升级到 6.18.0 时规则测试失败
rule failed test while trying to upgrade pmd from 6.17.0 to 6.18.0
规则是
"//Reference[matches(@literal, \"^\$[^!]+\") and ./preceding-sibling::Text and ./following-sibling::Text]"
为了方便我提供工程,你可以mvn-test。
整个项目在https://github.com/XenoAmess/p3c/tree/1605f4d1b9c6a505074be5328953af26f578e190/p3c-pmd
规则 class 是 com.alibaba。p3c.pmd.lang.vm.rule.other.UseQuietReferenceNotationRule
我试图查看您的更新日志,但没有发现任何相关内容。
感谢您的帮助。
这是修复 https://github.com/pmd/pmd/issues/1923. It has been fixed by using real/full name in the rule context (see https://github.com/pmd/pmd/pull/1982) 的副作用。在单元测试中,使用的文件名为 "n/a",现在被解释为目录 "n" 中的文件 "a"。 RuleContext::getSourceCodeFilename
returns 只是文件名而不是完整路径。要检索完整路径,可以使用 RuleContext::getSourceCodeFile
。
您的规则 UseQuietReferenceNotationRule 检查文件名 (UseQuietReferenceNotationRule.java:65) which is now not "n/a" anymore in the unit tests but "a". You can "fix" the unit test by simply changing UT_FILE_NAME to "a" (see UseQuietReferenceNotationRule.java:45)。
或者您可以更改规则以使用 ctx.getSourceCodeFile().toString()
恢复 UseQuietReferenceNotationRule.java:62 中的完整路径名。虽然该文件不存在,但它仍然指向 "n/a".
在规则本身中检查路径名的替代方法可能是 File exclusion/inclusion patterns。
此外,如果您认为这些规则对更广泛的受众有意义,欢迎在 https://github.com/pmd/pmd 上投稿。
规则是
"//Reference[matches(@literal, \"^\$[^!]+\") and ./preceding-sibling::Text and ./following-sibling::Text]"
为了方便我提供工程,你可以mvn-test。
整个项目在https://github.com/XenoAmess/p3c/tree/1605f4d1b9c6a505074be5328953af26f578e190/p3c-pmd
规则 class 是 com.alibaba。p3c.pmd.lang.vm.rule.other.UseQuietReferenceNotationRule
我试图查看您的更新日志,但没有发现任何相关内容。
感谢您的帮助。
这是修复 https://github.com/pmd/pmd/issues/1923. It has been fixed by using real/full name in the rule context (see https://github.com/pmd/pmd/pull/1982) 的副作用。在单元测试中,使用的文件名为 "n/a",现在被解释为目录 "n" 中的文件 "a"。 RuleContext::getSourceCodeFilename
returns 只是文件名而不是完整路径。要检索完整路径,可以使用 RuleContext::getSourceCodeFile
。
您的规则 UseQuietReferenceNotationRule 检查文件名 (UseQuietReferenceNotationRule.java:65) which is now not "n/a" anymore in the unit tests but "a". You can "fix" the unit test by simply changing UT_FILE_NAME to "a" (see UseQuietReferenceNotationRule.java:45)。
或者您可以更改规则以使用 ctx.getSourceCodeFile().toString()
恢复 UseQuietReferenceNotationRule.java:62 中的完整路径名。虽然该文件不存在,但它仍然指向 "n/a".
在规则本身中检查路径名的替代方法可能是 File exclusion/inclusion patterns。
此外,如果您认为这些规则对更广泛的受众有意义,欢迎在 https://github.com/pmd/pmd 上投稿。