【问题标题】:How to suppress violations in PMD?如何抑制 PMD 中的违规行为?
【发布时间】:2015-08-28 13:24:09
【问题描述】:

当我运行 PMD 分析时,我收到违规:

每个类至少应该声明一个构造函数

此违规发生在 Spring 控制器上。这个控制器是由 Spring 实例化的,所以我不需要调用这个类。

忽略此违规行为的推荐方法是什么?

根据this doc 可以使用//NOPMD 但我只想忽略特定的违规行为。

【问题讨论】:

    标签: java spring pmd


    【解决方案1】:

    PMD 还支持@SuppressWarnings 注释:

    // This will suppress all the PMD warnings in this class
    @SuppressWarnings("PMD")
    public class Bar {
     void bar() {
      int foo;
     }
    }
    

    或者只是一种警告:

    // This will suppress UnusedLocalVariable warnings in this class
    @SuppressWarnings("PMD.UnusedLocalVariable")
    public class Bar {
     void bar() {
      int foo;
     }
    }
    

    您可能还想查看creating a ruleset and exclusions。也许您想禁用某个规则,或者从 PMD 检查中排除某些文件。

    【讨论】:

    • 还有来自 PMD 的 official documentation 关于抑制:如果你想忽略多个警告:@SuppressWarnings({"PMD.UnusedLocalVariable", "PMD.UnusedPrivateMethod"})
    【解决方案2】:

    在我的组织中,我使用 POM 文件中的 PMD 忽略选项来抑制为我们自动生成的客户端存根(并保存在单独的模块中)生成的所有警告,因为这些是我们不使用的第三方客户端存根倾向于触摸他们认为有任何警告或违规行为,我假设你和我们一样。

    下面是来自 POM 文件的 sn-p,它有客户端存根模块

    <build>
        <plugins>
            <plugin>
                <!-- <groupId>org.apache.maven.plugins</groupId> -->
                <artifactId>maven-pmd-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    
        <pluginManagement>
            <plugins>       
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.8</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    

    这样我们可以完全跳过 PMD 插件引发的警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多