【发布时间】:2011-12-18 04:13:48
【问题描述】:
想知道是否有报告工具(例如 PMD)可以报告 Java 代码中的向下转换。
【问题讨论】:
-
Alex,这条规则只发现不可能向下转型
想知道是否有报告工具(例如 PMD)可以报告 Java 代码中的向下转换。
【问题讨论】:
使用自定义 PMD 规则可以轻松捕获所有强制转换:
import net.sourceforge.pmd.AbstractJavaRule;
import net.sourceforge.pmd.ast.ASTCastExpression;
public class CastRule extends AbstractJavaRule {
public CastRule() {
}
@Override
public Object visit(final ASTCastExpression node, final Object data) {
addViolation(data, node);
return super.visit(node, data);
}
}
不幸的是,如果它们是明确的向上转换,它也会捕获向上转换。一些例子:
final Number myNumber = 5;
final Integer myInteger = (Integer) myNumber; // catched
final Number myNumber2 = (Number) myInteger; // catched
final Number myNumber3 = myInteger; // NOT catched
使用 PMD 仅捕获向下转换看起来相当复杂。
检查this answer,它包含一些关于使用的细节。
【讨论】: