【发布时间】:2015-08-28 13:24:09
【问题描述】:
当我运行 PMD 分析时,我收到违规:
每个类至少应该声明一个构造函数
此违规发生在 Spring 控制器上。这个控制器是由 Spring 实例化的,所以我不需要调用这个类。
忽略此违规行为的推荐方法是什么?
根据this doc 可以使用//NOPMD 但我只想忽略特定的违规行为。
【问题讨论】:
当我运行 PMD 分析时,我收到违规:
每个类至少应该声明一个构造函数
此违规发生在 Spring 控制器上。这个控制器是由 Spring 实例化的,所以我不需要调用这个类。
忽略此违规行为的推荐方法是什么?
根据this doc 可以使用//NOPMD 但我只想忽略特定的违规行为。
【问题讨论】:
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 检查中排除某些文件。
【讨论】:
@SuppressWarnings({"PMD.UnusedLocalVariable", "PMD.UnusedPrivateMethod"})
在我的组织中,我使用 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 插件引发的警告。
【讨论】: