PMD - Java 8 - Закон Деметры - PullRequest
0 голосов
/ 14 декабря 2018

Я использую плагин PMD в своем проекте Maven для проверки нарушений кода и стандартов.В Java-8 PMD жалуется на приведенный ниже код как Potential violation of Law of Demeter.

Arrays.asList(1, 2, 3, 4).stream().filter(n -> n % 2 == 0).collect(Collectors.toList());

Также Optional.ofNullable(value).orElse("another") и почти все лямбда-выражения.

Однако я установил нижеСвойство PMD в pom.xml

<targetJdk>1.8</targetJdk>
<rulesets>
    <ruleset>/category/java/bestpractices.xml</ruleset>
    <ruleset>/category/java/design.xml</ruleset>
    <!-- <ruleset>/category/java/codestyle.xml</ruleset> -->
    <ruleset>/category/java/errorprone.xml</ruleset>
    <ruleset>/category/java/security.xml</ruleset>
    <ruleset>/category/java/multithreading.xml</ruleset>
    <ruleset>/category/java/performance.xml</ruleset>
</rulesets>

Я что-то упустил в конфигурации?Какие исправления вы можете предложить?

1 Ответ

0 голосов
/ 14 декабря 2018

Правило помечает любое использование объектов, не созданных локально / полученных в качестве параметров.

Это автоматически означает, что все фабричные методы помечены (Arrays.asList, Optional.ofNullable и т. Д.).

Вы должны либо удалить правило из своего набора правил (вам нужно определить свой собственный набор правил xml ), либо иметь дело с ложными срабатываниями и подавить их либо в каждом конкретном случае , либо настроить подавление правила (для этого также необходимо определить собственный набор правил)

...