diff --git a/docs/_plugins/javadoc_tag.rb b/docs/_plugins/javadoc_tag.rb index c31b9a655f..e4dd63e0de 100644 --- a/docs/_plugins/javadoc_tag.rb +++ b/docs/_plugins/javadoc_tag.rb @@ -73,19 +73,19 @@ require_relative 'jdoc_namespace_tag' # * a (args) -> adds the simple name of the argument types for method references, noop for other references # * {% jdoc !a!core::Rule#setName(java.lang.String) %} -> [`setName(String)`](...) # * q (qualify) -> prefix with the fqcn of the class, noop for package references -# * {% jdoc !q!core::Rule %} -> [`net.sourceforge.pmd.Rule`](...) -# * {% jdoc !q!core::Rule#setName(java.lang.String) %} -> [`net.sourceforge.pmd.Rule#setName`](...) +# * {% jdoc !q!core::rule.Rule %} -> [`net.sourceforge.pmd.lang.rule.Rule`](...) +# * {% jdoc !q!core::rule.Rule#setName(java.lang.String) %} -> [`net.sourceforge.pmd.lang.rule.Rule#setName`](...) # * c (class) -> prefix the class name for member references, noop for type and package references, or if "qualify" is specified # * {% jdoc !c!core::Rule#setName(java.lang.String) %} -> [`Rule#setName`](...) # * Empty options ("!!") - > shorthand to a commonly relevant option # * For field or method references, "!!" is the "c" option # * {% jdoc !!core::Rule#setName(java.lang.String) %} -> [`Rule#setName`](...) # * For type references, "!!" is the "q" option -# * {% jdoc !!core::Rule %} -> [`net.sourceforge.pmd.Rule`](...) +# * {% jdoc !!core::rule.Rule %} -> [`net.sourceforge.pmd.lang.rule.Rule`](...) # * For package references, "!!" is a noop, they're always fully qualified # * Several options may be used at once, though this is only useful for method references: # * {% jdoc !ac!core::Rule#setName(java.lang.String) %} -> [`Rule#setName(String)`](...) -# * {% jdoc !aq!core::Rule#setName(java.lang.String) %} -> [`net.sourceforge.pmd.Rule#setName(String)`](...) +# * {% jdoc !aq!core::rule.Rule#setName(java.lang.String) %} -> [`net.sourceforge.pmd.lang.rule.Rule#setName(String)`](...) # # * DO NOT: # - Include spaces in any part of the reference diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 1243d7bcc4..827edc8cc8 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -172,6 +172,7 @@ The rules have been moved into categories with PMD 6. * [#4723](https://github.com/pmd/pmd/issues/4723): \[cli] Launch fails for "bash pmd" * core * [#1027](https://github.com/pmd/pmd/issues/1027): \[core] Apply the new PropertyDescriptor<Pattern> type where applicable + * [#3917](https://github.com/pmd/pmd/issues/3917): \[core] Consolidate `n.s.pmd.lang.rule` package * [#4065](https://github.com/pmd/pmd/issues/4065): \[core] Rename TokenMgrError to LexException, Tokenizer to CpdLexer * [#4312](https://github.com/pmd/pmd/issues/4312): \[core] Remove unnecessary property `color` and system property `pmd.color` in `TextColorRenderer` * [#4313](https://github.com/pmd/pmd/issues/4313): \[core] Remove support for <lang>-<ruleset> hyphen notation for ruleset references @@ -233,6 +234,31 @@ The rules have been moved into categories with PMD 6. See [General AST Changes to avoid @Image]({{ baseurl }}pmd_userdocs_migrating_to_pmd7.html#general-ast-changes-to-avoid-image) in the migration guide for details. +**Moved classes/consolidated packages** + +* pmd-core + * Many types have been moved from the base package `net.sourceforge.pmd` into subpackage {% jdoc_package core::lang.rule %} + * {%jdoc core::lang.rule.Rule %} + * {%jdoc core::lang.rule.RulePriority %} + * {%jdoc core::lang.rule.RuleSet %} + * {%jdoc core::lang.rule.RuleSetFactory %} + * {%jdoc core::lang.rule.RuleSetFactoryCompatibility %} + * {%jdoc core::lang.rule.RuleSetLoader %} + * {%jdoc core::lang.rule.RuleSetLoadException %} + * {%jdoc core::lang.rule.RuleSetWriter %} + +**Internalized classes** + +These were marked as `@InternalApi` previously. + +* pmd-core + * `RuleFactory`: moved from `net.sourceforge.pmd.rules` into subpackage `lang.rule`. + It has now been hidden completely from public API. + * Many types have been moved from the base package `net.sourceforge.pmd` into subpackage `lang.rule.internal`. + * `RuleSetReference` + * `RuleSetReferenceId` + * `RuleSets` + **Removed classes and methods (previously deprecated)** The following previously deprecated classes have been removed: @@ -703,6 +729,7 @@ See also [Detailed Release Notes for PMD 7]({{ baseurl }}pmd_release_notes_pmd7. * [#3815](https://github.com/pmd/pmd/issues/3815): \[core] Update Saxon HE to 10.7 * [#3893](https://github.com/pmd/pmd/pull/3893): \[core] Text documents * [#3902](https://github.com/pmd/pmd/issues/3902): \[core] Violation decorators + * [#3917](https://github.com/pmd/pmd/issues/3917): \[core] Consolidate `n.s.pmd.lang.rule` package * [#3918](https://github.com/pmd/pmd/issues/3918): \[core] Make LanguageRegistry non static * [#3919](https://github.com/pmd/pmd/issues/3919): \[core] Merge CPD and PMD language * [#3922](https://github.com/pmd/pmd/pull/3922): \[core] Better error reporting for the ruleset parser diff --git a/pmd-ant/src/main/java/net/sourceforge/pmd/ant/PMDTask.java b/pmd-ant/src/main/java/net/sourceforge/pmd/ant/PMDTask.java index eb9f7604b6..ac14ae6519 100644 --- a/pmd-ant/src/main/java/net/sourceforge/pmd/ant/PMDTask.java +++ b/pmd-ant/src/main/java/net/sourceforge/pmd/ant/PMDTask.java @@ -17,9 +17,9 @@ import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; import org.apache.tools.ant.types.Resource; -import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.ant.internal.PMDTaskImpl; +import net.sourceforge.pmd.lang.rule.RulePriority; /** * PMD Ant task. Setters of this class are interpreted by Ant as properties diff --git a/pmd-ant/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java b/pmd-ant/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java index 2633353fcc..9da2d30feb 100644 --- a/pmd-ant/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java +++ b/pmd-ant/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java @@ -23,8 +23,6 @@ import org.slf4j.event.Level; import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.PmdAnalysis; -import net.sourceforge.pmd.RulePriority; -import net.sourceforge.pmd.RuleSetLoader; import net.sourceforge.pmd.ant.Formatter; import net.sourceforge.pmd.ant.PMDTask; import net.sourceforge.pmd.ant.SourceLanguage; @@ -35,6 +33,8 @@ import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.RulePriority; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; import net.sourceforge.pmd.reporting.ReportStats; diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexViolationSuppressors.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexViolationSuppressors.java index 2212fa9bb1..cba8fc4193 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexViolationSuppressors.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexViolationSuppressors.java @@ -15,7 +15,6 @@ import org.checkerframework.checker.nullness.qual.NonNull; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Report.SuppressedViolation; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.ViolationSuppressor; import net.sourceforge.pmd.lang.apex.ast.ASTAnnotation; @@ -30,6 +29,7 @@ import net.sourceforge.pmd.lang.apex.ast.ASTUserEnum; import net.sourceforge.pmd.lang.apex.ast.ASTVariableDeclarationStatements; import net.sourceforge.pmd.lang.apex.ast.ApexNode; import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.rule.Rule; final class ApexViolationSuppressors { diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/QuickstartRulesetTest.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/QuickstartRulesetTest.java index a221b05423..d56fdaecf8 100644 --- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/QuickstartRulesetTest.java +++ b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/QuickstartRulesetTest.java @@ -9,9 +9,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSetLoader; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import com.github.stefanbirkner.systemlambda.SystemLambda; diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/RuleSetFactoryTest.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/RuleSetFactoryTest.java index fb955369af..c3dd9beaa2 100644 --- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/RuleSetFactoryTest.java +++ b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.apex; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; class RuleSetFactoryTest extends AbstractRuleSetFactoryTest { // no additional tests yet diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/UnusedMethodTest.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/UnusedMethodTest.java index cda9afc56b..345c2947d5 100644 --- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/UnusedMethodTest.java +++ b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/UnusedMethodTest.java @@ -16,14 +16,14 @@ import org.junit.jupiter.api.io.TempDir; import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.PmdAnalysis; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSetLoader; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.apex.ApexLanguageModule; import net.sourceforge.pmd.lang.apex.ApexLanguageProperties; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; import com.nawforce.pkgforce.path.PathFactory; diff --git a/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/internal/PmdCommand.java b/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/internal/PmdCommand.java index bdeac806a7..67f0aa44dd 100644 --- a/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/internal/PmdCommand.java +++ b/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/internal/PmdCommand.java @@ -20,7 +20,6 @@ import org.slf4j.LoggerFactory; import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.PmdAnalysis; -import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.benchmark.TextTimingReportRenderer; import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.benchmark.TimingReport; @@ -33,6 +32,7 @@ import net.sourceforge.pmd.cli.internal.ProgressBarListener; import net.sourceforge.pmd.internal.LogMessages; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.rule.RulePriority; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.renderers.Renderer; import net.sourceforge.pmd.renderers.RendererFactory; diff --git a/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/typesupport/internal/RulePriorityTypeSupport.java b/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/typesupport/internal/RulePriorityTypeSupport.java index 48ee080be9..67c3e41337 100644 --- a/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/typesupport/internal/RulePriorityTypeSupport.java +++ b/pmd-cli/src/main/java/net/sourceforge/pmd/cli/commands/typesupport/internal/RulePriorityTypeSupport.java @@ -8,7 +8,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import net.sourceforge.pmd.RulePriority; +import net.sourceforge.pmd.lang.rule.RulePriority; import picocli.CommandLine.ITypeConverter; import picocli.CommandLine.TypeConversionException; diff --git a/pmd-compat6/pom.xml b/pmd-compat6/pom.xml index 9f682a8768..10d2fc34c3 100644 --- a/pmd-compat6/pom.xml +++ b/pmd-compat6/pom.xml @@ -43,6 +43,20 @@ + + org.jboss.bridger + bridger + 1.6.Final + + + weave + process-classes + + transform + + + + org.apache.maven.plugins maven-invoker-plugin diff --git a/pmd-compat6/src/it/pmd-for-java/invoker.properties b/pmd-compat6/src/it/pmd-for-java/invoker.properties index bfaaa1661c..d03166a079 100644 --- a/pmd-compat6/src/it/pmd-for-java/invoker.properties +++ b/pmd-compat6/src/it/pmd-for-java/invoker.properties @@ -1,4 +1,4 @@ -invoker.goals.1 = verify +invoker.goals.1 = verify -e invoker.goals.2 = pmd:check -Dformat=csv invoker.goals.3 = pmd:check -Dformat=txt invoker.buildResult = failure diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/PMDConfiguration.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/PMDConfiguration.java index 87175d7405..42d38e7754 100644 --- a/pmd-compat6/src/main/java/net/sourceforge/pmd/PMDConfiguration.java +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/PMDConfiguration.java @@ -3,7 +3,10 @@ */ // This class has been taken from 7.0.0-SNAPSHOT -// Changes: setSourceEncoding +// Changes: +// - setSourceEncoding +// - setBenchmark (non-functional) +// - getMinimumPriority package net.sourceforge.pmd; @@ -30,6 +33,7 @@ import net.sourceforge.pmd.cache.NoopAnalysisCache; import net.sourceforge.pmd.internal.util.ClasspathClassLoader; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.renderers.Renderer; import net.sourceforge.pmd.renderers.RendererFactory; import net.sourceforge.pmd.util.AssertionUtil; @@ -585,4 +589,14 @@ public class PMDConfiguration extends AbstractConfiguration { public void setSourceEncoding(String sourceEncoding) { setSourceEncoding(Charset.forName(Objects.requireNonNull(sourceEncoding))); } + + @Deprecated + public void setBenchmark(boolean benchmark) { + // ignored + } + + // new method to be compatible with PMD 7 - RulePriority has changed package + public net.sourceforge.pmd.lang.rule.RulePriority getMinimumPriority$$bridge() { // SUPPRESS CHECKSTYLE ignore + return minimumPriority.asPMD7RulePriority(); + } } diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/Rule.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/Rule.java new file mode 100644 index 0000000000..f81c5a7cfb --- /dev/null +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/Rule.java @@ -0,0 +1,320 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +// Old version of this class. In PMD 7, this has been moved into sub-package "rule". +// Changes: +// - deepCopy + +package net.sourceforge.pmd; + +import java.util.List; +import java.util.Optional; +import java.util.regex.Pattern; + +import net.sourceforge.pmd.lang.Language; +import net.sourceforge.pmd.lang.LanguageProcessor; +import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.rule.RulePriority; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleTargetSelector; +import net.sourceforge.pmd.properties.PropertyDescriptor; +import net.sourceforge.pmd.properties.PropertyFactory; +import net.sourceforge.pmd.properties.PropertySource; + +/** + * This is the basic Rule interface for PMD rules. + * + *

+ * Thread safety: PMD will create one instance of a rule per + * thread. The instances are not shared across different threads. However, a + * single rule instance is reused for analyzing multiple files. + *

+ */ +public interface Rule extends PropertySource { + + // TODO these should not be properties + + /** + * The property descriptor to universally suppress violations with messages + * matching a regular expression. + */ + PropertyDescriptor> VIOLATION_SUPPRESS_REGEX_DESCRIPTOR = + PropertyFactory.regexProperty("violationSuppressRegex") + .desc("Suppress violations with messages matching a regular expression") + .toOptional("") + .defaultValue(Optional.empty()) + .build(); + + /** + * Name of the property to universally suppress violations on nodes which + * match a given relative XPath expression. + */ + PropertyDescriptor> VIOLATION_SUPPRESS_XPATH_DESCRIPTOR = + PropertyFactory.stringProperty("violationSuppressXPath") + .desc("Suppress violations on nodes which match a given relative XPath expression.") + .toOptional("") + .defaultValue(Optional.empty()) + .build(); + + /** + * Get the Language of this Rule. + * + * @return the language + */ + Language getLanguage(); + + /** + * Set the Language of this Rule. + * + * @param language + * the language + */ + void setLanguage(Language language); + + /** + * Get the minimum LanguageVersion to which this Rule applies. If this value + * is null it indicates there is no minimum bound. + * + * @return the minimum language version + */ + LanguageVersion getMinimumLanguageVersion(); + + /** + * Set the minimum LanguageVersion to which this Rule applies. + * + * @param minimumLanguageVersion + * the minimum language version + */ + void setMinimumLanguageVersion(LanguageVersion minimumLanguageVersion); + + /** + * Get the maximum LanguageVersion to which this Rule applies. If this value + * is null it indicates there is no maximum bound. + * + * @return the maximum language version + */ + LanguageVersion getMaximumLanguageVersion(); + + /** + * Set the maximum LanguageVersion to which this Rule applies. + * + * @param maximumLanguageVersion + * the maximum language version + */ + void setMaximumLanguageVersion(LanguageVersion maximumLanguageVersion); + + /** + * Gets whether this Rule is deprecated. A deprecated Rule is one which: + *
    + *
  • is scheduled for removal in a future version of PMD
  • + *
  • or, has been removed and replaced with a non-functioning place-holder + * and will be completely removed in a future version of PMD
  • + *
  • or, has been renamed/moved and the old name will be completely + * removed in a future version of PMD
  • + *
+ * + * @return true if this rule is deprecated + */ + boolean isDeprecated(); + + /** + * Sets whether this Rule is deprecated. + * + * @param deprecated + * whether this rule is deprecated + */ + void setDeprecated(boolean deprecated); + + /** + * Get the name of this Rule. + * + * @return the name + */ + @Override + String getName(); + + /** + * Set the name of this Rule. + * + * @param name + * the name + */ + void setName(String name); + + /** + * Get the version of PMD in which this Rule was added. Return + * null if not applicable. + * + * @return version of PMD since when this rule was added + */ + String getSince(); + + /** + * Set the version of PMD in which this Rule was added. + * + * @param since + * the version of PMD since when this rule was added + */ + void setSince(String since); + + /** + * Get the implementation class of this Rule. + * + * @return the implementation class name of this rule. + */ + String getRuleClass(); + + /** + * Set the class of this Rule. + * + * @param ruleClass + * the class name of this rule. + */ + void setRuleClass(String ruleClass); + + /** + * Get the name of the RuleSet containing this Rule. + * + * @return the name of th ruleset containing this rule. + * @see RuleSet + */ + String getRuleSetName(); + + /** + * Set the name of the RuleSet containing this Rule. + * + * @param name + * the name of the ruleset containing this rule. + * @see RuleSet + */ + void setRuleSetName(String name); + + /** + * Get the message to show when this Rule identifies a violation. + * + * @return the message to show for a violation. + */ + String getMessage(); + + /** + * Set the message to show when this Rule identifies a violation. + * + * @param message + * the message to show for a violation. + */ + void setMessage(String message); + + /** + * Get the description of this Rule. + * + * @return the description + */ + String getDescription(); + + /** + * Set the description of this Rule. + * + * @param description + * the description + */ + void setDescription(String description); + + /** + * Get the list of examples for this Rule. + * + * @return the list of examples for this rule. + */ + List getExamples(); + + /** + * Add a single example for this Rule. + * + * @param example + * a single example to add + */ + void addExample(String example); + + /** + * Get a URL for external information about this Rule. + * + * @return the URL for external information about this rule. + */ + String getExternalInfoUrl(); + + /** + * Set a URL for external information about this Rule. + * + * @param externalInfoUrl + * the URL for external information about this rule. + */ + void setExternalInfoUrl(String externalInfoUrl); + + /** + * Get the priority of this Rule. + * + * @return the priority + */ + RulePriority getPriority(); + + /** + * Set the priority of this Rule. + * + * @param priority + * the priority + */ + void setPriority(RulePriority priority); + + + /** + * Returns the object that selects the nodes to which this rule applies. + * The selected nodes will be handed to {@link #apply(Node, RuleContext)}. + */ + RuleTargetSelector getTargetSelector(); + + /** + * Initialize the rule using the language processor if needed. + * + * @param languageProcessor The processor for the rule's language + */ + default void initialize(LanguageProcessor languageProcessor) { + // by default do nothing + } + + /** + * Start processing. Called once per file, before apply() is first called. + * + * @param ctx the rule context + */ + void start(RuleContext ctx); + + + /** + * Process the given node. The nodes that are fed to this method + * are the nodes selected by {@link #getTargetSelector()}. + * + * @param target Node on which to apply the rule + * @param ctx Rule context, handling violations + */ + void apply(Node target, RuleContext ctx); + + /** + * End processing. Called once per file, after apply() is last called. + * + * @param ctx + * the rule context + */ + void end(RuleContext ctx); + + /** + * Creates a new copy of this rule. + * @return A new exact copy of this rule + */ + net.sourceforge.pmd.lang.rule.Rule deepCopy(); + + // new method to be compatible with PMD 6 - Rule has changed package + default Rule deepCopy$$bridge() { // SUPPRESS CHECKSTYLE ignore + return deepCopy(); + } +} diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/RulePriority.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/RulePriority.java new file mode 100644 index 0000000000..c624f1200e --- /dev/null +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/RulePriority.java @@ -0,0 +1,138 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +// Copy of net.sourceforge.pmd.lang.rule.RulePriority +// Added method: +// - asPMD7RulePriority + +package net.sourceforge.pmd; + +/** + * These are the possible Rule priority values. + * + * For backward compatibility, priorities range in value from 1 to 5, with 5 + * being the lowest priority. This means the ordinal value of the Enum should be + * avoided in favor of {@link RulePriority#getPriority()} and + * {@link RulePriority#valueOf(int)} + * + * @see How + * to define rules priority + */ +public enum RulePriority { + + /** High: Change absolutely required. Behavior is critically broken/buggy */ + HIGH(1, "High"), + /** + * Medium to high: Change highly recommended. Behavior is quite likely to be + * broken/buggy. + */ + MEDIUM_HIGH(2, "Medium High"), + /** + * Medium: Change recommended. Behavior is confusing, perhaps buggy, and/or + * against standards/best practices. + */ + MEDIUM(3, "Medium"), + /** + * Medium to low: Change optional. Behavior is not likely to be buggy, but + * more just flies in the face of standards/style/good taste. + */ + MEDIUM_LOW(4, "Medium Low"), + /** + * Low: Change highly optional. Nice to have, such as a consistent naming + * policy for package/class/fields... + */ + LOW(5, "Low"); + + private final int priority; + private final String name; + + RulePriority(int priority, String name) { + this.priority = priority; + this.name = name; + } + + /** + * Get the priority value as a number. This is the value to be used in the + * externalized form of a priority (e.g. in RuleSet XML). + * + * @return The int value of the priority. + */ + public int getPriority() { + return priority; + } + + /** + * Get the descriptive name of this priority. + * + * @return The descriptive name. + */ + public String getName() { + return name; + } + + /** + * Returns the descriptive name of the priority. + * + * @return descriptive name of the priority + * @see #getName() + */ + @Override + public String toString() { + return name; + } + + /** + * Get the priority which corresponds to the given number as returned by + * {@link RulePriority#getPriority()}. If the number is an invalid value, + * then {@link RulePriority#LOW} will be returned. + * + * @param priority + * The numeric priority value. + * @return The priority. + */ + public static RulePriority valueOf(int priority) { + try { + return RulePriority.values()[priority - 1]; + } catch (ArrayIndexOutOfBoundsException e) { + return LOW; + } + } + + /** + * Returns the priority which corresponds to the given number as returned by + * {@link RulePriority#getPriority()}. If the number is an invalid value, + * then null will be returned. + * + * @param priority The numeric priority value. + */ + public static RulePriority valueOfNullable(int priority) { + try { + return RulePriority.values()[priority - 1]; + } catch (ArrayIndexOutOfBoundsException e) { + return null; + } + } + + /** + * Returns the priority which corresponds to the given number as returned by + * {@link RulePriority#getPriority()}. If the number is an invalid value, + * then null will be returned. + * + * @param priority The numeric priority value. + */ + public static RulePriority valueOfNullable(String priority) { + try { + int integer = Integer.parseInt(priority); + return RulePriority.values()[integer - 1]; + } catch (ArrayIndexOutOfBoundsException | NumberFormatException e) { + return null; + } + } + + // ---- compatibility extensions + + public net.sourceforge.pmd.lang.rule.RulePriority asPMD7RulePriority() { + return net.sourceforge.pmd.lang.rule.RulePriority.valueOf(name()); + } +} diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetLoadException.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetLoadException.java new file mode 100644 index 0000000000..4af60a4d22 --- /dev/null +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetLoadException.java @@ -0,0 +1,17 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd; + +import org.checkerframework.checker.nullness.qual.NonNull; + +public class RuleSetLoadException extends net.sourceforge.pmd.lang.rule.RuleSetLoadException { + public RuleSetLoadException(RuleSetReferenceId rsetId, @NonNull Throwable cause) { + super(rsetId, cause); + } + + public RuleSetLoadException(RuleSetReferenceId rsetId, String message) { + super(rsetId, message); + } +} diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetLoader.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetLoader.java index a7bfbe194a..20e91f3069 100644 --- a/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetLoader.java +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetLoader.java @@ -2,322 +2,31 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -// This class has been taken from 7.0.0-SNAPSHOT -// Before removing RuleSetFactoryCompatibility (#4314) +// Copy from PMD 7 with minimized functionality. +// Only the methods called by maven-pmd-plugin are kept, +// but they do nothing. That means, that maven-pmd-plugin can't report deprecated +// rules properly anymore. +// The ruleset for actual PMD analysis is loaded by PMD itself later on, and not +// through this class. package net.sourceforge.pmd; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; -import java.util.Objects; -import java.util.Properties; -import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import net.sourceforge.pmd.lang.rule.RuleSet; -import net.sourceforge.pmd.annotation.InternalApi; -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.util.CollectionUtil; -import net.sourceforge.pmd.util.ResourceLoader; -import net.sourceforge.pmd.util.log.MessageReporter; - -/** - * Configurable object to load rulesets from XML resources. - * This can be configured using a fluent API, see eg {@link #warnDeprecated(boolean)}. - * To create a new ruleset, use {@link #loadFromResource(String)} - * or some such overload. - */ public final class RuleSetLoader { - private static final Logger LOG = LoggerFactory.getLogger(RuleSetLoader.class); - - private LanguageRegistry languageRegistry = LanguageRegistry.PMD; - private ResourceLoader resourceLoader = new ResourceLoader(RuleSetLoader.class.getClassLoader()); - private RulePriority minimumPriority = RulePriority.LOW; - private boolean warnDeprecated = true; - private @NonNull RuleSetFactoryCompatibility compatFilter = RuleSetFactoryCompatibility.DEFAULT; - private boolean includeDeprecatedRuleReferences = false; - private @NonNull MessageReporter reporter = MessageReporter.quiet(); - - /** - * Create a new RuleSetLoader with a default configuration. - * The defaults are described on each configuration method of this class. - */ - public RuleSetLoader() { // NOPMD UnnecessaryConstructor - // default - } - - RuleSetLoader withReporter(@NonNull MessageReporter reporter) { - this.reporter = Objects.requireNonNull(reporter); - return this; - } - - /** - * Specify that the given classloader should be used to resolve - * paths to external ruleset references. The default uses PMD's - * own classpath. - */ - public RuleSetLoader loadResourcesWith(ClassLoader classLoader) { - this.resourceLoader = new ResourceLoader(classLoader); - return this; - } - - // internal - RuleSetLoader loadResourcesWith(ResourceLoader loader) { - this.resourceLoader = loader; - return this; - } - - public RuleSetLoader withLanguages(LanguageRegistry languageRegistry) { - this.languageRegistry = languageRegistry; - return this; - } - - /** - * Filter loaded rules to only those that match or are above - * the given priority. The default is {@link RulePriority#LOW}, - * ie, no filtering occurs. - * - * @return This instance, modified - */ - public RuleSetLoader filterAbovePriority(RulePriority minimumPriority) { - this.minimumPriority = minimumPriority; - return this; - } - - /** - * Log a warning when referencing a deprecated rule. - * This is enabled by default. - * - * @return This instance, modified - */ public RuleSetLoader warnDeprecated(boolean warn) { - this.warnDeprecated = warn; return this; } - /** - * Enable translating old rule references to newer ones, if they have - * been moved or renamed. This is enabled by default, if disabled, - * unresolved references will not be translated and will produce an - * error. - * - * @return This instance, modified - */ - public RuleSetLoader enableCompatibility(boolean enable) { - return setCompatibility(enable ? RuleSetFactoryCompatibility.DEFAULT - : RuleSetFactoryCompatibility.EMPTY); - } - - // test only - RuleSetLoader setCompatibility(@NonNull RuleSetFactoryCompatibility filter) { - this.compatFilter = filter; - return this; - } - - /** - * Follow deprecated rule references. By default this is off, - * and those references will be ignored (with a warning depending - * on {@link #enableCompatibility(boolean)}). - * - * @return This instance, modified - */ - public RuleSetLoader includeDeprecatedRuleReferences(boolean enable) { - this.includeDeprecatedRuleReferences = enable; - return this; - } - - /** - * Create a new rule set factory, if you have to (that class is deprecated). - * That factory will use the configuration that was set using the setters of this. - * - * @deprecated {@link RuleSetFactory} is deprecated, replace its usages - * with usages of this class, or of static factory methods of {@link RuleSet} - */ - @Deprecated - public RuleSetFactory toFactory() { - return new RuleSetFactory( - this.resourceLoader, - this.languageRegistry, - this.minimumPriority, - this.warnDeprecated, - this.compatFilter, - this.includeDeprecatedRuleReferences, - this.reporter - ); - } - - /** - * Parses and returns a ruleset from its location. The location may - * be a file system path, or a resource path (see {@link #loadResourcesWith(ClassLoader)}). - * - * @param rulesetPath A reference to a single ruleset - * - * @throws RuleSetLoadException If any error occurs (eg, invalid syntax, or resource not found) - */ - public RuleSet loadFromResource(String rulesetPath) { - return loadFromResource(new RuleSetReferenceId(rulesetPath, null)); - } - - /** - * Parses and returns a ruleset from string content. - * - * @param filename The symbolic "file name", for error messages. - * @param rulesetXmlContent Xml file contents - * - * @throws RuleSetLoadException If any error occurs (eg, invalid syntax) - */ - public RuleSet loadFromString(String filename, final String rulesetXmlContent) { - return loadFromResource(new RuleSetReferenceId(filename, null) { - @Override - public InputStream getInputStream(ResourceLoader rl) { - return new ByteArrayInputStream(rulesetXmlContent.getBytes(StandardCharsets.UTF_8)); - } - }); - } - - /** - * Parses several resources into a list of rulesets. - * - * @param paths Paths - * - * @throws RuleSetLoadException If any error occurs (eg, invalid syntax, or resource not found), - * for any of the parameters - * @throws NullPointerException If the parameter, or any component is null - */ public List loadFromResources(Collection paths) { - List ruleSets = new ArrayList<>(paths.size()); - for (String path : paths) { - ruleSets.add(loadFromResource(path)); - } - return ruleSets; + return Collections.emptyList(); } - /** - * Loads a list of rulesets, if any has an error, report it on the contextual - * error reporter instead of aborting, and continue loading the rest. - * - *

Internal API: might be published later, or maybe in PMD 7 this - * will be the default behaviour of every method of this class. - */ - @InternalApi - public List loadRuleSetsWithoutException(List rulesetPaths) { - List ruleSets = new ArrayList<>(rulesetPaths.size()); - boolean anyRules = false; - boolean error = false; - for (String path : rulesetPaths) { - try { - RuleSet ruleset = this.loadFromResource(path); - anyRules |= !ruleset.getRules().isEmpty(); - printRulesInDebug(path, ruleset); - ruleSets.add(ruleset); - } catch (RuleSetLoadException e) { - error = true; - reporter.error(e); - } - } - if (!anyRules && !error) { - reporter.warn("No rules found. Maybe you misspelled a rule name? ({0})", - StringUtils.join(rulesetPaths, ',')); - } - return ruleSets; - } - - void printRulesInDebug(String path, RuleSet ruleset) { - if (LOG.isDebugEnabled()) { - LOG.debug("Rules loaded from {}:", path); - for (Rule rule : ruleset.getRules()) { - LOG.debug("- {} ({})", rule.getName(), rule.getLanguage().getName()); - } - } - if (ruleset.getRules().isEmpty()) { - reporter.warn("No rules found in ruleset {0}", path); - } - - } - - /** - * Parses several resources into a list of rulesets. - * - * @param first First path - * @param rest Paths - * - * @throws RuleSetLoadException If any error occurs (eg, invalid syntax, or resource not found), - * for any of the parameters - * @throws NullPointerException If the parameter, or any component is null - */ - public List loadFromResources(String first, String... rest) { - return loadFromResources(CollectionUtil.listOf(first, rest)); - } - - // package private - RuleSet loadFromResource(RuleSetReferenceId ruleSetReferenceId) { - try { - return toFactory().createRuleSet(ruleSetReferenceId); - } catch (RuleSetLoadException e) { - throw e; - } catch (Exception e) { - throw new RuleSetLoadException(ruleSetReferenceId, e); - } - } - - - /** - * Configure a new ruleset factory builder according to the parameters - * of the given PMD configuration. - */ public static RuleSetLoader fromPmdConfig(PMDConfiguration configuration) { - return new RuleSetLoader().filterAbovePriority(configuration.getMinimumPriority()) - .enableCompatibility(configuration.isRuleSetFactoryCompatibilityEnabled()) - .withLanguages(configuration.getLanguageRegistry()) - .withReporter(configuration.getReporter()); - } - - - /** - * Returns an Iterator of RuleSet objects loaded from descriptions from the - * "categories.properties" resource for each language. This - * uses the classpath of the resource loader ({@link #loadResourcesWith(ClassLoader)}). - * - * @return A list of all category rulesets - * - * @throws RuleSetLoadException If a standard ruleset cannot be loaded. - * This is a corner case, that probably should not be caught by clients. - * The standard rulesets are well-formed, at least in stock PMD distributions. - * - */ - public List getStandardRuleSets() { - String rulesetsProperties; - List ruleSetReferenceIds = new ArrayList<>(); - for (Language language : languageRegistry.getLanguages()) { - Properties props = new Properties(); - rulesetsProperties = "category/" + language.getTerseName() + "/categories.properties"; - try (InputStream inputStream = resourceLoader.loadClassPathResourceAsStreamOrThrow(rulesetsProperties)) { - props.load(inputStream); - String rulesetFilenames = props.getProperty("rulesets.filenames"); - // some languages might not have any rules and this property either doesn't exist or is empty - if (StringUtils.isNotBlank(rulesetFilenames)) { - ruleSetReferenceIds.addAll(Arrays.asList(rulesetFilenames.split(","))); - } - } catch (IOException e) { - throw new RuntimeException("Couldn't find " + rulesetsProperties - + "; please ensure that the directory is on the classpath. The current classpath is: " - + System.getProperty("java.class.path")); - } - } - - List ruleSets = new ArrayList<>(); - for (String id : ruleSetReferenceIds) { - ruleSets.add(loadFromResource(id)); // may throw - } - return ruleSets; + return new RuleSetLoader(); } } diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetReferenceId.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetReferenceId.java new file mode 100644 index 0000000000..0cb348899a --- /dev/null +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleSetReferenceId.java @@ -0,0 +1,15 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd; + +public class RuleSetReferenceId extends net.sourceforge.pmd.lang.rule.internal.RuleSetReferenceId { + public RuleSetReferenceId(String id) { + super(id); + } + + public RuleSetReferenceId(String id, RuleSetReferenceId externalRuleSetReferenceId) { + super(id, externalRuleSetReferenceId); + } +} diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleViolation.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleViolation.java index dcb3030052..b1d685bf46 100644 --- a/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleViolation.java +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/RuleViolation.java @@ -3,7 +3,9 @@ */ // This class has been taken from 7.0.0-SNAPSHOT -// Changes: getFilename +// Changes: +// - getFilename +// - getRule returns n.s.pmd.rule.Rule or the old n.s.pmd.Rule package net.sourceforge.pmd; @@ -68,7 +70,7 @@ public interface RuleViolation { * * @return The identifying Rule. */ - Rule getRule(); + net.sourceforge.pmd.lang.rule.Rule getRule(); /** * Get the description of this violation. @@ -193,4 +195,9 @@ public interface RuleViolation { default String getFilename() { return getLocation().getFileId().getFileName(); } + + // returns the PMD 6 compatible Rule + default net.sourceforge.pmd.Rule getRule$$bridge() { // SUPPRESS CHECKSTYLE ignore + return getRule(); + } } diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java index 1f71aa8b6c..39f2013699 100644 --- a/pmd-compat6/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java @@ -14,9 +14,9 @@ public class JavaTokenizer extends net.sourceforge.pmd.lang.java.cpd.JavaCpdLexe super(convertLanguageProperties(properties)); } - private static final String IGNORE_LITERALS = "ignore_literals"; - private static final String IGNORE_IDENTIFIERS = "ignore_identifiers"; - private static final String IGNORE_ANNOTATIONS = "ignore_annotations"; + public static final String IGNORE_LITERALS = "ignore_literals"; + public static final String IGNORE_IDENTIFIERS = "ignore_identifiers"; + public static final String IGNORE_ANNOTATIONS = "ignore_annotations"; private static JavaLanguageProperties convertLanguageProperties(Properties properties) { boolean ignoreAnnotations = Boolean.parseBoolean(properties.getProperty(IGNORE_ANNOTATIONS, "false")); diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/cpd/LanguageFactory.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/cpd/LanguageFactory.java new file mode 100644 index 0000000000..09769cd57b --- /dev/null +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/cpd/LanguageFactory.java @@ -0,0 +1,22 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +// This class is here just to make maven-pmd-plugin compile with +// pmd 7.0.0 including this compat6 module. +// It would only be used, if a custom language (other than java, jsp or javascript) +// would be requested. + +package net.sourceforge.pmd.cpd; + +import java.util.Properties; + +public final class LanguageFactory { + private LanguageFactory() { + // utility class + } + + public static Language createLanguage(String name, Properties properties) { + throw new UnsupportedOperationException(); + } +} diff --git a/pmd-compat6/src/main/java/net/sourceforge/pmd/lang/rule/Rule.java b/pmd-compat6/src/main/java/net/sourceforge/pmd/lang/rule/Rule.java new file mode 100644 index 0000000000..a152534e5f --- /dev/null +++ b/pmd-compat6/src/main/java/net/sourceforge/pmd/lang/rule/Rule.java @@ -0,0 +1,11 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +// The class net.sourceforge.pmd.Rule has been moved into sub-package rule +// in 7.0.0-SNAPSHOT. All rules should be interchangeable. + +package net.sourceforge.pmd.lang.rule; + +public interface Rule extends net.sourceforge.pmd.Rule { +} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java b/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java index d908167d69..0b8a17e5a6 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java @@ -27,6 +27,8 @@ import net.sourceforge.pmd.cache.NoopAnalysisCache; import net.sourceforge.pmd.internal.util.ClasspathClassLoader; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; +import net.sourceforge.pmd.lang.rule.RulePriority; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.renderers.Renderer; import net.sourceforge.pmd.renderers.RendererFactory; import net.sourceforge.pmd.util.AssertionUtil; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/PmdAnalysis.java b/pmd-core/src/main/java/net/sourceforge/pmd/PmdAnalysis.java index 6a1b013776..7601624b26 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/PmdAnalysis.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/PmdAnalysis.java @@ -42,6 +42,10 @@ import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.LanguageVersionDiscoverer; import net.sourceforge.pmd.lang.document.FileCollector; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.renderers.Renderer; import net.sourceforge.pmd.reporting.ConfigurableFileNameRenderer; import net.sourceforge.pmd.reporting.FileAnalysisListener; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/Report.java b/pmd-core/src/main/java/net/sourceforge/pmd/Report.java index d579ec05d7..cec38d6246 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/Report.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/Report.java @@ -20,6 +20,7 @@ import net.sourceforge.pmd.annotation.Experimental; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.renderers.AbstractAccumulatingRenderer; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleContext.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleContext.java index 905d38474f..3a787740e0 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleContext.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleContext.java @@ -23,6 +23,7 @@ import net.sourceforge.pmd.lang.document.FileLocation; import net.sourceforge.pmd.lang.document.TextRange2d; import net.sourceforge.pmd.lang.rule.AbstractRule; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.reporting.ViolationDecorator; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleViolation.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleViolation.java index 3b0f1518a7..495c5f1ba8 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleViolation.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleViolation.java @@ -10,6 +10,7 @@ import java.util.Map; import net.sourceforge.pmd.annotation.DeprecatedUntil700; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.FileLocation; +import net.sourceforge.pmd.lang.rule.Rule; /** * A RuleViolation is created by a Rule when it identifies a violation of the diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/ViolationSuppressor.java b/pmd-core/src/main/java/net/sourceforge/pmd/ViolationSuppressor.java index 4d6c0edb30..ee07535ab1 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/ViolationSuppressor.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/ViolationSuppressor.java @@ -15,6 +15,7 @@ import org.checkerframework.checker.nullness.qual.Nullable; import net.sourceforge.pmd.Report.SuppressedViolation; import net.sourceforge.pmd.lang.ast.AstInfo; import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.xpath.XPathVersion; import net.sourceforge.pmd.lang.rule.xpath.internal.DeprecatedAttrLogger; import net.sourceforge.pmd.lang.rule.xpath.internal.SaxonXPathRuleQuery; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java index 7a8b7a9498..ecc073692e 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AbstractAnalysisCache.java @@ -27,7 +27,6 @@ import org.slf4j.LoggerFactory; import net.sourceforge.pmd.PMDVersion; import net.sourceforge.pmd.Report.ProcessingError; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.benchmark.TimeTracker; @@ -38,6 +37,7 @@ import net.sourceforge.pmd.internal.util.IOUtil; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.TextDocument; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.reporting.FileAnalysisListener; /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCache.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCache.java index 2b7e0e1b5a..bfa339c2cf 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCache.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCache.java @@ -8,11 +8,11 @@ import java.io.IOException; import java.util.Collection; import java.util.List; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.document.TextDocument; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCacheListener.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCacheListener.java index 702631244c..b7f52ac4dc 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCacheListener.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/AnalysisCacheListener.java @@ -7,9 +7,9 @@ package net.sourceforge.pmd.cache; import java.io.IOException; import java.util.Collection; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleMapper.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleMapper.java index aa1be53825..f035ecc9e0 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleMapper.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleMapper.java @@ -7,9 +7,9 @@ package net.sourceforge.pmd.cache; import java.util.HashMap; import java.util.Map; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.annotation.InternalApi; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; /** * A mapper from rule class names to rule instances for cached rules. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleViolation.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleViolation.java index f53d56492e..5965a508e8 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleViolation.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/CachedRuleViolation.java @@ -14,12 +14,12 @@ import java.util.Map.Entry; import org.checkerframework.checker.nullness.qual.NonNull; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.FileLocation; import net.sourceforge.pmd.lang.document.TextRange2d; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.util.StringUtil; /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/FileAnalysisCache.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/FileAnalysisCache.java index b1fcc12ed0..5a8437d64f 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/FileAnalysisCache.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/FileAnalysisCache.java @@ -19,7 +19,6 @@ import java.util.Map; import java.util.stream.Collectors; import net.sourceforge.pmd.PMDVersion; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.benchmark.TimeTracker; @@ -27,6 +26,7 @@ import net.sourceforge.pmd.benchmark.TimedOperation; import net.sourceforge.pmd.benchmark.TimedOperationCategory; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; /** * An analysis cache backed by a regular file. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cache/NoopAnalysisCache.java b/pmd-core/src/main/java/net/sourceforge/pmd/cache/NoopAnalysisCache.java index ea8896501d..27e9247b08 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cache/NoopAnalysisCache.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cache/NoopAnalysisCache.java @@ -8,11 +8,11 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.document.TextDocument; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.reporting.FileAnalysisListener; /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageProcessor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageProcessor.java index ccdc14248d..080a42ef6b 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageProcessor.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageProcessor.java @@ -9,10 +9,10 @@ import java.util.List; import org.checkerframework.checker.nullness.qual.NonNull; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.cache.AnalysisCache; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; import net.sourceforge.pmd.util.log.MessageReporter; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersion.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersion.java index d14f147ec9..4867572717 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersion.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersion.java @@ -7,7 +7,7 @@ package net.sourceforge.pmd.lang; import java.util.List; import java.util.Objects; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; /** * Represents a version of a {@link Language}. Language instances provide diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessor.java index fe26c289f6..8e629fb06d 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessor.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessor.java @@ -4,9 +4,9 @@ package net.sourceforge.pmd.lang.impl; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.lang.LanguageProcessor.AnalysisTask; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; /** * @author Romain Pelisse <belaran@gmail.com> diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessor.java index cd0e26dc37..a11a8bb6a0 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessor.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessor.java @@ -12,9 +12,9 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.lang.LanguageProcessor.AnalysisTask; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.util.log.MessageReporter; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/PmdRunnable.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/PmdRunnable.java index 8059d94e2b..b252977569 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/PmdRunnable.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/impl/PmdRunnable.java @@ -10,7 +10,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.benchmark.TimedOperation; @@ -28,6 +27,7 @@ import net.sourceforge.pmd.lang.ast.SemanticErrorReporter; import net.sourceforge.pmd.lang.ast.SemanticException; import net.sourceforge.pmd.lang.document.TextDocument; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.reporting.FileAnalysisListener; /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java index a780a65178..8d0efe44b4 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractDelegateRule.java @@ -7,9 +7,7 @@ package net.sourceforge.pmd.lang.rule; import java.util.List; import java.util.Map; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageProcessor; import net.sourceforge.pmd.lang.LanguageVersion; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java index fd0573ed7b..1999658ee0 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRule.java @@ -15,9 +15,7 @@ import java.util.Set; import org.checkerframework.checker.nullness.qual.NonNull; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.ast.Node; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java index 6697ff7728..5e469c3985 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java @@ -7,7 +7,6 @@ package net.sourceforge.pmd.lang.rule; import java.util.Collections; import java.util.Map; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.document.FileLocation; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/Rule.java similarity index 98% rename from pmd-core/src/main/java/net/sourceforge/pmd/Rule.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/Rule.java index e6ceb8753e..7be90df34e 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/Rule.java @@ -2,17 +2,17 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import java.util.List; import java.util.Optional; import java.util.regex.Pattern; +import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageProcessor; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.rule.RuleTargetSelector; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertyFactory; import net.sourceforge.pmd.properties.PropertySource; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleFactory.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleFactory.java similarity index 98% rename from pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleFactory.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleFactory.java index b3a0a2cbde..c1dd7d709b 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/rules/RuleFactory.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleFactory.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd.rules; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.util.internal.xml.SchemaConstants.CLASS; import static net.sourceforge.pmd.util.internal.xml.SchemaConstants.DELIMITER; @@ -41,14 +41,10 @@ import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.Node; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RulePriority; -import net.sourceforge.pmd.RuleSetReference; -import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.rule.RuleReference; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReference; import net.sourceforge.pmd.properties.ConstraintViolatedException; import net.sourceforge.pmd.properties.NumericConstraints; import net.sourceforge.pmd.properties.PropertyBuilder; @@ -75,9 +71,7 @@ import com.github.oowekyala.ooxml.messages.XmlException; * @author Clément Fournier * @since 6.0.0 */ -@InternalApi -@Deprecated -public class RuleFactory { +class RuleFactory { private final ResourceLoader resourceLoader; private final LanguageRegistry languageRegistry; @@ -85,7 +79,7 @@ public class RuleFactory { /** * @param resourceLoader The resource loader to load the rule from jar */ - public RuleFactory(ResourceLoader resourceLoader, + RuleFactory(ResourceLoader resourceLoader, LanguageRegistry languageRegistry) { this.resourceLoader = resourceLoader; this.languageRegistry = languageRegistry; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RulePriority.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RulePriority.java similarity index 98% rename from pmd-core/src/main/java/net/sourceforge/pmd/RulePriority.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RulePriority.java index 8f8b97996b..2007fcf0aa 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RulePriority.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RulePriority.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; /** * These are the possible Rule priority values. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleReference.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleReference.java index 4572a31ce5..075f88fbf4 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleReference.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleReference.java @@ -12,10 +12,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RulePriority; -import net.sourceforge.pmd.RuleSetReference; import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReference; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.util.StringUtil; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSet.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSet.java similarity index 99% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSet.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSet.java index 8d7e370a4d..095e207224 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSet.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSet.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import java.util.ArrayList; import java.util.Arrays; @@ -26,8 +26,7 @@ import net.sourceforge.pmd.internal.util.PredicateUtil; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.TextFile; -import net.sourceforge.pmd.lang.rule.RuleReference; -import net.sourceforge.pmd.lang.rule.XPathRule; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReference; /** * This class represents a collection of rules along with some optional filter @@ -626,7 +625,8 @@ public class RuleSet implements ChecksumAware { * @return true if the file should be checked, * false otherwise */ - boolean applies(TextFile file) { + @InternalApi + public boolean applies(TextFile file) { return applies(file.getFileId()); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactory.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetFactory.java similarity index 99% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactory.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetFactory.java index b4d2adfe05..8966a76f96 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactory.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetFactory.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.util.CollectionUtil.setOf; import static net.sourceforge.pmd.util.internal.xml.SchemaConstants.DESCRIPTION; @@ -45,10 +45,11 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; -import net.sourceforge.pmd.RuleSet.RuleSetBuilder; +import net.sourceforge.pmd.PMDVersion; import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.rule.RuleReference; -import net.sourceforge.pmd.rules.RuleFactory; +import net.sourceforge.pmd.lang.rule.RuleSet.RuleSetBuilder; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReference; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReferenceId; import net.sourceforge.pmd.util.ResourceLoader; import net.sourceforge.pmd.util.StringUtil; import net.sourceforge.pmd.util.internal.xml.PmdXmlReporter; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetLoadException.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetLoadException.java similarity index 84% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSetLoadException.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetLoadException.java index b83355e1c6..c87ba35118 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetLoadException.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetLoadException.java @@ -2,11 +2,12 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import org.checkerframework.checker.nullness.qual.NonNull; import net.sourceforge.pmd.annotation.InternalApi; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReferenceId; /** * An exception that is thrown when something wrong occurs while @@ -14,7 +15,7 @@ import net.sourceforge.pmd.annotation.InternalApi; * XML is not well-formed, does not respect the ruleset schema, is * not a valid ruleset or is otherwise unparsable. */ -public final class RuleSetLoadException extends RuntimeException { +public class RuleSetLoadException extends RuntimeException { /** Constructors are internal. */ @InternalApi diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetLoader.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetLoader.java similarity index 98% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSetLoader.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetLoader.java index 140da39305..475480d0a1 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetLoader.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetLoader.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -20,9 +20,11 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReferenceId; import net.sourceforge.pmd.util.CollectionUtil; import net.sourceforge.pmd.util.ResourceLoader; import net.sourceforge.pmd.util.log.MessageReporter; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetWriter.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetWriter.java similarity index 99% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSetWriter.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetWriter.java index 6bf03db1a0..66fedc4333 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetWriter.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleSetWriter.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import java.io.OutputStream; import java.util.HashSet; @@ -34,7 +34,7 @@ import org.w3c.dom.Text; import net.sourceforge.pmd.internal.util.IOUtil; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.rule.RuleReference; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReference; import net.sourceforge.pmd.properties.PropertyConstraint; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertySerializer; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleTargetSelector.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleTargetSelector.java index 7e01c2071e..b130e3abdf 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleTargetSelector.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleTargetSelector.java @@ -12,7 +12,6 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.RootNode; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java index e5cc2ea252..7c959b87d2 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java @@ -16,7 +16,6 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.annotation.DeprecatedUntil700; import net.sourceforge.pmd.lang.LanguageProcessor; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleApplicator.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleApplicator.java index 6da5e290d8..6be7178347 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleApplicator.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleApplicator.java @@ -12,9 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.sourceforge.pmd.Report.ProcessingError; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.benchmark.TimedOperation; import net.sourceforge.pmd.benchmark.TimedOperationCategory; @@ -22,6 +20,8 @@ import net.sourceforge.pmd.internal.SystemProps; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.RootNode; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.util.AssertionUtil; import net.sourceforge.pmd.util.StringUtil; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetReference.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReference.java similarity index 86% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSetReference.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReference.java index cdc6e5f77c..89590dd04a 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetReference.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReference.java @@ -2,21 +2,19 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule.internal; import java.util.Collections; import java.util.LinkedHashSet; import java.util.Set; -import net.sourceforge.pmd.annotation.InternalApi; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; /** * This class represents a reference to RuleSet. * - * @deprecated This is part of the internals of the {@link RuleSetLoader}. + *

Note: This is part of the internals of the {@link RuleSetLoader}. */ -@Deprecated -@InternalApi public class RuleSetReference { private final String ruleSetFileName; private final boolean allRules; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetReferenceId.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReferenceId.java similarity index 98% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSetReferenceId.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReferenceId.java index 17aa06f1de..718177de76 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetReferenceId.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReferenceId.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule.internal; import java.io.FileNotFoundException; import java.io.IOException; @@ -15,7 +15,7 @@ import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; -import net.sourceforge.pmd.annotation.InternalApi; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.util.ResourceLoader; /** @@ -92,10 +92,8 @@ import net.sourceforge.pmd.util.ResourceLoader; * to a rulesets and all rules are referenced. To avoid this ambiguity, rulesets should always use the extension ".xml", * e.g. "https://example.org/ruleset.xml/MyRule". * - * @deprecated This is part of the internals of the {@link RuleSetLoader}. + *

Note: This is part of the internals of the {@link RuleSetLoader}. */ -@Deprecated -@InternalApi public class RuleSetReferenceId { // might be a file path, classpath or URI. Can be null. @@ -191,7 +189,7 @@ public class RuleSetReferenceId { } } - @Nullable RuleSetReferenceId getParentRulesetIfThisIsARule() { + public @Nullable RuleSetReferenceId getParentRulesetIfThisIsARule() { if (ruleName == null) { return null; } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSets.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSets.java similarity index 97% rename from pmd-core/src/main/java/net/sourceforge/pmd/RuleSets.java rename to pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSets.java index 5a118bca1a..3dcfe27cf7 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSets.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/internal/RuleSets.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule.internal; import java.util.ArrayList; import java.util.Collection; @@ -12,14 +12,14 @@ import java.util.Iterator; import java.util.List; import java.util.Set; -import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.benchmark.TimedOperation; import net.sourceforge.pmd.benchmark.TimedOperationCategory; import net.sourceforge.pmd.lang.LanguageProcessorRegistry; import net.sourceforge.pmd.lang.ast.RootNode; import net.sourceforge.pmd.lang.document.TextFile; -import net.sourceforge.pmd.lang.rule.internal.RuleApplicator; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.util.log.MessageReporter; @@ -27,11 +27,7 @@ import net.sourceforge.pmd.util.log.MessageReporter; * Grouping of Rules per Language in a RuleSet. * * @author pieter_van_raemdonck - Application Engineers NV/SA - www.ae.be - * - * @deprecated Internal API */ -@Deprecated -@InternalApi public class RuleSets { private final List ruleSets; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/package-info.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/package-info.java new file mode 100644 index 0000000000..a802199683 --- /dev/null +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/package-info.java @@ -0,0 +1,9 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +/** + * Contains {@link net.sourceforge.pmd.lang.rule.Rule} and {@link net.sourceforge.pmd.lang.rule.RuleSet} + * related classes. + */ +package net.sourceforge.pmd.lang.rule; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/xpath/internal/DeprecatedAttrLogger.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/xpath/internal/DeprecatedAttrLogger.java index 5b0a6c3dc8..268684c2b8 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/xpath/internal/DeprecatedAttrLogger.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/xpath/internal/DeprecatedAttrLogger.java @@ -10,7 +10,7 @@ import java.util.concurrent.ConcurrentMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.XPathRule; import net.sourceforge.pmd.lang.rule.xpath.Attribute; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/package-info.java b/pmd-core/src/main/java/net/sourceforge/pmd/package-info.java new file mode 100644 index 0000000000..330b372655 --- /dev/null +++ b/pmd-core/src/main/java/net/sourceforge/pmd/package-info.java @@ -0,0 +1,11 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +/** + * This is the PMD programming mistake detector. + * + *

Use it through {@link net.sourceforge.pmd.PmdAnalysis} and + * {@link net.sourceforge.pmd.cpd.CpdAnalysis}. + */ +package net.sourceforge.pmd; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/package.html b/pmd-core/src/main/java/net/sourceforge/pmd/package.html deleted file mode 100644 index a9ba343fd3..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/package.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - PMD - - -

This is the PMD programming mistake detector. In order to use it, - create a new instance of {@link net.sourceforge.pmd.PMD} and use its - {@link net.sourceforge.pmd.PMD#processFiles} method.

- - diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertyDescriptor.java b/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertyDescriptor.java index 5bd40d48fb..9c71f35369 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertyDescriptor.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertyDescriptor.java @@ -8,8 +8,8 @@ import java.util.Objects; import org.checkerframework.checker.nullness.qual.Nullable; -import net.sourceforge.pmd.RuleSetWriter; import net.sourceforge.pmd.annotation.InternalApi; +import net.sourceforge.pmd.lang.rule.RuleSetWriter; /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertySource.java b/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertySource.java index 6e971510b1..0e0bb08f79 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertySource.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/properties/PropertySource.java @@ -7,6 +7,8 @@ package net.sourceforge.pmd.properties; import java.util.List; import java.util.Map; +import net.sourceforge.pmd.lang.rule.Rule; + /** * Entity that manages a list of properties. Properties are described by @@ -18,7 +20,7 @@ import java.util.Map; * *

Bad configuration of the properties may be reported by {@link #dysfunctionReason()}. * - *

Notable instances of this interface are {@linkplain net.sourceforge.pmd.Rule rules} and + *

Notable instances of this interface are {@linkplain Rule rules} and * {@linkplain net.sourceforge.pmd.renderers.Renderer renderers}. * * @author Brian Remedios diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java index e2f4334206..facf98cac1 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java @@ -12,8 +12,8 @@ import java.util.List; import org.apache.commons.lang3.StringUtils; import net.sourceforge.pmd.PMDVersion; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.properties.PropertyDescriptor; import com.google.gson.Gson; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java index 24e44a4c62..e877f99ad8 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java @@ -16,9 +16,9 @@ import org.apache.commons.lang3.StringUtils; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Report.ConfigurationError; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.document.FileId; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertyFactory; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/ResourceLoader.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/ResourceLoader.java index 1942547e46..4711b01fa0 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/ResourceLoader.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/ResourceLoader.java @@ -17,8 +17,8 @@ import java.util.Objects; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.annotation.InternalApi; +import net.sourceforge.pmd.lang.rule.Rule; /** * @deprecated Is internal API diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/AbstractRuleTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/AbstractRuleTest.java index bc82f3452c..6bcf914536 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/AbstractRuleTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/AbstractRuleTest.java @@ -26,6 +26,7 @@ import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.rule.AbstractRule; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.RulePriority; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertyFactory; import net.sourceforge.pmd.reporting.FileAnalysisListener; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/PmdAnalysisTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/PmdAnalysisTest.java index 8095c7a009..b3a669ecae 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/PmdAnalysisTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/PmdAnalysisTest.java @@ -22,7 +22,6 @@ import org.junit.jupiter.api.Test; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; -import net.sourceforge.pmd.RuleSetTest.MockRule; import net.sourceforge.pmd.lang.Dummy2LanguageModule; import net.sourceforge.pmd.lang.DummyLanguageModule; import net.sourceforge.pmd.lang.Language; @@ -31,6 +30,8 @@ import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.SimpleTestTextFile; import net.sourceforge.pmd.lang.rule.AbstractRule; +import net.sourceforge.pmd.lang.rule.MockRule; +import net.sourceforge.pmd.lang.rule.RuleSet; import net.sourceforge.pmd.renderers.Renderer; import net.sourceforge.pmd.reporting.ReportStats; import net.sourceforge.pmd.util.log.MessageReporter; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/PmdConfigurationTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/PmdConfigurationTest.java index 036a03ee85..9bb0730f4b 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/PmdConfigurationTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/PmdConfigurationTest.java @@ -33,6 +33,7 @@ import org.junit.jupiter.api.io.TempDir; import net.sourceforge.pmd.cache.FileAnalysisCache; import net.sourceforge.pmd.cache.NoopAnalysisCache; import net.sourceforge.pmd.internal.util.ClasspathClassLoader; +import net.sourceforge.pmd.lang.rule.RulePriority; import net.sourceforge.pmd.renderers.CSVRenderer; import net.sourceforge.pmd.renderers.Renderer; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/PmdCoreTestUtils.java b/pmd-core/src/test/java/net/sourceforge/pmd/PmdCoreTestUtils.java index 45af7d3594..865b3631bf 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/PmdCoreTestUtils.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/PmdCoreTestUtils.java @@ -7,6 +7,7 @@ package net.sourceforge.pmd; import net.sourceforge.pmd.lang.Dummy2LanguageModule; import net.sourceforge.pmd.lang.DummyLanguageModule; import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.rule.Rule; /** * Helper methods. 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 b3a10c642d..fb88e6034a 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/ReportTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/ReportTest.java @@ -22,6 +22,7 @@ import net.sourceforge.pmd.lang.document.FileLocation; import net.sourceforge.pmd.lang.document.TextFile; import net.sourceforge.pmd.lang.rule.MockRule; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.renderers.Renderer; import net.sourceforge.pmd.renderers.XMLRenderer; import net.sourceforge.pmd.reporting.FileAnalysisListener; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/ReportTestUtil.java b/pmd-core/src/test/java/net/sourceforge/pmd/ReportTestUtil.java index 752d4d580c..9ba3e4fcb3 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/ReportTestUtil.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/ReportTestUtil.java @@ -10,6 +10,9 @@ import net.sourceforge.pmd.lang.LanguageProcessorRegistry; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.RootNode; import net.sourceforge.pmd.lang.document.TestMessageReporter; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; public final class ReportTestUtil { private ReportTestUtil() { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationComparatorTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationComparatorTest.java index 8e431d4a7f..dee9169082 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationComparatorTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationComparatorTest.java @@ -21,6 +21,7 @@ import net.sourceforge.pmd.lang.document.FileLocation; import net.sourceforge.pmd.lang.document.TextRange2d; import net.sourceforge.pmd.lang.rule.MockRule; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; class RuleViolationComparatorTest { @@ -71,7 +72,7 @@ class RuleViolationComparatorTest { } private RuleViolation createJavaRuleViolation(Rule rule, String fileName, int beginLine, String description, - int beginColumn, int endLine, int endColumn) { + int beginColumn, int endLine, int endColumn) { FileLocation loc = FileLocation.range(FileId.fromPathLikeString(fileName), TextRange2d.range2d(beginLine, beginColumn, endLine, endColumn)); return new ParametricRuleViolation(rule, loc, description, Collections.emptyMap()); } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationTest.java index 278b888d7e..82f2fca175 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/RuleViolationTest.java @@ -21,6 +21,7 @@ import net.sourceforge.pmd.lang.document.FileLocation; import net.sourceforge.pmd.lang.document.TextRange2d; import net.sourceforge.pmd.lang.rule.MockRule; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; class RuleViolationTest { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java index 171219ad1f..1e13c79676 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/cache/FileAnalysisCacheTest.java @@ -36,7 +36,6 @@ import org.junit.jupiter.api.io.TempDir; import org.mockito.Mockito; import net.sourceforge.pmd.PmdCoreTestUtils; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageVersion; @@ -47,6 +46,8 @@ import net.sourceforge.pmd.lang.document.TextFile; import net.sourceforge.pmd.lang.document.TextFileContent; import net.sourceforge.pmd.lang.document.TextRange2d; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; import net.sourceforge.pmd.reporting.FileAnalysisListener; class FileAnalysisCacheTest { @@ -123,7 +124,7 @@ class FileAnalysisCacheTest { final RuleViolation rv = mock(RuleViolation.class); final TextRange2d textLocation = TextRange2d.range2d(1, 2, 3, 4); when(rv.getLocation()).thenReturn(FileLocation.range(sourceFile.getFileId(), textLocation)); - final net.sourceforge.pmd.Rule rule = mock(net.sourceforge.pmd.Rule.class, Mockito.RETURNS_SMART_NULLS); + final Rule rule = mock(Rule.class, Mockito.RETURNS_SMART_NULLS); when(rule.getLanguage()).thenReturn(mock(Language.class)); when(rv.getRule()).thenReturn(rule); @@ -153,7 +154,7 @@ class FileAnalysisCacheTest { // id is saved into the cache file, and the cache implementation updates the // display name of the violations to match their current display name. - final net.sourceforge.pmd.Rule rule = mock(net.sourceforge.pmd.Rule.class, Mockito.RETURNS_SMART_NULLS); + final Rule rule = mock(Rule.class, Mockito.RETURNS_SMART_NULLS); when(rule.getLanguage()).thenReturn(mock(Language.class)); final TextRange2d textLocation = TextRange2d.range2d(1, 2, 3, 4); @@ -281,7 +282,7 @@ class FileAnalysisCacheTest { // Make sure the auxclasspath file is not empty Files.write(classpathFile.toPath(), "some text".getBytes()); - final net.sourceforge.pmd.Rule r = mock(net.sourceforge.pmd.Rule.class); + final Rule r = mock(Rule.class); when(r.getLanguage()).thenReturn(mock(Language.class)); when(rs.getAllRules()).thenReturn(Collections.singleton(r)); reloadedCache.checkValidity(rs, cl, Collections.emptySet()); @@ -297,7 +298,7 @@ class FileAnalysisCacheTest { final File classpathFile = Files.createTempFile(tempFolder, null, "foo.class").toFile(); when(cl.getURLs()).thenReturn(new URL[] { classpathFile.toURI().toURL(), }); - final net.sourceforge.pmd.Rule r = mock(net.sourceforge.pmd.Rule.class); + final Rule r = mock(Rule.class); when(r.getLanguage()).thenReturn(mock(Language.class)); when(rs.getAllRules()).thenReturn(Collections.singleton(r)); diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/AbstractPMDProcessorTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/AbstractPMDProcessorTest.java index ca52a03e65..f61fa3351a 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/AbstractPMDProcessorTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/AbstractPMDProcessorTest.java @@ -17,7 +17,6 @@ import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.PmdAnalysis; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.DummyLanguageModule; import net.sourceforge.pmd.lang.LanguageProcessor; @@ -26,6 +25,7 @@ import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.TextFile; import net.sourceforge.pmd.lang.rule.AbstractRule; +import net.sourceforge.pmd.lang.rule.RuleSet; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; import net.sourceforge.pmd.util.log.MessageReporter; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessorTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessorTest.java index 755003142b..0a3f628f34 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessorTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MonoThreadProcessorTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; import net.sourceforge.pmd.PmdAnalysis; -import net.sourceforge.pmd.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSet; class MonoThreadProcessorTest extends AbstractPMDProcessorTest { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessorTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessorTest.java index 12e381fac1..62120608e3 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessorTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/impl/MultiThreadProcessorTest.java @@ -15,9 +15,9 @@ import org.mockito.Mockito; import net.sourceforge.pmd.PmdAnalysis; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.rule.AbstractRule; +import net.sourceforge.pmd.lang.rule.RuleSet; class MultiThreadProcessorTest extends AbstractPMDProcessorTest { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRule.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRule.java index e3b760674d..f100eea85b 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRule.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRule.java @@ -7,7 +7,7 @@ package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.properties.NumericConstraints.inRange; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RulePriority; +import net.sourceforge.pmd.lang.DummyLanguageModule; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertyFactory; @@ -17,7 +17,7 @@ import net.sourceforge.pmd.properties.PropertyFactory; * This is a Rule implementation which can be used in scenarios where an actual * functional Rule is not needed. For example, during unit testing, or as an * editable surrogate used by IDE plugins. The Language of this Rule defaults to - * Java. + * Dummy. */ public class MockRule extends MockRuleWithNoProperties { @@ -28,11 +28,13 @@ public class MockRule extends MockRuleWithNoProperties { public MockRule() { super(); + setLanguage(DummyLanguageModule.getInstance()); definePropertyDescriptor(PROP); } public MockRule(String name, String description, String message, String ruleSetName, RulePriority priority) { super(name, description, message, ruleSetName, priority); + setLanguage(DummyLanguageModule.getInstance()); definePropertyDescriptor(PROP); } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRuleWithNoProperties.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRuleWithNoProperties.java index ec4f081756..6ea3e7e95f 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRuleWithNoProperties.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/MockRuleWithNoProperties.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.rule; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.lang.ast.Node; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleReferenceTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleReferenceTest.java similarity index 98% rename from pmd-core/src/test/java/net/sourceforge/pmd/RuleReferenceTest.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleReferenceTest.java index 038481b979..703ff69e6d 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleReferenceTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleReferenceTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.PmdCoreTestUtils.dummyLanguage; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -15,8 +15,7 @@ import org.junit.jupiter.api.Test; import net.sourceforge.pmd.lang.Dummy2LanguageModule; import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.rule.MockRule; -import net.sourceforge.pmd.lang.rule.RuleReference; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReference; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertyFactory; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryDuplicatedRuleLoggingTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryDuplicatedRuleLoggingTest.java similarity index 98% rename from pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryDuplicatedRuleLoggingTest.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryDuplicatedRuleLoggingTest.java index 71696847e0..277624acc7 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryDuplicatedRuleLoggingTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryDuplicatedRuleLoggingTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryMessagesTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryMessagesTest.java similarity index 98% rename from pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryMessagesTest.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryMessagesTest.java index ed094cac91..5a47249906 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryMessagesTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryMessagesTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.util.CollectionUtil.listOf; import static org.hamcrest.MatcherAssert.assertThat; @@ -11,7 +11,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.lang.rule.MockRule; import net.sourceforge.pmd.util.internal.xml.SchemaConstants; import net.sourceforge.pmd.util.internal.xml.XmlErrorMessages; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryTest.java similarity index 97% rename from pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryTest.java index 36f4e6843f..bcda455453 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetFactoryTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.PmdCoreTestUtils.dummyLanguage; import static net.sourceforge.pmd.util.CollectionUtil.listOf; @@ -25,8 +25,6 @@ import java.util.Set; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import net.sourceforge.pmd.lang.rule.MockRule; -import net.sourceforge.pmd.lang.rule.RuleReference; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.util.ResourceLoader; import net.sourceforge.pmd.util.internal.xml.SchemaConstants; @@ -34,29 +32,31 @@ import net.sourceforge.pmd.util.internal.xml.SchemaConstants; import com.github.stefanbirkner.systemlambda.SystemLambda; class RuleSetFactoryTest extends RulesetFactoryTestBase { + private static final String TEST_RULESET_1 = "net/sourceforge/pmd/lang/rule/TestRuleset1.xml"; + private static final String REFERENCE_RULESET = "net/sourceforge/pmd/lang/rule/reference-ruleset.xml"; @Test void testRuleSetFileName() { RuleSet rs = new RuleSetLoader().loadFromString("dummyRuleset.xml", EMPTY_RULESET); assertEquals("dummyRuleset.xml", rs.getFileName()); - rs = new RuleSetLoader().loadFromResource("net/sourceforge/pmd/TestRuleset1.xml"); - assertEquals(rs.getFileName(), "net/sourceforge/pmd/TestRuleset1.xml", "wrong RuleSet file name"); + rs = new RuleSetLoader().loadFromResource(TEST_RULESET_1); + assertEquals(rs.getFileName(), TEST_RULESET_1, "wrong RuleSet file name"); } @Test void testRefs() { - RuleSet rs = new RuleSetLoader().loadFromResource("net/sourceforge/pmd/TestRuleset1.xml"); + RuleSet rs = new RuleSetLoader().loadFromResource(TEST_RULESET_1); assertNotNull(rs.getRuleByName("TestRuleRef")); } @Test void testExtendedReferences() throws Exception { - InputStream in = new ResourceLoader().loadClassPathResourceAsStream("net/sourceforge/pmd/rulesets/reference-ruleset.xml"); + InputStream in = new ResourceLoader().loadClassPathResourceAsStream(REFERENCE_RULESET); assertNotNull(in, "Test ruleset not found - can't continue with test!"); in.close(); - RuleSet rs = new RuleSetLoader().loadFromResource("net/sourceforge/pmd/rulesets/reference-ruleset.xml"); + RuleSet rs = new RuleSetLoader().loadFromResource(REFERENCE_RULESET); // added by referencing a complete ruleset (TestRuleset1.xml) assertNotNull(rs.getRuleByName("MockRule1")); assertNotNull(rs.getRuleByName("MockRule2")); @@ -780,7 +780,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { void testExternalReferences() { RuleSet rs = loadRuleSet( rulesetXml( - ruleRef("net/sourceforge/pmd/external-reference-ruleset.xml/MockRule") + ruleRef("net/sourceforge/pmd/lang/rule/external-reference-ruleset.xml/MockRule") ) ); assertEquals(1, rs.size()); @@ -857,7 +857,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { @Test void testWrongRuleNameReferenced() { assertCannotParse(rulesetXml( - ruleRef("net/sourceforge/pmd/TestRuleset1.xml/ThisRuleDoesNotExist") + ruleRef("net/sourceforge/pmd/lang/rule/TestRuleset1.xml/ThisRuleDoesNotExist") )); } @@ -895,7 +895,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + " xsi:schemaLocation=\"http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd\">\n" + " Custom ruleset for tests\n" - + " \n" + + " \n" + " \n" + " \n" + "\n"); assertEquals(4, ruleset.getRules().size()); @@ -982,7 +982,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { + " testdesc\n" + " \n" + + " ref=\"net/sourceforge/pmd/lang/rule/TestRuleset1.xml/MockRule1\" message=\"TestMessageOverride\"> \n" + "\n" + " \n" + ""; @@ -992,14 +992,14 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { + "\n" + " testdesc\n" + " \n" + + " ref=\"net/sourceforge/pmd/lang/rule/TestRuleset1.xml/FooMockRule1\"> \n" + " \n" + ""; private static final String REF_OVERRIDE_ORIGINAL_NAME_ONE_ELEM = "\n" + "\n" + " testdesc\n" - + " \n" + + " \n" + "\n" + ""; @@ -1007,7 +1007,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { + "\n" + " testdesc\n" + " \n" @@ -1027,7 +1027,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { + "\n" + " testdesc\n" + " \n" @@ -1073,7 +1073,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { + "\n" + + "ref=\"net/sourceforge/pmd/lang/rule/TestRuleset1.xml/MockRule1\"/>\n" + " \n" + ""; @@ -1083,7 +1083,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { + "\n" + + "ref=\"net/sourceforge/pmd/lang/rule/TestRuleset2.xml/TestRule\"/>\n" + " 2 \n" + "\n" + " 1 \n" @@ -1143,7 +1143,7 @@ class RuleSetFactoryTest extends RulesetFactoryTestBase { // Note: Update this RuleSet name to a different RuleSet with deprecated // Rules when the Rules are finally removed. - private static final String DEPRECATED_RULE_RULESET_NAME = "net/sourceforge/pmd/TestRuleset1.xml"; + private static final String DEPRECATED_RULE_RULESET_NAME = "net/sourceforge/pmd/lang/rule/TestRuleset1.xml"; // Note: Update this Rule name to a different deprecated Rule when the one // listed here is finally removed. diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetTest.java similarity index 96% rename from pmd-core/src/test/java/net/sourceforge/pmd/RuleSetTest.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetTest.java index ca94ab2f1f..6ae48c1964 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.PmdCoreTestUtils.dummyLanguage; import static net.sourceforge.pmd.PmdCoreTestUtils.dummyLanguage2; @@ -40,15 +40,18 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import net.sourceforge.pmd.DummyParsingHelper; +import net.sourceforge.pmd.FooRule; +import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Report.ProcessingError; -import net.sourceforge.pmd.RuleSet.RuleSetBuilder; -import net.sourceforge.pmd.lang.DummyLanguageModule; +import net.sourceforge.pmd.RuleContext; +import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.ast.DummyNode.DummyRootNode; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.RootNode; import net.sourceforge.pmd.lang.document.TextFile; -import net.sourceforge.pmd.lang.rule.RuleReference; -import net.sourceforge.pmd.lang.rule.RuleTargetSelector; +import net.sourceforge.pmd.lang.rule.RuleSet.RuleSetBuilder; +import net.sourceforge.pmd.lang.rule.internal.RuleSets; class RuleSetTest { @@ -572,25 +575,4 @@ class RuleSetTest { assertThat(report.getViolations(), hasSize(1)); } - - - static class MockRule extends net.sourceforge.pmd.lang.rule.MockRule { - - MockRule() { - super(); - setLanguage(DummyLanguageModule.getInstance()); - } - - MockRule(String name, String description, String message, String ruleSetName, RulePriority priority) { - super(name, description, message, ruleSetName, priority); - setLanguage(DummyLanguageModule.getInstance()); - } - - MockRule(String name, String description, String message, String ruleSetName) { - super(name, description, message, ruleSetName); - setLanguage(DummyLanguageModule.getInstance()); - } - - } - } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetWriterTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetWriterTest.java similarity index 96% rename from pmd-core/src/test/java/net/sourceforge/pmd/RuleSetWriterTest.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetWriterTest.java index b762837b10..916cf559b4 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetWriterTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RuleSetWriterTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.util.CollectionUtil.mapOf; import static org.hamcrest.MatcherAssert.assertThat; @@ -18,9 +18,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.RuleSet.RuleSetBuilder; -import net.sourceforge.pmd.lang.rule.RuleReference; -import net.sourceforge.pmd.lang.rule.XPathRule; +import net.sourceforge.pmd.lang.rule.RuleSet.RuleSetBuilder; +import net.sourceforge.pmd.lang.rule.internal.RuleSetReference; import net.sourceforge.pmd.util.internal.xml.SchemaConstants; /** @@ -59,7 +58,7 @@ class RuleSetWriterTest extends RulesetFactoryTestBase { */ @Test void testWrite() throws Exception { - RuleSet braces = new RuleSetLoader().loadFromResource("net/sourceforge/pmd/TestRuleset1.xml"); + RuleSet braces = new RuleSetLoader().loadFromResource("net/sourceforge/pmd/lang/rule/TestRuleset1.xml"); RuleSet ruleSet = new RuleSetBuilder(new Random().nextLong()) .withName("ruleset") .withDescription("ruleset description") diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RulesetFactoryTestBase.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RulesetFactoryTestBase.java similarity index 98% rename from pmd-core/src/test/java/net/sourceforge/pmd/RulesetFactoryTestBase.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RulesetFactoryTestBase.java index 200ddbc6a7..2cd6ad5de7 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RulesetFactoryTestBase.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/RulesetFactoryTestBase.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static net.sourceforge.pmd.util.CollectionUtil.buildMap; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -27,6 +27,8 @@ import org.mockito.verification.VerificationMode; import org.slf4j.LoggerFactory; import org.slf4j.event.Level; +import net.sourceforge.pmd.PMDConfiguration; +import net.sourceforge.pmd.PmdAnalysis; import net.sourceforge.pmd.lang.DummyLanguageModule; import net.sourceforge.pmd.util.internal.xml.SchemaConstant; import net.sourceforge.pmd.util.internal.xml.SchemaConstants; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/XPathRuleTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/XPathRuleTest.java index ccbb20cdb2..5bc0803271 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/XPathRuleTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/XPathRuleTest.java @@ -138,7 +138,7 @@ class XPathRuleTest { assertThat(report.getViolations(), hasSize(1)); } - Report executeRule(net.sourceforge.pmd.Rule rule, DummyNode node) { + Report executeRule(Rule rule, DummyNode node) { return getReportForRuleApply(rule, node); } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetReferenceIdTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReferenceIdTest.java similarity index 99% rename from pmd-core/src/test/java/net/sourceforge/pmd/RuleSetReferenceIdTest.java rename to pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReferenceIdTest.java index 80275b0cae..ca3c0ea388 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetReferenceIdTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/rule/internal/RuleSetReferenceIdTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule.internal; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/processor/PmdRunnableTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/processor/PmdRunnableTest.java index 93da9002b1..4ce3c2e1f1 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/processor/PmdRunnableTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/processor/PmdRunnableTest.java @@ -28,9 +28,7 @@ import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.PmdAnalysis; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Report.ProcessingError; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.internal.SystemProps; import net.sourceforge.pmd.lang.DummyLanguageModule; import net.sourceforge.pmd.lang.LanguageRegistry; @@ -41,6 +39,8 @@ import net.sourceforge.pmd.lang.ast.RootNode; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; import net.sourceforge.pmd.lang.rule.AbstractRule; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; import net.sourceforge.pmd.util.ContextedAssertionError; import net.sourceforge.pmd.util.log.MessageReporter; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/properties/PropertySyntaxTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/properties/PropertySyntaxTest.java index ae266e5a65..a0ce4f10fd 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/properties/PropertySyntaxTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/properties/PropertySyntaxTest.java @@ -13,8 +13,8 @@ import java.util.ArrayList; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RulesetFactoryTestBase; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RulesetFactoryTestBase; import net.sourceforge.pmd.util.internal.xml.XmlErrorMessages; /** diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTest.java index 411be7336a..1b754e5305 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTest.java @@ -25,8 +25,6 @@ import net.sourceforge.pmd.FooRule; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Report.ConfigurationError; import net.sourceforge.pmd.Report.ProcessingError; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.RuleWithProperties; import net.sourceforge.pmd.internal.util.IOUtil; @@ -37,6 +35,8 @@ import net.sourceforge.pmd.lang.document.FileLocation; import net.sourceforge.pmd.lang.document.TextFile; import net.sourceforge.pmd.lang.document.TextRange2d; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RulePriority; import net.sourceforge.pmd.reporting.FileAnalysisListener; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SarifRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SarifRendererTest.java index a3b786f8a0..29380c4fff 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SarifRendererTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/SarifRendererTest.java @@ -12,7 +12,7 @@ import java.util.function.Consumer; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.reporting.FileAnalysisListener; import com.github.stefanbirkner.systemlambda.SystemLambda; diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/YAHTMLRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/YAHTMLRendererTest.java index 414983ad92..df0c8d7e51 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/YAHTMLRendererTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/YAHTMLRendererTest.java @@ -22,11 +22,11 @@ import org.junit.jupiter.api.io.TempDir; import net.sourceforge.pmd.FooRule; import net.sourceforge.pmd.Report.ConfigurationError; import net.sourceforge.pmd.Report.ProcessingError; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.internal.util.IOUtil; import net.sourceforge.pmd.lang.document.FileLocation; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.util.CollectionUtil; class YAHTMLRendererTest extends AbstractRendererTest { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/reporting/GlobalAnalysisListenerTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/reporting/GlobalAnalysisListenerTest.java index 71e6fedfc9..694716b5b4 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/reporting/GlobalAnalysisListenerTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/reporting/GlobalAnalysisListenerTest.java @@ -21,14 +21,14 @@ import org.mockito.Mockito; import net.sourceforge.pmd.FooRule; import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.PmdAnalysis; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.cache.AnalysisCache; import net.sourceforge.pmd.cache.NoopAnalysisCache; import net.sourceforge.pmd.lang.ast.FileAnalysisException; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.document.FileId; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; class GlobalAnalysisListenerTest { diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset1.xml b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset1.xml similarity index 87% rename from pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset1.xml rename to pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset1.xml index 8055258242..b5090aaa8a 100644 --- a/pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset1.xml +++ b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset1.xml @@ -3,8 +3,8 @@ xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd"> - Ruleset used by test net.sourceforge.pmd.RuleSetWriter and RuleSetFactoryTest - + Ruleset used by test net.sourceforge.pmd.lang.rule.RuleSetWriter and RuleSetFactoryTest + @@ -30,7 +30,7 @@ Just for test - + - + diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset2.xml b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset2.xml similarity index 100% rename from pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset2.xml rename to pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset2.xml diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset3.xml b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset3.xml similarity index 100% rename from pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset3.xml rename to pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset3.xml diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset4.xml b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset4.xml similarity index 100% rename from pmd-core/src/test/resources/net/sourceforge/pmd/TestRuleset4.xml rename to pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/TestRuleset4.xml diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/external-reference-ruleset.xml b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/external-reference-ruleset.xml similarity index 87% rename from pmd-core/src/test/resources/net/sourceforge/pmd/external-reference-ruleset.xml rename to pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/external-reference-ruleset.xml index 6515a57737..c5161219e7 100644 --- a/pmd-core/src/test/resources/net/sourceforge/pmd/external-reference-ruleset.xml +++ b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/external-reference-ruleset.xml @@ -3,8 +3,8 @@ xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd"> - Ruleset used by test net.sourceforge.pmd.RuleSetFactoryTest - + Ruleset used by test net.sourceforge.pmd.lang.rule.RuleSetFactoryTest + diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/rulesets/reference-ruleset.xml b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/reference-ruleset.xml similarity index 63% rename from pmd-core/src/test/resources/net/sourceforge/pmd/rulesets/reference-ruleset.xml rename to pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/reference-ruleset.xml index aff963c994..7c9e7463d5 100644 --- a/pmd-core/src/test/resources/net/sourceforge/pmd/rulesets/reference-ruleset.xml +++ b/pmd-core/src/test/resources/net/sourceforge/pmd/lang/rule/reference-ruleset.xml @@ -5,45 +5,45 @@ xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd"> - This ruleset checks my code for bad stuff + This ruleset checks my code for bad stuff. Used by net.sourceforge.pmd.lang.rule.RuleSetFactoryTest. - + - + 2 - + - + - + - + 5 - + 2 - \ No newline at end of file + diff --git a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/GenerateRuleDocsCmd.java b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/GenerateRuleDocsCmd.java index ebe55f4abd..256e605904 100644 --- a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/GenerateRuleDocsCmd.java +++ b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/GenerateRuleDocsCmd.java @@ -17,9 +17,9 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSetLoader; import net.sourceforge.pmd.internal.util.IOUtil; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; public final class GenerateRuleDocsCmd { diff --git a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleDocGenerator.java b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleDocGenerator.java index 10edb13cc5..4fea52673a 100644 --- a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleDocGenerator.java +++ b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleDocGenerator.java @@ -32,14 +32,14 @@ import org.apache.commons.text.StringEscapeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSetLoadException; -import net.sourceforge.pmd.RuleSetLoader; import net.sourceforge.pmd.internal.util.IOUtil; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.RuleReference; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoadException; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.lang.rule.XPathRule; import net.sourceforge.pmd.properties.PropertyDescriptor; diff --git a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleSetUtils.java b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleSetUtils.java index f581ae6776..156946cfbc 100644 --- a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleSetUtils.java +++ b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/RuleSetUtils.java @@ -10,10 +10,10 @@ import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.SystemUtils; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.internal.util.IOUtil; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.RuleReference; +import net.sourceforge.pmd.lang.rule.RuleSet; public final class RuleSetUtils { diff --git a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/SidebarGenerator.java b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/SidebarGenerator.java index 625302fed5..0982f7fb5b 100644 --- a/pmd-doc/src/main/java/net/sourceforge/pmd/docs/SidebarGenerator.java +++ b/pmd-doc/src/main/java/net/sourceforge/pmd/docs/SidebarGenerator.java @@ -25,8 +25,8 @@ import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.representer.Representer; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.lang.Language; +import net.sourceforge.pmd.lang.rule.RuleSet; public class SidebarGenerator { private static final String SIDEBAR_YML = "docs/_data/sidebars/pmd_sidebar.yml"; diff --git a/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleDocGeneratorTest.java b/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleDocGeneratorTest.java index 69665c54b5..b593280141 100644 --- a/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleDocGeneratorTest.java +++ b/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleDocGeneratorTest.java @@ -19,10 +19,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSetLoader; import net.sourceforge.pmd.docs.MockedFileWriter.FileEntry; import net.sourceforge.pmd.internal.util.IOUtil; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; class RuleDocGeneratorTest { diff --git a/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleSetResolverTest.java b/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleSetResolverTest.java index a42b4d1dd3..bd3ee01d54 100644 --- a/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleSetResolverTest.java +++ b/pmd-doc/src/test/java/net/sourceforge/pmd/docs/RuleSetResolverTest.java @@ -16,8 +16,8 @@ import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; import net.sourceforge.pmd.PMDConfiguration; -import net.sourceforge.pmd.RuleSetLoader; import net.sourceforge.pmd.internal.util.IOUtil; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.util.log.internal.SimpleMessageReporter; class RuleSetResolverTest { diff --git a/pmd-doc/src/test/java/net/sourceforge/pmd/docs/SidebarGeneratorTest.java b/pmd-doc/src/test/java/net/sourceforge/pmd/docs/SidebarGeneratorTest.java index 8fe3a7d5ef..68ce308d5b 100644 --- a/pmd-doc/src/test/java/net/sourceforge/pmd/docs/SidebarGeneratorTest.java +++ b/pmd-doc/src/test/java/net/sourceforge/pmd/docs/SidebarGeneratorTest.java @@ -26,10 +26,10 @@ import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.representer.Representer; -import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.internal.util.IOUtil; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; +import net.sourceforge.pmd.lang.rule.RuleSet; class SidebarGeneratorTest { private MockedFileWriter writer = new MockedFileWriter(); diff --git a/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/HtmlJavaRuleTest.java b/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/HtmlJavaRuleTest.java index 9132774ed7..33c802b857 100644 --- a/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/HtmlJavaRuleTest.java +++ b/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/HtmlJavaRuleTest.java @@ -11,12 +11,12 @@ import java.util.List; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.html.ast.ASTHtmlElement; import net.sourceforge.pmd.lang.html.ast.HtmlParsingHelper; import net.sourceforge.pmd.lang.html.rule.AbstractHtmlRule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.xpath.Attribute; class HtmlJavaRuleTest { diff --git a/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/RuleSetFactoryTest.java b/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/RuleSetFactoryTest.java index 7205edf858..f3255130e1 100644 --- a/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/RuleSetFactoryTest.java +++ b/pmd-html/src/test/java/net/sourceforge/pmd/lang/html/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.html; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; class RuleSetFactoryTest extends AbstractRuleSetFactoryTest { // no additional tests yet diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/AnnotationSuppressionUtil.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/AnnotationSuppressionUtil.java index 4de993d333..abb7956f7a 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/AnnotationSuppressionUtil.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/AnnotationSuppressionUtil.java @@ -16,7 +16,6 @@ import org.checkerframework.checker.nullness.qual.Nullable; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Report.SuppressedViolation; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.ViolationSuppressor; import net.sourceforge.pmd.lang.ast.Node; @@ -32,6 +31,7 @@ import net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration; import net.sourceforge.pmd.lang.java.ast.Annotatable; import net.sourceforge.pmd.lang.java.rule.errorprone.ImplicitSwitchFallThroughRule; import net.sourceforge.pmd.lang.java.types.TypeTestUtil; +import net.sourceforge.pmd.lang.rule.Rule; /** * Helper methods to suppress violations based on annotations. diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/ExcludeLinesTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/ExcludeLinesTest.java index 1c3fe4fbc3..c028a4c87d 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/ExcludeLinesTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/ExcludeLinesTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.Test; import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTVariableId; import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule; +import net.sourceforge.pmd.lang.rule.Rule; class ExcludeLinesTest extends BaseParserTest { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/ReportTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/ReportTest.java index aa2c5ffa50..b55f2fd1bb 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/ReportTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/ReportTest.java @@ -14,6 +14,7 @@ import java.util.regex.Pattern; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.lang.java.JavaParsingHelper; +import net.sourceforge.pmd.lang.rule.Rule; class ReportTest { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/QuickstartRulesetTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/QuickstartRulesetTest.java index 67b2266e23..6f3d7e4f37 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/QuickstartRulesetTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/QuickstartRulesetTest.java @@ -9,9 +9,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSetLoader; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import com.github.stefanbirkner.systemlambda.SystemLambda; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/RuleSetFactoryTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/RuleSetFactoryTest.java index d6cafa265a..eac601291e 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/RuleSetFactoryTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.java; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; /** * Test java's rulesets diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java index e28317b6d9..17360830f4 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java @@ -13,13 +13,13 @@ import java.util.List; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.LanguageProcessor; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.JavaParsingHelper; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.JavaNode; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.XPathRule; import net.sourceforge.pmd.lang.rule.xpath.XPathVersion; import net.sourceforge.pmd.lang.rule.xpath.impl.XPathHandler; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/CommentRequiredTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/CommentRequiredTest.java index 06c910c7c3..4c026b25c3 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/CommentRequiredTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/CommentRequiredTest.java @@ -12,7 +12,7 @@ import java.util.List; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.testframework.PmdRuleTst; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/BaseXPathFunctionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/BaseXPathFunctionTest.java index 037cb92c30..2645a7a2f2 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/BaseXPathFunctionTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/BaseXPathFunctionTest.java @@ -14,12 +14,12 @@ import java.util.function.Consumer; import org.checkerframework.checker.nullness.qual.NonNull; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.lang.LanguageProcessor; import net.sourceforge.pmd.lang.ast.FileAnalysisException; import net.sourceforge.pmd.lang.ast.test.TestUtilsKt; import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.JavaLanguageModule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.XPathRule; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException.Phase; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/GetModifiersFunctionsTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/GetModifiersFunctionsTest.java index da6ec72aed..c1dcf336dc 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/GetModifiersFunctionsTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/GetModifiersFunctionsTest.java @@ -10,7 +10,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException.Phase; /** diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/HasAnnotationXPathTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/HasAnnotationXPathTest.java index 7d017f68e6..db036ca3b0 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/HasAnnotationXPathTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/HasAnnotationXPathTest.java @@ -6,7 +6,7 @@ package net.sourceforge.pmd.lang.java.rule.xpath.internal; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; /** * @author Clément Fournier diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/MatchesSignatureXPathTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/MatchesSignatureXPathTest.java index 62d4610315..584d80fbbd 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/MatchesSignatureXPathTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/MatchesSignatureXPathTest.java @@ -9,8 +9,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.lang.LanguageProcessor; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException.Phase; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/NodeIsFunctionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/NodeIsFunctionTest.java index ea79632da6..8643d4117b 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/NodeIsFunctionTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/NodeIsFunctionTest.java @@ -10,7 +10,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException.Phase; /** diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/TypeIsFunctionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/TypeIsFunctionTest.java index 7011e9d175..4e8977dc64 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/TypeIsFunctionTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/TypeIsFunctionTest.java @@ -6,7 +6,7 @@ package net.sourceforge.pmd.lang.java.rule.xpath.internal; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; /** * @author Clément Fournier diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/XPathMetricFunctionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/XPathMetricFunctionTest.java index f8bbd6d265..0e4584ed9f 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/XPathMetricFunctionTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/xpath/internal/XPathMetricFunctionTest.java @@ -9,7 +9,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.jupiter.api.Test; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; /** * @author Clément Fournier diff --git a/pmd-javascript/src/test/java/net/sourceforge/pmd/ReportTest.java b/pmd-javascript/src/test/java/net/sourceforge/pmd/ReportTest.java index fbd6235d53..a1d597a741 100644 --- a/pmd-javascript/src/test/java/net/sourceforge/pmd/ReportTest.java +++ b/pmd-javascript/src/test/java/net/sourceforge/pmd/ReportTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.Test; import net.sourceforge.pmd.lang.ecmascript.ast.ASTFunctionNode; import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserTestBase; import net.sourceforge.pmd.lang.ecmascript.rule.AbstractEcmascriptRule; +import net.sourceforge.pmd.lang.rule.Rule; class ReportTest extends EcmascriptParserTestBase { diff --git a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/RuleSetFactoryTest.java b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/RuleSetFactoryTest.java index 551b583deb..32b1211d9d 100644 --- a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/RuleSetFactoryTest.java +++ b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.ecmascript; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; /** * Test javascript's rulesets diff --git a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/RuleSetFactoryTest.java b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/RuleSetFactoryTest.java index 80b8ecbf7a..531bde227b 100644 --- a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/RuleSetFactoryTest.java +++ b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.jsp; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; /** * Test jsp's rulesets diff --git a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java index 0fed9e17ae..c560a291d5 100644 --- a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java +++ b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java @@ -9,8 +9,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; class XPathJspRuleTest extends AbstractJspNodesTst { diff --git a/pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/RuleSetFactoryTest.java b/pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/RuleSetFactoryTest.java index 9655674f8a..190b8401ef 100644 --- a/pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/RuleSetFactoryTest.java +++ b/pmd-kotlin/src/test/java/net/sourceforge/pmd/lang/kotlin/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.kotlin; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; class RuleSetFactoryTest extends AbstractRuleSetFactoryTest { // no additional tests yet diff --git a/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseParsingHelper.kt b/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseParsingHelper.kt index 46c3d9b272..5b285b7f66 100644 --- a/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseParsingHelper.kt +++ b/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseParsingHelper.kt @@ -16,6 +16,8 @@ import net.sourceforge.pmd.lang.document.TextDocument import net.sourceforge.pmd.lang.rule.XPathRule import net.sourceforge.pmd.lang.rule.xpath.XPathVersion import net.sourceforge.pmd.reporting.GlobalAnalysisListener +import net.sourceforge.pmd.lang.rule.Rule +import net.sourceforge.pmd.lang.rule.RuleSet import java.io.InputStream import java.nio.charset.StandardCharsets import java.nio.file.Files diff --git a/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/RuleSetFactoryTest.java b/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/RuleSetFactoryTest.java index d515ff6597..53fc1834d1 100644 --- a/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/RuleSetFactoryTest.java +++ b/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.modelica; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; class RuleSetFactoryTest extends AbstractRuleSetFactoryTest { // no additional tests yet diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/RuleSetFactoryTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/RuleSetFactoryTest.java index 2fa3b962eb..fbf61181a6 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/RuleSetFactoryTest.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.plsql; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; /** * Test plsql's rulesets diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateToCharTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateToCharTest.java index 430413de15..044a86be62 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateToCharTest.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateToCharTest.java @@ -7,7 +7,7 @@ package net.sourceforge.pmd.lang.plsql.rule.errorprone; import java.util.Collections; import java.util.List; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.testframework.PmdRuleTst; class ToDateToCharTest extends PmdRuleTst { diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateWithoutDateFormatTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateWithoutDateFormatTest.java index ffa7b579e6..a70adbc735 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateWithoutDateFormatTest.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToDateWithoutDateFormatTest.java @@ -7,7 +7,7 @@ package net.sourceforge.pmd.lang.plsql.rule.errorprone; import java.util.Collections; import java.util.List; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.testframework.PmdRuleTst; class ToDateWithoutDateFormatTest extends PmdRuleTst { diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToTimestampWithoutDateFormatTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToTimestampWithoutDateFormatTest.java index fbe970e5af..730292e731 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToTimestampWithoutDateFormatTest.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/rule/errorprone/ToTimestampWithoutDateFormatTest.java @@ -7,7 +7,7 @@ package net.sourceforge.pmd.lang.plsql.rule.errorprone; import java.util.Collections; import java.util.List; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.testframework.PmdRuleTst; class ToTimestampWithoutDateFormatTest extends PmdRuleTst { diff --git a/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/RulesetFactoryTest.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/RulesetFactoryTest.java index ff8a253296..a7965850f3 100644 --- a/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/RulesetFactoryTest.java +++ b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/RulesetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.scala; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; /** * Test scala rulesets diff --git a/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/RuleSetFactoryTest.java b/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/RuleSetFactoryTest.java index f800ac2bea..320fbf91a5 100644 --- a/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/RuleSetFactoryTest.java +++ b/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.swift; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; class RuleSetFactoryTest extends AbstractRuleSetFactoryTest { // no additional unit tests diff --git a/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/BaseTestParserImpl.java b/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/BaseTestParserImpl.java index 86467b06e8..19a4387710 100644 --- a/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/BaseTestParserImpl.java +++ b/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/BaseTestParserImpl.java @@ -20,10 +20,10 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertySource; import net.sourceforge.pmd.test.schema.TestSchemaParser.PmdXmlReporter; diff --git a/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/RuleTestDescriptor.java b/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/RuleTestDescriptor.java index 01baf8f00c..3e4eb348f1 100644 --- a/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/RuleTestDescriptor.java +++ b/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/RuleTestDescriptor.java @@ -7,8 +7,8 @@ package net.sourceforge.pmd.test.schema; import java.util.List; import java.util.Properties; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.rule.Rule; /** * @author Clément Fournier diff --git a/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/TestSchemaParser.java b/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/TestSchemaParser.java index 4d1688c940..a9a21d6fdb 100644 --- a/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/TestSchemaParser.java +++ b/pmd-test-schema/src/main/java/net/sourceforge/pmd/test/schema/TestSchemaParser.java @@ -13,8 +13,8 @@ import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.InputSource; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.annotation.Experimental; +import net.sourceforge.pmd.lang.rule.Rule; import com.github.oowekyala.ooxml.messages.NiceXmlMessageSpec; import com.github.oowekyala.ooxml.messages.OoxmlFacade; diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java b/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java index 54f0b83b6f..9121161096 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java @@ -19,6 +19,8 @@ import net.sourceforge.pmd.ant.SourceLanguage; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; /** * Base test class for {@link LanguageVersion} implementations.
diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/AbstractRuleSetFactoryTest.java b/pmd-test/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleSetFactoryTest.java similarity index 99% rename from pmd-test/src/main/java/net/sourceforge/pmd/AbstractRuleSetFactoryTest.java rename to pmd-test/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleSetFactoryTest.java index f0b7f136d9..5cf75dbf3e 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/AbstractRuleSetFactoryTest.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleSetFactoryTest.java @@ -2,7 +2,7 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd; +package net.sourceforge.pmd.lang.rule; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.emptyString; @@ -45,8 +45,6 @@ import org.xml.sax.helpers.DefaultHandler; import net.sourceforge.pmd.internal.util.IOUtil; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.rule.RuleReference; -import net.sourceforge.pmd.lang.rule.XPathRule; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.util.log.internal.MessageReporterBase; diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/PmdRuleTst.java b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/PmdRuleTst.java index dfd7e4fc7c..b9bd7f5555 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/PmdRuleTst.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/PmdRuleTst.java @@ -7,7 +7,7 @@ package net.sourceforge.pmd.testframework; import java.util.Collections; import java.util.List; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; public class PmdRuleTst extends RuleTst { diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java index 546d77c7f2..93064738d9 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java @@ -27,14 +27,14 @@ import org.xml.sax.InputSource; import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.PmdAnalysis; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSetLoadException; -import net.sourceforge.pmd.RuleSetLoader; import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.document.FileId; import net.sourceforge.pmd.lang.document.TextFile; +import net.sourceforge.pmd.lang.rule.Rule; +import net.sourceforge.pmd.lang.rule.RuleSet; +import net.sourceforge.pmd.lang.rule.RuleSetLoadException; +import net.sourceforge.pmd.lang.rule.RuleSetLoader; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.renderers.TextRenderer; import net.sourceforge.pmd.reporting.GlobalAnalysisListener; diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/SimpleAggregatorTst.java b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/SimpleAggregatorTst.java index fc547bf983..1d067dfb74 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/SimpleAggregatorTst.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/SimpleAggregatorTst.java @@ -7,7 +7,7 @@ package net.sourceforge.pmd.testframework; import java.util.ArrayList; import java.util.List; -import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.lang.rule.Rule; /** * Simple setup for a rule unit test, diff --git a/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java b/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java index 7d19147c12..91df5f7400 100644 --- a/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java +++ b/pmd-test/src/test/java/net/sourceforge/pmd/testframework/RuleTstTest.java @@ -16,7 +16,6 @@ import java.util.Collections; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.DummyLanguageModule; import net.sourceforge.pmd.lang.LanguageProcessor; @@ -24,6 +23,7 @@ import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.ast.DummyNode.DummyRootNode; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.rule.AbstractRule; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.rule.RuleTargetSelector; import net.sourceforge.pmd.test.schema.RuleTestDescriptor; diff --git a/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/RuleSetFactoryTest.java b/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/RuleSetFactoryTest.java index 3b020f99b1..4023f74ed7 100644 --- a/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/RuleSetFactoryTest.java +++ b/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/RuleSetFactoryTest.java @@ -4,8 +4,8 @@ package net.sourceforge.pmd.lang.vf; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; import net.sourceforge.pmd.lang.apex.ApexLanguageModule; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; class RuleSetFactoryTest extends AbstractRuleSetFactoryTest { RuleSetFactoryTest() { diff --git a/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/rule/security/VfUnescapeElTest.java b/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/rule/security/VfUnescapeElTest.java index b1032c5d26..400b0dd7aa 100644 --- a/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/rule/security/VfUnescapeElTest.java +++ b/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/rule/security/VfUnescapeElTest.java @@ -13,8 +13,8 @@ import java.util.List; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.vf.VFTestUtils; import net.sourceforge.pmd.lang.vf.ast.VfParsingHelper; import net.sourceforge.pmd.testframework.PmdRuleTst; diff --git a/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/RuleSetFactoryTest.java b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/RuleSetFactoryTest.java index 75037cd663..63278e21d7 100644 --- a/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/RuleSetFactoryTest.java +++ b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.vm; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; /** * Test velocity's rulesets. diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/RuleSetFactoryTest.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/RuleSetFactoryTest.java index b2c4b70e68..4d4ce31948 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/RuleSetFactoryTest.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/RuleSetFactoryTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.xml; -import net.sourceforge.pmd.AbstractRuleSetFactoryTest; +import net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest; /** * Test xml's and xslt's rulesets diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/XmlXPathRuleTest.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/XmlXPathRuleTest.java index 36bdb5fb49..571900ccdd 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/XmlXPathRuleTest.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/XmlXPathRuleTest.java @@ -9,8 +9,8 @@ import static net.sourceforge.pmd.lang.ast.test.TestUtilsKt.assertSize; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.lang.document.FileId; +import net.sourceforge.pmd.lang.rule.Rule; import net.sourceforge.pmd.lang.xml.XmlParsingHelper; class XmlXPathRuleTest {