#### Summary of duplicated code

This page summarizes the code fragments that have been found to be replicated in the code.

# Duplications | Total lines | Total tokens | Approximate number of bytes
--- | --- | --- | ---
2 | 49 | 349 | 1396

#### Details of duplicated code

lines | tokens | files | codefragment
--- | --- | --- | ---
33 | 239 |
column | endcolumn | line | endline | path
--- | --- | --- | --- | ---
29 | 75 | 32 | 64 | /home/pmd/source/pmd-core/src/test/java/net/sourceforge/pmd/RuleReferenceTest.java
37 | 75 | 68 | 100 | /home/pmd/source/pmd-core/src/test/java/net/sourceforge/pmd/RuleReferenceTest.java
        public void testOverride() {
            final StringProperty PROPERTY1_DESCRIPTOR = new StringProperty("property1", "Test property", null, 0f);
            MockRule rule = new MockRule();
            rule.definePropertyDescriptor(PROPERTY1_DESCRIPTOR);
            rule.setLanguage(LanguageRegistry.getLanguage(Dummy2LanguageModule.NAME));
            rule.setName("name1");
            rule.setProperty(PROPERTY1_DESCRIPTOR, "value1");
            rule.setMessage("message1");
            rule.setDescription("description1");
            rule.addExample("example1");
            rule.setExternalInfoUrl("externalInfoUrl1");
            rule.setPriority(RulePriority.HIGH);

            final StringProperty PROPERTY2_DESCRIPTOR = new StringProperty("property2", "Test property", null, 0f);
            RuleReference ruleReference = new RuleReference();
            ruleReference.setRule(rule);
            ruleReference.definePropertyDescriptor(PROPERTY2_DESCRIPTOR);
            ruleReference.setLanguage(LanguageRegistry.getLanguage(DummyLanguageModule.NAME));
            ruleReference
                    .setMinimumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.3"));
            ruleReference
                    .setMaximumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.7"));
            ruleReference.setDeprecated(true);
            ruleReference.setName("name2");
            ruleReference.setProperty(PROPERTY1_DESCRIPTOR, "value2");
            ruleReference.setProperty(PROPERTY2_DESCRIPTOR, "value3");
            ruleReference.setMessage("message2");
            ruleReference.setDescription("description2");
            ruleReference.addExample("example2");
            ruleReference.setExternalInfoUrl("externalInfoUrl2");
            ruleReference.setPriority(RulePriority.MEDIUM_HIGH);

            validateOverriddenValues(PROPERTY1_DESCRIPTOR, PROPERTY2_DESCRIPTOR, ruleReference);
16 | 110 |
column | endcolumn | line | endline | path
--- | --- | --- | --- | ---
9 | 28 | 66 | 81 | /home/pmd/source/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/xpath/JaxenXPathRuleQueryTest.java
9 | 28 | 88 | 103 | /home/pmd/source/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/xpath/JaxenXPathRuleQueryTest.java
9 | 28 | 110 | 125 | /home/pmd/source/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/xpath/JaxenXPathRuleQueryTest.java
            JaxenXPathRuleQuery query = createQuery(xpath);
            List<String> ruleChainVisits = query.getRuleChainVisits();
            Assert.assertEquals(2, ruleChainVisits.size());
            Assert.assertTrue(ruleChainVisits.contains("dummyNode"));
            // Note: Having AST_ROOT in the rule chain visits is probably a mistake. But it doesn't hurt, it shouldn't
            // match a real node name.
            Assert.assertTrue(ruleChainVisits.contains(JaxenXPathRuleQuery.AST_ROOT));

            DummyNodeWithListAndEnum dummy = new DummyNodeWithListAndEnum(1);
            RuleContext data = new RuleContext();
            data.setLanguageVersion(LanguageRegistry.findLanguageByTerseName("dummy").getDefaultVersion());

            query.evaluate(dummy, data);
            // note: the actual xpath queries are only available after evaluating
            Assert.assertEquals(2, query.nodeNameToXPaths.size());
            Assert.assertEquals("self::node()[(attribute::Test1 = \"false\")][(attribute::Test2 = \"true\")]", query.nodeNameToXPaths.get("dummyNode").get(0).toString());