• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pmd / pmd / #3788

pending completion
#3788

push

github actions

web-flow
Merge pull request #4387 from adangel/pmd7-language-versions

137 of 137 new or added lines in 32 files covered. (100.0%)

67152 of 127777 relevant lines covered (52.55%)

0.53 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.36
/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AbstractLanguage.java
1
/**
2
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3
 */
4

5
package net.sourceforge.pmd.cpd;
6

7
import java.io.FilenameFilter;
8
import java.nio.file.Files;
9
import java.nio.file.Paths;
10
import java.util.Arrays;
11
import java.util.List;
12
import java.util.Properties;
13
import java.util.function.Predicate;
14
import java.util.stream.Collectors;
15

16
import net.sourceforge.pmd.internal.util.PredicateUtil;
17

18
public abstract class AbstractLanguage implements Language {
19
    private final String name;
20
    private final String terseName;
21
    private final Tokenizer tokenizer;
22
    private final Predicate<String> fileFilter;
23
    private final List<String> extensions;
24

25
    public AbstractLanguage(String name, String terseName, Tokenizer tokenizer, String... extensions) {
26
        this(name, terseName, tokenizer, Arrays.asList(extensions));
1✔
27
    }
1✔
28

29
    protected AbstractLanguage(String name, String terseName, Tokenizer tokenizer, List<String> extensions) {
1✔
30
        this.name = name;
1✔
31
        this.terseName = terseName;
1✔
32
        this.tokenizer = tokenizer;
1✔
33
        List<String> extensionsWithDot = extensions.stream().map(e -> {
1✔
34
            if (e.length() > 0 && e.charAt(0) != '.') {
1✔
35
                return "." + e;
1✔
36
            }
37
            return e;
×
38
        }).collect(Collectors.toList());
1✔
39
        this.fileFilter = PredicateUtil.toNormalizedFileFilter(
1✔
40
                PredicateUtil.getFileExtensionFilter(extensionsWithDot.toArray(new String[0]))
1✔
41
                        .or(it -> Files.isDirectory(Paths.get(it))));
1✔
42
        this.extensions = extensionsWithDot;
1✔
43
    }
1✔
44

45
    @Override
46
    public FilenameFilter getFileFilter() {
47
        return (dir, name) -> fileFilter.test(dir.toPath().resolve(name).toString());
×
48
    }
49

50
    @Override
51
    public Tokenizer getTokenizer() {
52
        return tokenizer;
1✔
53
    }
54

55
    @Override
56
    public void setProperties(Properties properties) {
57
        // needs to be implemented by subclasses.
58
    }
1✔
59

60
    @Override
61
    public String getName() {
62
        return name;
1✔
63
    }
64

65
    @Override
66
    public String getTerseName() {
67
        return terseName;
1✔
68
    }
69

70
    @Override
71
    public List<String> getExtensions() {
72
        return extensions;
×
73
    }
74
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc