PropertyHelper helper = (PropertyHelper) project.getReference(MagicNames.REFID_PROPERTY_HELPER); if (helper != null) { return helper; } helper = new PropertyHelper(); helper.setProject(project); project.addReference(MagicNames.REFID_PROPERTY_HELPER, helper); return helper;
ComponentHelper ph = (ComponentHelper) project.getReference( COMPONENT_HELPER_REFERENCE); if (ph != null) { return ph; } ph = new ComponentHelper(); ph.setProject(project); project.addReference(COMPONENT_HELPER_REFERENCE, ph); return ph;
Clone fragments detected by clone detection tool
File path: /apache-ant-1.7.0/src/org/apache/tools/ant/PropertyHelper.java File path: /apache-ant-1.7.0/src/org/apache/tools/ant/ComponentHelper.java
Method name: PropertyHelper getPropertyHelper(Project) Method name: ComponentHelper getComponentHelper(Project)
Number of AST nodes: 7 Number of AST nodes: 7
1
PropertyHelper helper
2
            = (PropertyHelper) project.getReference(MagicNames.REFID_PROPERTY_HELPER
1
ComponentHelper ph = (ComponentHelper) project.getReference(
3
);
2
                COMPONENT_HELPER_REFERENCE);
4
        if (helper != null) {
3
        if (ph != null) {
5
            return helper;
4
            return ph;
6
        }
5
        }
7
        helper = new PropertyHelper();
6
        ph = new ComponentHelper();
8
        helper.setProject(project);
7
        ph.setProject(project);
9
        project.addReference(MagicNames.REFID_PROPERTY_HELPER, helper);
8
        project.addReference(COMPONENT_HELPER_REFERENCE, ph);
10
        return helper;
9
        return ph;
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.3
Clones locationClones are in different classes
Number of node comparisons25
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements2
    Number of unmapped statements in the first code fragment5
    Number of unmapped statements in the second code fragment5
    Time elapsed for statement mapping (ms)3.4
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    PropertyHelper helper = (PropertyHelper)project.getReference(MagicNames.REFID_PROPERTY_HELPER);
    1
    PropertyHelper helper = (PropertyHelper)project.getReference(MagicNames.REFID_PROPERTY_HELPER);
    Preondition Violations
    Unmatched statement PropertyHelper helper=(PropertyHelper)project.getReference(MagicNames.REFID_PROPERTY_HELPER); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
                                                                                                                                                                                                    
                                                                                                                                                                                    
    3
    ComponentHelper ph = (ComponentHelper)project.getReference(COMPONENT_HELPER_REFERENCE);
    Preondition Violations
    Unmatched statement ComponentHelper ph=(ComponentHelper)project.getReference(COMPONENT_HELPER_REFERENCE); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    3
    ComponentHelper ph = (ComponentHelper)project.getReference(COMPONENT_HELPER_REFERENCE);
    2
    if (helper != null)
    2
    if (helper != null)
    4
    if (ph != null)
    Differences
    Expression1Expression2Difference
    helperphVARIABLE_NAME_MISMATCH
    org.apache.tools.ant.PropertyHelperorg.apache.tools.ant.ComponentHelperVARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type org.apache.tools.ant.PropertyHelper of variable helper does not match with type org.apache.tools.ant.ComponentHelper of variable ph
    • Make classes org.apache.tools.ant.PropertyHelper and org.apache.tools.ant.ComponentHelper extend a common superclass
    4
    if (ph != null)
    3
    return helper;
    3
    return helper;
    Preondition Violations
    Unmatched statement return helper; cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    Unmatched return helper;
                                      
                              
    5
    return ph;
    Preondition Violations
    Unmatched statement return ph; cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    Unmatched return ph;
    5
    return ph;
    4
    helper = new PropertyHelper();
    4
    helper = new PropertyHelper();
    Preondition Violations
    Unmatched statement helper=new PropertyHelper(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                                                  
                                                            
    6
    ph = new ComponentHelper();
    Preondition Violations
    Unmatched statement ph=new ComponentHelper(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    6
    ph = new ComponentHelper();
    5
    helper.setProject(project);
    5
    helper.setProject(project);
    7
    ph.setProject(project);
    Differences
    Expression1Expression2Difference
    helperphVARIABLE_NAME_MISMATCH
    org.apache.tools.ant.PropertyHelperorg.apache.tools.ant.ComponentHelperVARIABLE_TYPE_MISMATCH
    Preondition Violations
    Type org.apache.tools.ant.PropertyHelper of variable helper does not match with type org.apache.tools.ant.ComponentHelper of variable ph
    • Make classes org.apache.tools.ant.PropertyHelper and org.apache.tools.ant.ComponentHelper extend a common superclass
    7
    ph.setProject(project);
    6
    project.addReference(MagicNames.REFID_PROPERTY_HELPER, helper);
    6
    project.addReference(MagicNames.REFID_PROPERTY_HELPER, helper);
    Preondition Violations
    Unmatched statement project.addReference(MagicNames.REFID_PROPERTY_HELPER,helper); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
                                                                                                                                      
    7
    return helper;
                                      
                                                                                                                  
    8
    project.addReference(COMPONENT_HELPER_REFERENCE, ph);
    Preondition Violations
    Unmatched statement project.addReference(COMPONENT_HELPER_REFERENCE,ph); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    8
    project.addReference(COMPONENT_HELPER_REFERENCE, ph);
                              
    9
    return ph;
    Precondition Violations (12)
    Row Violation
    1Unmatched statement PropertyHelper helper=(PropertyHelper)project.getReference(MagicNames.REFID_PROPERTY_HELPER); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    2Unmatched statement ComponentHelper ph=(ComponentHelper)project.getReference(COMPONENT_HELPER_REFERENCE); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    3Type org.apache.tools.ant.PropertyHelper of variable helper does not match with type org.apache.tools.ant.ComponentHelper of variable ph
    4Unmatched statement return helper; cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    5Unmatched return helper;
    6Unmatched statement return ph; cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    7Unmatched return ph;
    8Unmatched statement helper=new PropertyHelper(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    9Unmatched statement ph=new ComponentHelper(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    10Type org.apache.tools.ant.PropertyHelper of variable helper does not match with type org.apache.tools.ant.ComponentHelper of variable ph
    11Unmatched statement project.addReference(MagicNames.REFID_PROPERTY_HELPER,helper); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    12Unmatched statement project.addReference(COMPONENT_HELPER_REFERENCE,ph); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted