Clover coverage report - PMD - 3.3
Coverage timestamp: Thu Sep 15 2005 17:59:57 EDT
file stats: LOC: 124   Methods: 13
NCLOC: 103   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
CPD.java 0% 0% 0% 0%
coverage
 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 java.io.File;
 7    import java.io.FileNotFoundException;
 8    import java.io.IOException;
 9    import java.util.HashMap;
 10    import java.util.Iterator;
 11    import java.util.List;
 12    import java.util.Map;
 13   
 14    public class CPD {
 15   
 16    private Map source = new HashMap();
 17    private CPDListener listener = new CPDNullListener();
 18    private Tokens tokens = new Tokens();
 19    private int minimumTileSize;
 20    private MatchAlgorithm matchAlgorithm;
 21    private Language language;
 22   
 23  0 public CPD(int minimumTileSize, Language language) {
 24  0 this.minimumTileSize = minimumTileSize;
 25  0 this.language = language;
 26    }
 27   
 28  0 public void setCpdListener(CPDListener cpdListener) {
 29  0 this.listener = cpdListener;
 30    }
 31   
 32  0 public void go() {
 33  0 TokenEntry.clearImages();
 34  0 matchAlgorithm = new MatchAlgorithm(source, tokens, minimumTileSize, listener);
 35  0 matchAlgorithm.findMatches();
 36    }
 37   
 38  0 public Iterator getMatches() {
 39  0 return matchAlgorithm.matches();
 40    }
 41   
 42  0 public void add(File file) throws IOException {
 43  0 add(1, file);
 44    }
 45   
 46  0 public void addAllInDirectory(String dir) throws IOException {
 47  0 addDirectory(dir, false);
 48    }
 49   
 50  0 public void addRecursively(String dir) throws IOException {
 51  0 addDirectory(dir, true);
 52    }
 53   
 54  0 public void add(List files) throws IOException {
 55  0 for (Iterator i = files.iterator(); i.hasNext();) {
 56  0 add(files.size(), (File) i.next());
 57    }
 58    }
 59   
 60  0 private void addDirectory(String dir, boolean recurse) throws IOException {
 61  0 if (!(new File(dir)).exists()) {
 62  0 throw new FileNotFoundException("Couldn't find directory " + dir);
 63    }
 64  0 FileFinder finder = new FileFinder();
 65  0 add(finder.findFilesFrom(dir, language.getFileFilter(), recurse));
 66    }
 67   
 68  0 private void add(int fileCount, File file) throws IOException {
 69  0 listener.addedFile(fileCount, file);
 70  0 SourceCode sourceCode = new SourceCode(new SourceCode.FileCodeLoader(file));
 71  0 language.getTokenizer().tokenize(sourceCode, tokens);
 72  0 source.put(sourceCode.getFileName(), sourceCode);
 73    }
 74   
 75  0 public static Renderer getRendererFromString(String name) {
 76  0 Renderer renderer = new SimpleRenderer();
 77  0 try {
 78  0 renderer = (Renderer) Class.forName(name).newInstance();
 79    } catch (Exception e) {
 80  0 System.out.println("Can't find class '" + name + "' so defaulting to SimpleRenderer.");
 81    }
 82  0 return renderer;
 83    }
 84   
 85  0 public static void main(String[] args) {
 86  0 if (args.length > 4 || args.length < 2) {
 87  0 usage();
 88  0 System.exit(1);
 89    }
 90   
 91  0 try {
 92  0 String lang = LanguageFactory.JAVA_KEY;
 93  0 Renderer renderer = new SimpleRenderer();
 94  0 if (args.length > 2) {
 95  0 lang = args[2];
 96    }
 97  0 if (args.length > 3) {
 98  0 renderer = CPD.getRendererFromString(args[3]);
 99    }
 100  0 LanguageFactory f = new LanguageFactory();
 101  0 Language language = f.createLanguage(lang);
 102  0 CPD cpd = new CPD(Integer.parseInt(args[0]), language);
 103  0 cpd.addRecursively(args[1]);
 104  0 cpd.go();
 105  0 System.out.println(renderer.render(cpd.getMatches()));
 106    } catch (Exception e) {
 107  0 e.printStackTrace();
 108    }
 109    }
 110   
 111  0 private static void usage() {
 112  0 System.out.println("Usage:");
 113  0 System.out.println(" java net.sourceforge.pmd.cpd.CPD <tile size> <directory> [<language>] [<format>]");
 114  0 System.out.println("i.e: ");
 115  0 System.out.println(" java net.sourceforge.pmd.cpd.CPD 100 c:\\jdk14\\src\\java ");
 116  0 System.out.println("or: ");
 117  0 System.out.println(" java net.sourceforge.pmd.cpd.CPD 100 c:\\apache\\src\\ cpp");
 118  0 System.out.println("Formats:");
 119  0 System.out.println("Simple");
 120  0 System.out.println("net.sourceforge.pmd.cpd.CSVRenderer");
 121  0 System.out.println("net.sourceforge.pmd.cpd.XMLRenderer");
 122    }
 123   
 124    }