PMD 在 java 中记录空构造函数
Document Empty Constructor In java by PMD
我在我的 Java 项目中使用 PMD 插件。
当我 运行 PMD 时,它显示警告为 "Document Empty Constructor "。
我的代码如下...
public class ExceptionHandlerImpl implements ExceptionHandler {
private static final Logger log = Logger
.getLogger(ExceptionHandlerImpl.class);
/**
* Default Constructor
*/
public ExceptionHandlerImpl()
{
super();
}
在上面的构造函数代码中显示 "Document Empty Constructor"。
我该如何解决这个问题以及为什么会出现这种情况?
您收到警告是因为您编写的构造函数与 Java 将创建的隐式默认构造函数本质上相同。因此你可以删除你的构造函数。但是,如果有任何特殊原因您仍想保留它,您应该在评论中记录原因。这就是 PMD 告诉你的。
在您的情况下,触发了 UncommentedEmptyConstructor 规则。
它会找到 非私有构造函数不包含任何语句或仅包含 super()
且内部没有注释的地方 。之前的Javadoc与这条规则无关。
通过在空构造函数中提供注释,可以更轻松地区分有意(例如能够提供 Javadoc)和无意空构造函数(有人忘记编写实现或可以删除此构造函数)。
这条规则对你的期望是这样的:
class MyConstructorIsNeededHere {
/**
* Creates instance of {@link Foo}.
*/
MyConstructorIsNeededHere() {
// The explicit constructor is here, so that it is possible to provide Javadoc.
}
}
并在以下情况下警告您:
class OhNoICanBeRemoved {
OhNoICanBeRemoved() {
super();
}
}
实际上写"Default constructor"作为评论消息就足够了
class Util {
Util() {
// Default constructor
}
}
我在我的 Java 项目中使用 PMD 插件。
当我 运行 PMD 时,它显示警告为 "Document Empty Constructor "。
我的代码如下...
public class ExceptionHandlerImpl implements ExceptionHandler {
private static final Logger log = Logger
.getLogger(ExceptionHandlerImpl.class);
/**
* Default Constructor
*/
public ExceptionHandlerImpl()
{
super();
}
在上面的构造函数代码中显示 "Document Empty Constructor"。
我该如何解决这个问题以及为什么会出现这种情况?
您收到警告是因为您编写的构造函数与 Java 将创建的隐式默认构造函数本质上相同。因此你可以删除你的构造函数。但是,如果有任何特殊原因您仍想保留它,您应该在评论中记录原因。这就是 PMD 告诉你的。
在您的情况下,触发了 UncommentedEmptyConstructor 规则。
它会找到 非私有构造函数不包含任何语句或仅包含 super()
且内部没有注释的地方 。之前的Javadoc与这条规则无关。
通过在空构造函数中提供注释,可以更轻松地区分有意(例如能够提供 Javadoc)和无意空构造函数(有人忘记编写实现或可以删除此构造函数)。
这条规则对你的期望是这样的:
class MyConstructorIsNeededHere {
/**
* Creates instance of {@link Foo}.
*/
MyConstructorIsNeededHere() {
// The explicit constructor is here, so that it is possible to provide Javadoc.
}
}
并在以下情况下警告您:
class OhNoICanBeRemoved {
OhNoICanBeRemoved() {
super();
}
}
实际上写"Default constructor"作为评论消息就足够了
class Util {
Util() {
// Default constructor
}
}