diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/security/ApexSharingViolationsNestedClassTest.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/security/ApexSharingViolationsNestedClassTest.java
index c57e5d66db..9b15a20bf2 100644
--- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/security/ApexSharingViolationsNestedClassTest.java
+++ b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/security/ApexSharingViolationsNestedClassTest.java
@@ -8,7 +8,6 @@ import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -17,11 +16,8 @@ import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import net.sourceforge.pmd.Report;
-import net.sourceforge.pmd.Rule;
import net.sourceforge.pmd.RuleViolation;
-import net.sourceforge.pmd.lang.LanguageRegistry;
-import net.sourceforge.pmd.lang.apex.ApexLanguageModule;
-import net.sourceforge.pmd.testframework.RuleTst;
+import net.sourceforge.pmd.lang.apex.ast.ApexParserTestBase;
/**
*
Sharing settings are not inherited by inner classes. Sharing settings need to be declared on the class that
@@ -32,7 +28,7 @@ import net.sourceforge.pmd.testframework.RuleTst;
* should trigger a violation.
*/
@RunWith(Parameterized.class)
-public class ApexSharingViolationsNestedClassTest extends RuleTst {
+public class ApexSharingViolationsNestedClassTest extends ApexParserTestBase {
/**
* Type of operation that may require a sharing declaration.
*/
@@ -85,20 +81,15 @@ public class ApexSharingViolationsNestedClassTest extends RuleTst {
@Test
public void testSharingPermutation() {
String apexClass = generateClass(outerSharingDeclared, outerOperation, innerSharingDeclared, innerOperation);
- Report rpt = executeRule(apexClass, new ApexSharingViolationsRule(),
- LanguageRegistry.getLanguage(ApexLanguageModule.NAME).getDefaultVersion());
+ ApexSharingViolationsRule rule = new ApexSharingViolationsRule();
+ rule.setMessage("gotcha!");
+ Report rpt = apex.executeRule(rule, apexClass);
List violations = rpt.getViolations();
assertEquals("Unexpected Violation Size\n" + apexClass, expectedViolations, violations.size());
List lineNumbers = violations.stream().map(v -> v.getBeginLine()).collect(Collectors.toList());
assertEquals("Unexpected Line Numbers\n" + apexClass, expectedLineNumbers, lineNumbers);
}
- @Override
- protected List getRules() {
- Rule rule = findRule("category/apex/security.xml", "ApexSharingViolations");
- return Collections.singletonList(rule);
- }
-
/**
* Parameter provider that covers are all permutations
*/
diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java
index 49aa74a63a..8d72e36b11 100644
--- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java
+++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleViolationFactory.java
@@ -60,7 +60,9 @@ public interface RuleViolationFactory {
}
- RuleViolation createViolation(Rule rule, @NonNull Node location, @NonNull String filename, @NonNull String formattedMessage);
+ default RuleViolation createViolation(Rule rule, @NonNull Node location, @NonNull String filename, @NonNull String formattedMessage) {
+ return null;
+ }
SuppressedViolation suppressOrNull(Node location, RuleViolation violation);
diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/impl/DefaultRuleViolationFactory.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/impl/DefaultRuleViolationFactory.java
index 395cbce878..5720e001e0 100644
--- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/impl/DefaultRuleViolationFactory.java
+++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/impl/DefaultRuleViolationFactory.java
@@ -13,7 +13,6 @@ import org.checkerframework.checker.nullness.qual.NonNull;
import net.sourceforge.pmd.Report.SuppressedViolation;
import net.sourceforge.pmd.Rule;
-import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.RuleViolation;
import net.sourceforge.pmd.ViolationSuppressor;
import net.sourceforge.pmd.lang.ast.Node;
@@ -56,17 +55,6 @@ public class DefaultRuleViolationFactory implements RuleViolationFactory {
return Collections.emptyList();
}
- protected RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message) {
- return new ParametricRuleViolation<>(rule, ruleContext, node, message);
- }
-
- protected RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message,
- int beginLine, int endLine) {
- ParametricRuleViolation rv = new ParametricRuleViolation<>(rule, ruleContext, node, message);
- rv.setLines(beginLine, endLine);
- return rv;
- }
-
private Set getAllSuppressors() {
if (allSuppressors == null) {
// lazy loaded because calling getSuppressors in constructor
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/ReportTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/ReportTest.java
index e3571ff053..46d0ddbf3f 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/ReportTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/ReportTest.java
@@ -66,6 +66,7 @@ public class ReportTest {
hasViolation = true;
}
}
+
Report rpt = new Report();
MyListener listener = new MyListener();
rpt.addListener(listener);
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleContextTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/RuleContextTest.java
index a3a26d7ff7..ba5534e574 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleContextTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/RuleContextTest.java
@@ -14,6 +14,8 @@ import java.util.function.Consumer;
import org.junit.Test;
+import net.sourceforge.pmd.lang.DummyLanguageModule;
+import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.ast.RootNode;
@@ -23,10 +25,13 @@ public class RuleContextTest {
public static Report getReport(Consumer sideEffects) throws Exception {
Report report = new Report();
RuleContext ctx = new RuleContext();
+ ctx.setSourceCodeFile(new File("test.dummy"));
ctx.setReport(report);
+ ctx.setLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getDefaultVersion());
sideEffects.accept(ctx);
return report;
}
+
public static Report getReport(Rule rule, BiConsumer sideEffects) throws Exception {
return getReport(ctx -> sideEffects.accept(rule, ctx));
}
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java
index 396bda7876..d227a14d84 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java
@@ -78,7 +78,7 @@ public class PMDTaskTest {
String actual = IOUtils.toString(in, StandardCharsets.UTF_8);
// remove any trailing newline
actual = actual.replaceAll("\n|\r", "");
- Assert.assertEquals("sample.dummy:0:\tTest Rule 2", actual);
+ Assert.assertEquals("sample.dummy:1:\tTest Rule 2", actual);
}
}
}
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java
index 8985e8a644..0a897ef4a4 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java
@@ -6,8 +6,9 @@ package net.sourceforge.pmd.lang;
import java.io.Reader;
+import org.checkerframework.checker.nullness.qual.NonNull;
+
import net.sourceforge.pmd.Rule;
-import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.RuleViolation;
import net.sourceforge.pmd.lang.ast.DummyAstStages;
import net.sourceforge.pmd.lang.ast.DummyRoot;
@@ -64,15 +65,10 @@ public class DummyLanguageModule extends BaseLanguageModule {
}
public static class RuleViolationFactory extends DefaultRuleViolationFactory {
- @Override
- protected RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message) {
- return createRuleViolation(rule, ruleContext, node, message, 0, 0);
- }
@Override
- protected RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message,
- int beginLine, int endLine) {
- ParametricRuleViolation rv = new ParametricRuleViolation(rule, ruleContext, node, message) {
+ public RuleViolation createViolation(Rule rule, @NonNull Node location, @NonNull String filename, @NonNull String formattedMessage) {
+ return new ParametricRuleViolation(rule, filename, location, formattedMessage) {
{
this.packageName = "foo"; // just for testing variable expansion
}
@@ -82,8 +78,6 @@ public class DummyLanguageModule extends BaseLanguageModule {
return super.getPackageName();
}
};
- rv.setLines(beginLine, endLine);
- return rv;
}
}
}
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SummaryHTMLRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SummaryHTMLRendererTest.java
index 0ec437295c..8e3858ea98 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SummaryHTMLRendererTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SummaryHTMLRendererTest.java
@@ -130,7 +130,7 @@ public class SummaryHTMLRendererTest extends AbstractRendererTest {
+ PMD.EOL + "# | File | Line | Problem | " + PMD.EOL
+ "
Suppressed warnings
"
+ PMD.EOL + "File | Line | Rule | NOPMD or Annotation | Reason |
"
- + PMD.EOL + " " + PMD.EOL + " | " + PMD.EOL
+ + PMD.EOL + "
" + PMD.EOL + "test | " + PMD.EOL
+ "1 | " + PMD.EOL + "Foo | " + PMD.EOL
+ "//NOPMD | " + PMD.EOL + "test | " + PMD.EOL
+ "
"
diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleViolationFactory.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleViolationFactory.java
index a16998f3fa..44ba0cec48 100644
--- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleViolationFactory.java
+++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleViolationFactory.java
@@ -49,7 +49,7 @@ public final class JavaRuleViolationFactory extends DefaultRuleViolationFactory
@Override
public RuleViolation createViolation(Rule rule, @NonNull Node location, @NonNull String filename, @NonNull String formattedMessage) {
- return new JavaRuleViolation(rule, filename, (JavaNode) location, formattedMessage);
+ return new JavaRuleViolation(rule, (JavaNode) location, filename, formattedMessage);
}
}
diff --git a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptParserOptionsTest.java b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptParserOptionsTest.java
index b343d5bbdc..59e3d54f4b 100644
--- a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptParserOptionsTest.java
+++ b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptParserOptionsTest.java
@@ -8,7 +8,6 @@ import static net.sourceforge.pmd.lang.ParserOptionsTest.verifyOptionsEqualsHash
import static net.sourceforge.pmd.util.CollectionUtil.listOf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
@@ -64,8 +63,6 @@ public class EcmascriptParserOptionsTest {
options.setSuppressMarker("foo");
assertEquals("foo", options.getSuppressMarker());
- options.setSuppressMarker(null);
- assertNull(options.getSuppressMarker());
}
@Test
diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java b/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java
index 8a8a25793d..b3c99b6e4c 100644
--- a/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java
+++ b/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java
@@ -6,8 +6,9 @@ package net.sourceforge.pmd.test.lang;
import java.io.Reader;
+import org.checkerframework.checker.nullness.qual.NonNull;
+
import net.sourceforge.pmd.Rule;
-import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.RuleViolation;
import net.sourceforge.pmd.lang.AbstractParser;
import net.sourceforge.pmd.lang.AbstractPmdLanguageVersionHandler;
@@ -70,22 +71,14 @@ public class DummyLanguageModule extends BaseLanguageModule {
public static class RuleViolationFactory extends DefaultRuleViolationFactory {
@Override
- protected RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message) {
- return createRuleViolation(rule, ruleContext, node, message, 0, 0);
- }
-
- @Override
- protected RuleViolation createRuleViolation(Rule rule, RuleContext ruleContext, Node node, String message,
- int beginLine, int endLine) {
- ParametricRuleViolation rv = new ParametricRuleViolation(rule, ruleContext, node, message) {
+ public RuleViolation createViolation(Rule rule, @NonNull Node location, @NonNull String filename, @NonNull String formattedMessage) {
+ return new ParametricRuleViolation(rule, filename, location, formattedMessage) {
@Override
public String getPackageName() {
this.packageName = "foo"; // just for testing variable expansion
return super.getPackageName();
}
};
- rv.setLines(beginLine, endLine);
- return rv;
}
}
}