1
2
3
4
5 package com.qulice.pmd;
6
7 import com.qulice.spi.Environment;
8 import java.util.Collection;
9 import java.util.Collections;
10 import java.util.LinkedList;
11 import net.sourceforge.pmd.Report.ConfigurationError;
12 import net.sourceforge.pmd.Report.ProcessingError;
13 import net.sourceforge.pmd.RuleViolation;
14
15
16
17
18
19
20 @SuppressWarnings("deprecation")
21 final class PmdListener implements net.sourceforge.pmd.ThreadSafeReportListener {
22
23
24
25
26 private final Environment env;
27
28
29
30
31
32 private final Collection<PmdError> violations;
33
34
35
36
37
38 PmdListener(final Environment environ) {
39 this.violations = new LinkedList<>();
40 this.env = environ;
41 }
42
43 @Override
44 public void metricAdded(final net.sourceforge.pmd.stat.Metric metric) {
45
46 }
47
48 @Override
49 public void ruleViolationAdded(final RuleViolation violation) {
50 final String name = violation.getFilename().substring(
51 this.env.basedir().toString().length()
52 );
53 if (!this.env.exclude("pmd", name)) {
54 this.violations.add(new PmdError.OfRuleViolation(violation));
55 }
56 }
57
58
59
60
61
62
63
64 public void onProcessingError(final ProcessingError error) {
65 if (error.getFile().endsWith(".java")) {
66 this.violations.add(new PmdError.OfProcessingError(error));
67 }
68 }
69
70
71
72
73
74 public void onConfigError(final ConfigurationError error) {
75 this.violations.add(new PmdError.OfConfigError(error));
76 }
77
78
79
80
81
82 public Collection<PmdError> errors() {
83 return Collections.unmodifiableCollection(this.violations);
84 }
85 }