1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
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 /***
12 * @author Philippe T'Seyen
13 */
14 public class XMLRenderer implements Renderer
15 {
16 public String render(Iterator matches)
17 {
18 StringBuffer buffer = new StringBuffer();
19 buffer.append("<?xml version=\"1.0\"?>");
20 buffer.append("<pmd-cpd>");
21 for (;matches.hasNext();)
22 {
23 Match match = (Match) matches.next();
24 buffer.append("<duplication");
25 buffer.append(" lines=\"");
26 buffer.append(match.getLineCount());
27 buffer.append("\"");
28 buffer.append(" tokens=\"");
29 buffer.append(match.getTokenCount());
30 buffer.append("\">");
31
32 for (Iterator iterator = match.iterator(); iterator.hasNext();)
33 {
34 Mark mark = (Mark) iterator.next();
35 buffer.append("<file");
36 buffer.append(" line=\"");
37 buffer.append(mark.getBeginLine());
38 buffer.append("\"");
39 buffer.append(" path=\"");
40 buffer.append(mark.getTokenSrcID());
41 buffer.append("\"/>");
42 }
43 String codeFragment = match.getSourceCodeSlice();
44 if (codeFragment != null)
45 {
46 buffer.append("<codefragment><![CDATA[" + PMD.EOL + StringUtil.replaceString(codeFragment, "]]>", "]]>") + PMD.EOL + "]]></codefragment>");
47 }
48 buffer.append("</duplication>");
49 }
50 buffer.append("</pmd-cpd>");
51 return buffer.toString();
52 }
53 }
This page was automatically generated by Maven