2011-10-30 8 views
1

Javaコードでダウンキャスティングを報告するレポートツール(PMDなど)があるかどうかわかりません。すべてのキャストをキャッチダウンキャストをJavaで報告するツールはありますか?

+0

最終結果は何ですか? –

+0

findbugs:http://findbugs.sourceforge.net/bugDescriptions.html#BC_IMPOSSIBLE_DOWNCAST –

+0

アレックス、そのルールはちょうど_impossible_ダウンキャストを見つける –

答えて

1

は、カスタムPMDルールと簡単です:彼らは、明示的なupcastsある場合

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); 
    } 
} 

は、残念ながら、それはあまりにもupcastsをキャッチ。いくつかの例:

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もチェックしてください。使用方法の詳細が含まれています。

+0

これは素晴らしいことです。明白なアップキャストもキャッチされています。返事が遅れて申し訳ありません。 –