有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

PMD Java 8德米特定律

我在Maven项目中使用PMD插件来验证代码冲突和标准。在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"),以及几乎所有的lambda表达式

但是,我在pom中设置了以下PMD属性。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) 个答案

  1. # 1 楼答案

    该规则标记未在本地创建/接收为参数的对象的任何用法

    这自动意味着所有工厂方法都被标记(Arrays.asListOptional.ofNullable,等等)

    您应该从规则集中删除该规则(需要define your own ruleset xml),或者处理误报并抑制它们case by casecustomize the rule's suppression(这也需要您定义自己的规则集)