0

現在、JUnit テスト ケースを実行し、ターゲット クラス (テスト対象のクラス) から情報を抽出する必要があるプロジェクトに取り組んでいます。対象となるステートメントを抽出するために eclEmma を使用しましたが、このツールを使用すると、テスト クラスの実行後にターゲットで実行された行番号しか抽出できません。

ターゲット クラスの特定の true/false 分岐をカバーするときに検証される条件を導出するために、if ステートメントで分岐決定のブール値を抽出したいと考えています。

JavaParser を使用して Java ファイルを解析し、次の情報を抽出できることはわかっていますが、分岐決定のブール値を抽出する方法がわかりません。

public void visit(IfStmt stmt, Void arg) 
    {
        System.out.println(stmt.getCondition());
        System.out.println(stmt.getElseStmt());
        System.out.println(stmt.getThenStmt());
        super.visit(stmt, null);
    }
4

2 に答える 2

2

EclEmma はJaCoCo コード カバレッジ ライブラリに基づいており、Eclipse への統合を提供するだけで、実際の作業 (計測と分析) は JaCoCo によって実行されます。

JaCoCoはソースコードではなく、バイトコードの解析を行います。ソース コードは、バイトコード解析の結果を視覚化するためだけに使用されます (強調表示によって装飾されます)。バイトコードには行に関する情報しか含まれていないため、残念ながら、バイトコードの分岐をソース コードにマッピングすることは簡単な作業ではなく、ソース コードの解析とはあまり共通点がありません。そのため、これは JaCoCo によってすぐに提供されるものではありません。しかし、このテーマに関していくつかの実験的な研究が行われました。詳細については、次のリンクを参照してください。

JaCoCo への貢献は大歓迎です。誰かがそのようなマッピングを信頼できる方法で実装できる場合は、遠慮なく貢献してください。

于 2016-12-09T22:14:56.620 に答える