String name = (String) iter.next(); /* * JMeterTreeNode and TestBeanGUI are special GUI classes, and * aren't intended to be added to menus * * TODO: find a better way of checking this */ if (name.endsWith("JMeterTreeNode") // $NON-NLS-1$ || name.endsWith("TestBeanGUI")) {// $NON-NLS-1$ continue;// Don't try to instantiate these } JMeterGUIComponent item; try { Class c = Class.forName(name); if (TestBean.class.isAssignableFrom(c)) { item = new TestBeanGUI(c); } else { item = (JMeterGUIComponent) c.newInstance(); } } catch (NoClassDefFoundError e) { log.warn("Missing jar? Could not create " + name + ". " + e); continue; } catch (Throwable e) { log.warn("Could not instantiate " + name, e); continue; } if (elementsToSkip.contains(name) || elementsToSkip.contains(item.getStaticLabel())) { log.info("Skipping " + name); continue; } else { elementsToSkip.add(name); } Collection categories = item.getMenuCategories(); if (categories == null) { log.debug(name + " participates in no menus."); continue; } if (categories.contains(TIMERS)) { timers.add(new MenuInfo(item.getStaticLabel(), name)); }
String name = (String) iter.next(); /* * JMeterTreeNode and TestBeanGUI are special GUI classes, and * aren't intended to be added to menus * * TODO: find a better way of checking this */ if (name.endsWith("JMeterTreeNode") || name.endsWith("TestBeanGUI")) { continue;// Don't try to instantiate these } JMeterGUIComponent item; try { Class c = Class.forName(name); if (TestBean.class.isAssignableFrom(c)) { item = new TestBeanGUI(c); } else { item = (JMeterGUIComponent) c.newInstance(); } } catch (NoClassDefFoundError e) { log.warn("Missing jar? Could not create " + name + ". " + e); continue; } catch (Throwable e) { log.warn("Could not instantiate " + name, e); continue; } if (elementsToSkip.contains(name) || elementsToSkip.contains(item.getStaticLabel())) { log.info("Skipping " + name); continue; } else { elementsToSkip.add(name); } Collection categories = item.getMenuCategories(); if (categories == null) { log.debug(name + " participates in no menus."); continue; } if (categories.contains(POST_PROCESSORS)) { postProcessors.add(new MenuInfo(item.getStaticLabel(), name)); }
Clone fragments detected by clone detection tool
File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/gui/util/MenuFactory.java File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/gui/util/ReportMenuFactory.java
Method name: void initializeMenus() Method name: void initializeMenus()
Number of AST nodes: 19 Number of AST nodes: 19
1
String name = (String) iter.next();
1
String name = (String) iter.next();
2
				/*
2
				/*
3
				 * JMeterTreeNode and TestBeanGUI are special GUI classes, and
3
				 * JMeterTreeNode and TestBeanGUI are special GUI classes, and
4
				 * aren't intended to be added to menus
4
				 * aren't intended to be added to menus
5
				 * 
5
				 * 
6
				 * TODO: find a better way of checking this
6
				 * TODO: find a better way of checking this
7
				 */
7
				 */
8
				if (name.endsWith("JMeterTreeNode") // $NON-NLS-1$
8
				if (name.endsWith("JMeterTreeNode")
9
                        || name.endsWith("TestBeanGUI")) {// $NON-NLS-1$
9
 || name.endsWith("TestBeanGUI")) {
10
					continue;// Don't try to instantiate these
10
					continue;// Don't try to instantiate these
11
				}
11
				}
12
				JMeterGUIComponent item;
12
				JMeterGUIComponent item;
13
				try {
13
				try {
14
					Class c = Class.forName(name);
14
					Class c = Class.forName(name);
15
					if (TestBean.class.isAssignableFrom(c)) {
15
					if (TestBean.class.isAssignableFrom(c)) {
16
						item = new TestBeanGUI(c);
16
						item = new TestBeanGUI(c);
17
					} else {
17
					} else {
18
						item = (JMeterGUIComponent) c.newInstance();
18
						item = (JMeterGUIComponent) c.newInstance();
19
					}
19
					}
20
				} catch (NoClassDefFoundError e) {
20
				} catch (NoClassDefFoundError e) {
21
					log.warn("Missing jar? Could not create " + name + ". " + e);
21
					log.warn("Missing jar? Could not create " + name + ". " + e);
22
					continue;
22
					continue;
23
				} catch (Throwable e) {
23
				} catch (Throwable e) {
24
					log.warn("Could not instantiate " + name, e);
24
					log.warn("Could not instantiate " + name, e);
25
					continue;
25
					continue;
26
				}
26
				}
27
				if (elementsToSkip.contains(name) || elementsToSkip.contains(item.getStaticLabel())) {
27
				if (elementsToSkip.contains(name) || elementsToSkip.contains(item.getStaticLabel())) {
28
					log.info("Skipping " + name);
28
					log.info("Skipping " + name);
29
					continue;
29
					continue;
30
				} else {
30
				} else {
31
					elementsToSkip.add(name);
31
					elementsToSkip.add(name);
32
				}
32
				}
33
				Collection categories = item.getMenuCategories();
33
				Collection categories = item.getMenuCategories();
34
				if (categories == null) {
34
				if (categories == null) {
35
					log.debug(name + " participates in no menus.");
35
					log.debug(name + " participates in no menus.");
36
					continue;
36
					continue;
37
				}
37
				}
38
				if (categories.contains(TIMERS)) {
38
				if (categories.contains(POST_PROCESSORS)) {
39
					timers.add(new MenuInfo(item.getStaticLabel(), name));
39
					postProcessors.add(new MenuInfo(item.getStaticLabel(), name));
40
				}
40
				}
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)21.4
Clones locationClones are in different classes
Number of node comparisons102
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements19
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)29.8
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    24
    String name = (String)iter.next();
    22
    String name = (String)iter.next();
    25
    if (name.endsWith("JMeterTreeNode") || name.endsWith("TestBeanGUI"))
    23
    if (name.endsWith("JMeterTreeNode") || name.endsWith("TestBeanGUI"))
    26
    continue;
    26
    continue;
    24
    continue;
    Preondition Violations
    Statement continue; without innermost loop
    Statement continue; without innermost loop
    24
    continue;
    27
    JMeterGUIComponent item;
    25
    JMeterGUIComponent item;
    28
    try
    26
    try
    29
    Class c = Class.forName(name);
    27
    Class c = Class.forName(name);
    30
    if (TestBean.class.isAssignableFrom(c))
    28
    if (TestBean.class.isAssignableFrom(c))
    31
    item = new TestBeanGUI(c);
    29
    item = new TestBeanGUI(c);
    else
    else
    32
    item = (JMeterGUIComponent)c.newInstance();
    30
    item = (JMeterGUIComponent)c.newInstance();
    33
    if (elementsToSkip.contains(name) || elementsToSkip.contains(item.getStaticLabel()))
    31
    if (elementsToSkip.contains(name) || elementsToSkip.contains(item.getStaticLabel()))
    34
    log.info("Skipping " + name);
    32
    log.info("Skipping " + name);
    35
    continue;
    35
    continue;
    33
    continue;
    Preondition Violations
    Statement continue; without innermost loop
    Statement continue; without innermost loop
    33
    continue;
    else
    else
    36
    elementsToSkip.add(name);
    34
    elementsToSkip.add(name);
    37
    Collection categories = item.getMenuCategories();
    35
    Collection categories = item.getMenuCategories();
    38
    if (categories == null)
    36
    if (categories == null)
    39
    log.debug(name + " participates in no menus.");
    37
    log.debug(name + " participates in no menus.");
    40
    continue;
    40
    continue;
    38
    continue;
    Preondition Violations
    Statement continue; without innermost loop
    Statement continue; without innermost loop
    38
    continue;
    41
    if (categories.contains(TIMERS))
    41
    if (categories.contains(TIMERS))
    39
    if (categories.contains(POST_PROCESSORS))
    Differences
    Expression1Expression2Difference
    TIMERSPOST_PROCESSORSVARIABLE_NAME_MISMATCH
    39
    if (categories.contains(POST_PROCESSORS))
    42
    timers.add(new MenuInfo(item.getStaticLabel(), name));
    42
    timers.add(new MenuInfo(item.getStaticLabel(), name));
    40
    postProcessors.add(new MenuInfo(item.getStaticLabel(), name));
    Differences
    Expression1Expression2Difference
    timerspostProcessorsVARIABLE_NAME_MISMATCH
    40
    postProcessors.add(new MenuInfo(item.getStaticLabel(), name));
    Precondition Violations (7)
    Row Violation
    1Statement continue; without innermost loop
    2Statement continue; without innermost loop
    3Statement continue; without innermost loop
    4Statement continue; without innermost loop
    5Statement continue; without innermost loop
    6Statement continue; without innermost loop
    7Clone fragment #1 returns variables categories, name, item , while Clone fragment #2 returns variables categories, name, item