在Java中是否有用于报告降级的工具?

在Java中是否有用于报告降级的工具?,java,pmd,Java,Pmd,想知道是否有一个报告工具(如PMD)可以在Java代码中报告向下转换。使用自定义PMD规则捕获所有转换很容易: import net.sourceforge.pmd.AbstractJavaRule; import net.sourceforge.pmd.ast.ASTCastExpression; public class CastRule extends AbstractJavaRule { public CastRule() { } @Override

想知道是否有一个报告工具(如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只捕捉降级看起来相当复杂


也请检查,它包含有关用法的一些详细信息。

使用自定义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只捕捉降级看起来相当复杂


也请检查,它包含一些有关用法的详细信息。

findbugs:Alex,该规则查找不可能的向下推送findbugs:Alex,该规则查找不可能的向下推送这很好-捕获显式向上推送也没什么大不了的。很抱歉,回复太晚了。这太好了——也没有什么大不了的,因为会捕捉到明显的上传。很抱歉迟了答复。