1 4 package net.sourceforge.pmd.cpd; 5 6 import net.sourceforge.pmd.PMD; 7 import net.sourceforge.pmd.util.StringUtil; 8 9 import java.util.Iterator ; 10 11 14 public class XMLRenderer implements Renderer { 15 16 public String render(Iterator matches) { 17 StringBuffer buffer = new StringBuffer (300); 18 buffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 19 buffer.append("<pmd-cpd>").append(PMD.EOL); 20 Match match; 21 while (matches.hasNext()) { 22 match = (Match) matches.next(); 23 buffer.append("<duplication lines=\""); 24 buffer.append(match.getLineCount()); 25 buffer.append("\" tokens=\""); 26 buffer.append(match.getTokenCount()); 27 buffer.append("\">").append(PMD.EOL); 28 29 TokenEntry mark; 30 for (Iterator iterator = match.iterator(); iterator.hasNext();) { 31 mark = (TokenEntry) iterator.next(); 32 buffer.append("<file line=\""); 33 buffer.append(mark.getBeginLine()); 34 buffer.append("\" path=\""); 35 buffer.append(mark.getTokenSrcID()); 36 buffer.append("\"/>").append(PMD.EOL); 37 } 38 String codeFragment = match.getSourceCodeSlice(); 39 if (codeFragment != null) { 40 buffer.append("<codefragment>").append(PMD.EOL); 41 buffer.append("<![CDATA[").append(PMD.EOL); 42 buffer.append(StringUtil.replaceString(codeFragment, "]]>", "]]>")).append(PMD.EOL + "]]>" + PMD.EOL + "</codefragment>" + PMD.EOL); 43 } 44 buffer.append("</duplication>").append(PMD.EOL); 45 } 46 buffer.append("</pmd-cpd>"); 47 return buffer.toString(); 48 } 49 } 50 | Popular Tags |