1

Javaコードでダウンキャストを報告するレポートツール(PMDなど)があるかどうか疑問に思います。

4

1 に答える 1

1

カスタム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ではかなり複雑に見えます。

この回答も確認してください。使用法に関する詳細が含まれています。

于 2011-10-31T11:10:35.767 に答える