|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SourceCode | Line # 17 | 16 | 5 | 92.6% |
0.9259259
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
| SourceCode.CodeLoader | Line # 19 | 20 | 7 | 83.3% |
0.8333333
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
| SourceCode.FileCodeLoader | Line # 61 | 3 | 1 | 0% |
0.0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
| SourceCode.StringCodeLoader | Line # 77 | 5 | 1 | 100% |
1.0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
| (13) | |||
| Result | |||
|
0.8194444
|
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.test2
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.test2
|
1 PASS | |
|
0.7916667
|
test.net.sourceforge.pmd.cpd.SourceCodeTest.testSimple
test.net.sourceforge.pmd.cpd.SourceCodeTest.testSimple
|
1 PASS | |
|
0.7916667
|
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.test1
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.test1
|
1 PASS | |
|
0.7638889
|
test.net.sourceforge.pmd.cpd.MatchAlgorithmTest.testSimple
test.net.sourceforge.pmd.cpd.MatchAlgorithmTest.testSimple
|
1 PASS | |
|
0.7638889
|
test.net.sourceforge.pmd.cpd.MatchAlgorithmTest.testIgnore
test.net.sourceforge.pmd.cpd.MatchAlgorithmTest.testIgnore
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testMultiLineMacros
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testMultiLineMacros
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.testDiscardImports
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.testDiscardImports
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testDollarSignStartingIdentifier
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testDollarSignStartingIdentifier
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.testDiscardPkgStmts
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.testDiscardPkgStmts
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.testDiscardSemicolons
test.net.sourceforge.pmd.cpd.JavaTokensTokenizerTest.testDiscardSemicolons
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testWideCharacters
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testWideCharacters
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.AnyTokenizerTest.testMultiLineMacros
test.net.sourceforge.pmd.cpd.AnyTokenizerTest.testMultiLineMacros
|
1 PASS | |
|
0.5972222
|
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testDollarSignInIdentifier
test.net.sourceforge.pmd.cpd.CPPTokenizerTest.testDollarSignInIdentifier
|
1 PASS | |
| 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 | ||
| 8 | import java.io.File; | |
| 9 | import java.io.FileReader; | |
| 10 | import java.io.LineNumberReader; | |
| 11 | import java.io.Reader; | |
| 12 | import java.io.StringReader; | |
| 13 | import java.lang.ref.SoftReference; | |
| 14 | import java.util.ArrayList; | |
| 15 | import java.util.List; | |
| 16 | ||
| 17 | public class SourceCode { | |
| 18 | ||
| 19 | public static abstract class CodeLoader { | |
| 20 | private SoftReference code; | |
| 21 | ||
| 22 | 20 |
public List getCode() { |
| 23 | 20 | List c = null; |
| 24 | 20 | if (code != null) { |
| 25 | 7 | c = (List) code.get(); |
| 26 | } | |
| 27 | 20 | if (c != null) { |
| 28 | 7 | return c; |
| 29 | } | |
| 30 | 13 | this.code = new SoftReference(load()); |
| 31 | 13 | return (List) code.get(); |
| 32 | } | |
| 33 | ||
| 34 | public abstract String getFileName(); | |
| 35 | ||
| 36 | protected abstract Reader getReader() throws Exception; | |
| 37 | ||
| 38 | 13 |
protected List load() { |
| 39 | 13 | LineNumberReader lnr = null; |
| 40 | 13 | try { |
| 41 | 13 | lnr = new LineNumberReader(getReader()); |
| 42 | 13 | List lines = new ArrayList(); |
| 43 | 13 | String currentLine; |
| 44 | 0 | while ((currentLine = lnr.readLine()) != null) { |
| 45 | 54 | lines.add(currentLine); |
| 46 | } | |
| 47 | 13 | return lines; |
| 48 | } catch (Exception e) { | |
| 49 | 0 | throw new RuntimeException("Problem while reading " + getFileName() + ":" + e.getMessage()); |
| 50 | } finally { | |
| 51 | 13 | try { |
| 52 | 13 | if (lnr != null) |
| 53 | 13 | lnr.close(); |
| 54 | } catch (Exception e) { | |
| 55 | 0 | throw new RuntimeException("Problem while reading " + getFileName() + ":" + e.getMessage()); |
| 56 | } | |
| 57 | } | |
| 58 | } | |
| 59 | } | |
| 60 | ||
| 61 | public static class FileCodeLoader extends CodeLoader { | |
| 62 | private File file; | |
| 63 | ||
| 64 | 0 |
public FileCodeLoader(File file) { |
| 65 | 0 | this.file = file; |
| 66 | } | |
| 67 | ||
| 68 | 0 |
public Reader getReader() throws Exception { |
| 69 | 0 | return new FileReader(file); |
| 70 | } | |
| 71 | ||
| 72 | 0 |
public String getFileName() { |
| 73 | 0 | return this.file.getAbsolutePath(); |
| 74 | } | |
| 75 | } | |
| 76 | ||
| 77 | public static class StringCodeLoader extends CodeLoader { | |
| 78 | public static final String DEFAULT_NAME = "CODE_LOADED_FROM_STRING"; | |
| 79 | ||
| 80 | private String source_code; | |
| 81 | ||
| 82 | private String name; | |
| 83 | ||
| 84 | 10 |
public StringCodeLoader(String code) { |
| 85 | 10 | this(code, DEFAULT_NAME); |
| 86 | } | |
| 87 | ||
| 88 | 13 |
![]() |