правило:
"// Ссылка [соответствует (@literal, \" ^ \ $ [^!] + \ ") И ./preceding-sibling::Text and ./following-sibling :: Text] "
для вашего удобства я предоставлю проект, а вы можете mvn-протестировать его.
Весь проект на https://github.com/XenoAmess/p3c/tree/1605f4d1b9c6a505074be5328953af26f578e190/p3c-pmd
класс правил - com.alibaba.p3 c .pmd.lang.vm.rule.other.UseQuietReferenceNotationRule
Я попытался просмотреть журнал обновлений и не нашел ничего связанного.
Спасибо за помощь.
Это побочный эффект от фиксации https://github.com/pmd/pmd/issues/1923. Это было исправлено путем использования реального / полного имени в контексте правила (см. https://github.com/pmd/pmd/pull/1982). В модульных тестах используется имя файла «n / a», которое теперь интерпретируется как файл «a» в каталоге «n». RuleContext::getSourceCodeFilename возвращает только имя файла, а не полный путь. Для получения полного пути можно использовать RuleContext::getSourceCodeFile.
RuleContext::getSourceCodeFilename
RuleContext::getSourceCodeFile
Ваше правило UseQuietReferenceNotationRule проверяет имя файла ( UseQuietReferenceNotationRule. java: 65 ), которое больше не является "n / a" в модульные тесты но "а". Вы можете «исправить» модульный тест, просто изменив UT_FILE_NAME на «a» (см. UseQuietReferenceNotationRule. java: 45 ).
В качестве альтернативы вы можете изменить правило для использования ctx.getSourceCodeFile().toString() чтобы восстановить полный путь в UseQuietReferenceNotationRule. java: 62 . Хотя файл не существует, он все равно указывает на «n / a».
ctx.getSourceCodeFile().toString()
Альтернативой для проверки имен путей в самом правиле может быть Шаблоны исключения / включения файла .
Кроме того, приветствуются материалы по https://github.com/pmd/pmd, если вы считаете, что правила имеют смысл для более широкой аудитории.