diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotation.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotation.java index a83622301c..36249a30c0 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotation.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotation.java @@ -18,7 +18,12 @@ public final class ASTAnnotation extends AbstractApexNode { return visitor.visit(this, data); } + public String getName() { + return node.getType().getApexName(); + } + @Override + @Deprecated public String getImage() { return node.getType().getApexName(); } diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotationParameter.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotationParameter.java index d06310df33..9c9a17e1ef 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotationParameter.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ast/ASTAnnotationParameter.java @@ -38,6 +38,7 @@ public final class ASTAnnotationParameter extends AbstractApexNode paramValues = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParsingHelper.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParsingHelper.java index fe7aa1022a..3320a312a9 100644 --- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParsingHelper.java +++ b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/ast/ApexParsingHelper.java @@ -9,7 +9,7 @@ import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper; public class ApexParsingHelper extends BaseParsingHelper { - public static final ApexParsingHelper DEFAULT = new ApexParsingHelper(Params.getDefaultProcess()); + public static final ApexParsingHelper DEFAULT = new ApexParsingHelper(Params.getDefault()); private ApexParsingHelper(Params p) { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java b/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java index 414fc8d2b3..e37c849670 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/Rule.java @@ -6,10 +6,8 @@ package net.sourceforge.pmd; import java.util.List; -import net.sourceforge.pmd.annotation.Experimental; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.rule.RuleTargetSelector; import net.sourceforge.pmd.properties.PropertySource; @@ -251,31 +249,6 @@ public interface Rule extends PropertySource { void setPriority(RulePriority priority); - /** - * Returns true if this rule depends on the given processing stage - * to run. If so, any ruleset including this rule, in which the rule - * is not misconfigured, will execute the analysis reified in the - * given stage before applying rules on the AST. - * - *

The default returns false. Each language should implement this - * method in its abstract rule base class, and probably mark its - * implementation as final for consistency within the language - * implementation. AST processing stages are language-specific, and - * any non-trivial implementation should throw an {@link IllegalArgumentException} - * when given a stage that isn't defined on the language of the rule. - * - * @param stage Processing stage for which to check for a dependency. - * - * @return True if this rule depends on the given processing stage. - * - * @since 7.0.0 - */ - @Experimental - default boolean dependsOn(AstProcessingStage stage) { - return true; - } - - /** * Returns the object that selects the nodes to which this rule applies. * The selected nodes will be handed to {@link #apply(Node, RuleContext)}. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/TimeTracker.java b/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/TimeTracker.java index 2eb42776bb..c008ec4ff5 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/TimeTracker.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/TimeTracker.java @@ -12,6 +12,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Supplier; /** * A time tracker class to measure time spent on different sections of PMD analysis. @@ -157,6 +158,18 @@ public final class TimeTracker { } } + public static void bench(String label, Runnable runnable) { + try (TimedOperation ignored = startOperation(TimedOperationCategory.LANGUAGE_SPECIFIC_PROCESSING, label)) { + runnable.run(); + } + } + + public static T bench(String label, Supplier runnable) { + try (TimedOperation ignored = startOperation(TimedOperationCategory.LANGUAGE_SPECIFIC_PROCESSING, label)) { + return runnable.get(); + } + } + /** * An entry in the open timers queue. Defines an operation that has started and hasn't finished yet. */ diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/internal/RulesetStageDependencyHelper.java b/pmd-core/src/main/java/net/sourceforge/pmd/internal/RulesetStageDependencyHelper.java deleted file mode 100644 index cd02f2e6d1..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/internal/RulesetStageDependencyHelper.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.internal; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.SortedSet; -import java.util.TreeSet; -import java.util.concurrent.ConcurrentHashMap; - -import net.sourceforge.pmd.PMDConfiguration; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleSets; -import net.sourceforge.pmd.benchmark.TimeTracker; -import net.sourceforge.pmd.benchmark.TimedOperation; -import net.sourceforge.pmd.benchmark.TimedOperationCategory; -import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.ast.AstAnalysisContext; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; -import net.sourceforge.pmd.lang.ast.RootNode; - -/** - * - * @author Clément Fournier - */ -public class RulesetStageDependencyHelper { - - // cache by ruleset - private final Map>>> dependenciesByRuleset = new ConcurrentHashMap<>(); - private final PMDConfiguration configuration; - - public RulesetStageDependencyHelper(PMDConfiguration configuration) { - this.configuration = configuration; - } - - - List> testOnlyGetDependencies(RuleSets ruleSets, LanguageVersion languageVersion) { - return getDependencies(ruleSets, languageVersion); - } - - /** Gets the stage dependencies of the ruleset for the given language version. */ - private List> getDependencies(RuleSets ruleSets, LanguageVersion languageVersion) { - Map>> byLanguage = dependenciesByRuleset.computeIfAbsent(ruleSets, r -> new ConcurrentHashMap<>()); - - return byLanguage.computeIfAbsent(languageVersion, l -> buildDependencyList(ruleSets, l)); - } - - - public void runLanguageSpecificStages(RuleSets ruleSets, LanguageVersion languageVersion, RootNode rootNode) { - AstAnalysisContext context = buildContext(languageVersion); - - getDependencies(ruleSets, languageVersion) - .forEach(stage -> executeProcessingStage(stage, rootNode, context)); - - } - - private void executeProcessingStage(AstProcessingStage stage, RootNode root, AstAnalysisContext context) { - - String label = stage.getLanguage().getShortName() + ": " + stage.getDisplayName(); - try (TimedOperation ignored = TimeTracker.startOperation(TimedOperationCategory.LANGUAGE_SPECIFIC_PROCESSING, label)) { - stage.processAST(root, context); - } - } - - /** Builds a sorted list of the dependencies of the given ruleset. */ - private List> buildDependencyList(RuleSets ruleSets, LanguageVersion languageVersion) { - List> stages = new ArrayList<>(languageVersion.getLanguageVersionHandler().getProcessingStages()); - SortedSet> result = new TreeSet<>(AstProcessingStage.COMPARATOR); - - // this loops runs until either all stages have already been - // picked or there are no rules left, whichever comes first - for (Rule rule : ruleSets.getAllRules()) { - if (stages.isEmpty()) { - break; // to the return - } - for (AstProcessingStage stage : stages) { - if (rule.dependsOn(stage)) { - result.add(stage); - result.addAll(stage.getDependencies()); - } - } - stages.removeAll(result); - } - - return Collections.unmodifiableList(new ArrayList<>(result)); - } - - - // TODO this could be made language specific as well - private AstAnalysisContext buildContext(LanguageVersion languageVersion) { - return new AstAnalysisContext() { - @Override - public ClassLoader getTypeResolutionClassLoader() { - return configuration.getClassLoader(); - } - - - @Override - public LanguageVersion getLanguageVersion() { - return languageVersion; - } - }; - } - -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/AbstractPmdLanguageVersionHandler.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/AbstractPmdLanguageVersionHandler.java index 0444155638..cf02bee9c2 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/AbstractPmdLanguageVersionHandler.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/AbstractPmdLanguageVersionHandler.java @@ -4,13 +4,8 @@ package net.sourceforge.pmd.lang; -import java.util.Collections; -import java.util.List; import java.util.Locale; -import org.apache.commons.lang3.EnumUtils; - -import net.sourceforge.pmd.lang.ast.AstProcessingStage; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.properties.PropertySource; @@ -25,38 +20,6 @@ import net.sourceforge.pmd.properties.PropertySource; public abstract class AbstractPmdLanguageVersionHandler extends AbstractLanguageVersionHandler { - private final List> processingStages; - - - /** - * Declare processing stages within an enum. An enum is the best way - * to declare them since the illegality of forward references naturally - * prevents circular dependencies to be declared. The natural ordering - * on enums is also a sound and stable ordering for processing stages. - * - * @param processingStagesEnum Enum class - * @param Type of the enum class - */ - protected & AstProcessingStage> AbstractPmdLanguageVersionHandler(Class processingStagesEnum) { - this.processingStages = EnumUtils.getEnumList(processingStagesEnum); - } - - - /** - * Declare no optional processing stages as of yet. - */ - protected AbstractPmdLanguageVersionHandler() { - this.processingStages = Collections.emptyList(); - } - - - @Override - public final List> getProcessingStages() { - return processingStages; - } - - - /** * Returns the environment variable name that a user can set in order to override the default value. */ diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersionHandler.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersionHandler.java index e10e42ec75..1b228e8dc6 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersionHandler.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/LanguageVersionHandler.java @@ -4,12 +4,7 @@ package net.sourceforge.pmd.lang; -import static java.util.Collections.emptyList; - -import java.util.List; - import net.sourceforge.pmd.annotation.Experimental; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; import net.sourceforge.pmd.lang.ast.Parser; import net.sourceforge.pmd.lang.metrics.LanguageMetricsProvider; import net.sourceforge.pmd.lang.rule.RuleViolationFactory; @@ -37,17 +32,6 @@ public interface LanguageVersionHandler { } - /** - * Returns the list of all supported optional processing stages. - * - * @return A list of all optional processing stages. - */ - @Experimental - default List> getProcessingStages() { - return emptyList(); - } - - /** * @deprecated This is transitional */ diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/AstAnalysisContext.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/AstAnalysisContext.java deleted file mode 100644 index d98b41d066..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/AstAnalysisContext.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.ast; - -import net.sourceforge.pmd.annotation.Experimental; -import net.sourceforge.pmd.lang.LanguageVersion; - - -/** - * Configuration relevant to e.g. an {@link AstProcessingStage}. - * - * @author Clément Fournier - * @since 7.0.0 - */ -@Experimental -public interface AstAnalysisContext { - - - /** - * Gets the classloader used for type resolution. - * - * @return The classloader. - */ - ClassLoader getTypeResolutionClassLoader(); - - - /** - * Returns the language version used for this analysis. - */ - LanguageVersion getLanguageVersion(); - -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/AstProcessingStage.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/AstProcessingStage.java deleted file mode 100644 index ecc8f301c7..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/AstProcessingStage.java +++ /dev/null @@ -1,121 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.ast; - -import static java.util.Collections.emptyList; - -import java.util.Comparator; -import java.util.List; - -import net.sourceforge.pmd.RuleSets; -import net.sourceforge.pmd.annotation.Experimental; -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageVersionHandler; - -// @formatter:off -/** - * Represents one of the stages applying on the AST - * after parsing is done. Each of these stages implicitly - * depends on the parser stage. - * - *

An analysis on a file goes through the following stages: - *

    - *
  • Parsing stage: taking the source and configuration, and returning an AST - *
  • Language-specific AST visits: sequence of stages specific to each language. - * Each stage performs side effects on the AST, e.g. to resolve such things as comments, - * types, DFA graph, etc. - *
  • Rulechain application: all rulechain rules are run on the final AST - *
  • Rule application: other rules are run - *
- * - *

These steps are run on each file during the analysis, unless the cache entry of the file is up-to-date. - * They're all run sequentially by the same thread. Rule application performs side-effects on the Report, - * which is rendered after all files have been processed. - * - *

Parsing and rule[chain] application stages are considered special and are handled differently for now. - * A {@link LanguageVersionHandler} is responsible for listing all available {@link AstProcessingStage}s - * (see {@link LanguageVersionHandler#getProcessingStages()}). The actual set of stages that will get executed - * for a run is the union of the dependencies of the rules in the run {@link RuleSets}. - * - *

Additional doc, to be moved elsewhere probably: - *

PMD's execution goes through other more global stages (not sure about the exact order): - *

    - *
  • Rule loading: creates a {@link RuleSets} from the ruleset files - *
  • Cache loading: loads the cache file for incremental analysis if any, creates the new cache - *
  • Report creation: creates a report object for the rules to act on - *
  • File collection: collects the files to analyse and dispatches them to worker threads. - * Each file undergoes the steps described above. - *
  • Report rendering - *
  • Cache persisting - *
- * - * - * @author Clément Fournier - * @since 7.0.0 - */ -// @formatter:on -@Experimental -public interface AstProcessingStage> extends Comparable { - - /** - * Compares processing stages of possibly different kinds. - */ - Comparator> COMPARATOR = AstProcessingStage::compare; - - - /** - * Returns the language this processing stage applies to. - */ - Language getLanguage(); - - - /** - * Gets the stages on which this stage depends. - * E.g. the type resolution stage may depend on the - * qualified name resolution stage. - * - *

Returns an empty list if this stage only depends - * on the parser stage. - */ - default List getDependencies() { - return emptyList(); - } - - - /** - * Returns the name of this stage, used e.g. to display in a - * benchmark report. - * - * @return The name of the stage. - */ - String getDisplayName(); - - - /** - * Performs some side effects on the AST, e.g. to resolve something. - * - * @param rootNode Root of the tree - * @param configuration Configuration - */ - void processAST(RootNode rootNode, AstAnalysisContext configuration); - - - /** - * Same contract as {@link Comparable#compareTo(Object)}, but we can't extend - * Comparable with that type argument if we implement processing stages within - * an enum. - * - * @param t the object to compare - * - * @return a negative integer, zero, or a positive integer as this object - * is less than, equal to, or greater than the specified object. - */ - @SuppressWarnings("unchecked") - default int compare(AstProcessingStage t) { - return this.compareTo((T) t); - } - - -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java index 91947dc07e..348d104a3a 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.lang.ast; +import static net.sourceforge.pmd.internal.util.AssertionUtil.requireParamNotNull; + import java.util.Objects; import org.checkerframework.checker.nullness.qual.NonNull; @@ -48,19 +50,25 @@ public interface Parser { private final String filepath; private final String sourceText; private final SemanticErrorReporter reporter; + private final ClassLoader auxclasspathClassLoader; private final PropertySource propertySource; - public ParserTask(LanguageVersion lv, String filepath, String sourceText, SemanticErrorReporter reporter) { - this.lv = Objects.requireNonNull(lv, "lv was null"); - this.filepath = Objects.requireNonNull(filepath, "filepath was null"); - this.sourceText = Objects.requireNonNull(sourceText, "sourceText was null"); - this.reporter = Objects.requireNonNull(reporter, "reporter was null"); + public ParserTask(LanguageVersion lv, String filepath, String sourceText, SemanticErrorReporter reporter, ClassLoader auxclasspathClassLoader) { + this.lv = requireParamNotNull("language version", lv); + this.filepath = requireParamNotNull("filepath", filepath); + this.sourceText = requireParamNotNull("sourceText", sourceText); + this.reporter = requireParamNotNull("reporter", reporter); + this.auxclasspathClassLoader = requireParamNotNull("auxclasspathClassLoader", auxclasspathClassLoader); this.propertySource = new ParserTaskProperties(); propertySource.definePropertyDescriptor(COMMENT_MARKER); } + public ParserTask(LanguageVersion lv, String filepath, String sourceText, SemanticErrorReporter reporter) { + this(lv, filepath, sourceText, reporter, Parser.class.getClassLoader()); + } + public static final PropertyDescriptor COMMENT_MARKER = PropertyFactory.stringProperty("suppressionCommentMarker") .desc("deprecated! NOPMD") @@ -72,6 +80,10 @@ public interface Parser { return propertySource; } + @Deprecated // transitional until language properties are implemented + public ClassLoader getAuxclasspathClassLoader() { + return auxclasspathClassLoader; + } public LanguageVersion getLanguageVersion() { return lv; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractJjtreeNode.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractJjtreeNode.java index 1ea0dae5da..7caaa8e15c 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractJjtreeNode.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/javacc/AbstractJjtreeNode.java @@ -38,6 +38,7 @@ public abstract class AbstractJjtreeNode, N e } @Override + // @Deprecated // todo deprecate, will change tree dump tests public String getImage() { return image; } 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 1cd20d9363..57ba908c5c 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 @@ -16,7 +16,6 @@ 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.ast.AstProcessingStage; import net.sourceforge.pmd.properties.PropertyDescriptor; import net.sourceforge.pmd.util.StringUtil; @@ -278,12 +277,6 @@ public class RuleReference extends AbstractDelegateRule { } - @Override - public boolean dependsOn(AstProcessingStage stage) { - return getRule().dependsOn(stage); - } - - public RuleSetReference getRuleSetReference() { return ruleSetReference; } 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 7e0039d637..32f18070be 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 @@ -19,7 +19,6 @@ 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.ast.AstProcessingStage; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException; import net.sourceforge.pmd.lang.rule.xpath.XPathVersion; @@ -196,12 +195,6 @@ public final class XPathRule extends AbstractRule { return null; } - @Override - public boolean dependsOn(AstProcessingStage stage) { - // FIXME must be made language-specific - return true; - } - private static Map getXPathVersions() { Map tmp = new HashMap<>(); for (XPathVersion v : XPathVersion.values()) { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java b/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java index 9cecab2669..87df7b0eb6 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java @@ -7,6 +7,9 @@ package net.sourceforge.pmd.processor; import java.io.File; import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import net.sourceforge.pmd.PMDConfiguration; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.RuleSets; @@ -14,7 +17,6 @@ import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.benchmark.TimedOperation; import net.sourceforge.pmd.benchmark.TimedOperationCategory; -import net.sourceforge.pmd.internal.RulesetStageDependencyHelper; import net.sourceforge.pmd.internal.SystemProps; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.LanguageVersionHandler; @@ -32,14 +34,13 @@ import net.sourceforge.pmd.util.datasource.DataSource; */ abstract class PmdRunnable implements Runnable { + private static final Logger LOGGER = LoggerFactory.getLogger(PmdRunnable.class); private final DataSource dataSource; private final File file; private final GlobalAnalysisListener globalListener; private final PMDConfiguration configuration; - private final RulesetStageDependencyHelper dependencyHelper; - PmdRunnable(DataSource dataSource, GlobalAnalysisListener globalListener, PMDConfiguration configuration) { @@ -50,7 +51,6 @@ abstract class PmdRunnable implements Runnable { this.file = new File(realFileName); this.globalListener = globalListener; this.configuration = configuration; - this.dependencyHelper = new RulesetStageDependencyHelper(configuration); } /** @@ -129,7 +129,8 @@ abstract class PmdRunnable implements Runnable { languageVersion, filename, sourceCode, - SemanticErrorReporter.noop() // TODO + SemanticErrorReporter.reportToLogger(LOGGER), + configuration.getClassLoader() ); @@ -142,8 +143,6 @@ abstract class PmdRunnable implements Runnable { RootNode rootNode = parse(parser, task); - dependencyHelper.runLanguageSpecificStages(ruleSets, languageVersion, rootNode); - ruleSets.apply(rootNode, listener); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java index 9df543dc00..923e0b970a 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java @@ -26,7 +26,6 @@ import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.ast.AstAnalysisContext; import net.sourceforge.pmd.lang.ast.Parser; import net.sourceforge.pmd.lang.ast.Parser.ParserTask; import net.sourceforge.pmd.lang.ast.RootNode; @@ -185,20 +184,6 @@ public class TreeExportCli { ParserTask task = new ParserTask(langVersion, filename, fullSource, SemanticErrorReporter.noop()); RootNode root = parser.parse(task); - AstAnalysisContext ctx = new AstAnalysisContext() { - @Override - public ClassLoader getTypeResolutionClassLoader() { - return getClass().getClassLoader(); - } - - @Override - public LanguageVersion getLanguageVersion() { - return langVersion; - } - }; - - languageHandler.getProcessingStages().forEach(it -> it.processAST(root, ctx)); - renderer.renderSubtree(root, System.out); } finally { source.close(); diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/internal/StageDependencyTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/internal/StageDependencyTest.java deleted file mode 100644 index 7d4d8595af..0000000000 --- a/pmd-core/src/test/java/net/sourceforge/pmd/internal/StageDependencyTest.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.internal; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; - -import net.sourceforge.pmd.PMDConfiguration; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSets; -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; -import net.sourceforge.pmd.lang.ast.DummyAstStages; -import net.sourceforge.pmd.lang.ast.DummyNode; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.ast.Parser; -import net.sourceforge.pmd.lang.ast.Parser.ParserTask; -import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.ast.SemanticErrorReporter; -import net.sourceforge.pmd.lang.rule.AbstractRule; - -public class StageDependencyTest { - - private final LanguageVersion version = LanguageRegistry.findLanguageByTerseName("dummy").getVersion("1.0"); - - private DummyNode process(String source, RuleSets ruleSets) { - return process(source, ruleSets, new RulesetStageDependencyHelper(new PMDConfiguration())); - } - - private DummyNode process(String source, RuleSets ruleSets, RulesetStageDependencyHelper helper) { - - // TODO Handle Rules having different parser options. - - Parser parser = version.getLanguageVersionHandler().getParser(); - - ParserTask task = new ParserTask(version, "dummyfile.dummy", source, SemanticErrorReporter.noop()); - - RootNode rootNode = parser.parse(task); - - helper.runLanguageSpecificStages(ruleSets, version, rootNode); - - return (DummyNode) rootNode; - } - - - @Test - public void testSimpleDependency() { - - DummyNode root = process("foo bar", withRules(new PredicateTestRule(DummyAstStages.FOO))); - - Assert.assertTrue(DummyAstStages.FOO.hasProcessed(root)); - Assert.assertFalse(DummyAstStages.BAR.hasProcessed(root)); - } - - @Test - public void testNoDependency() { - - DummyNode root = process("foo bar", withRules(new PredicateTestRule())); - - Assert.assertFalse(DummyAstStages.FOO.hasProcessed(root)); - Assert.assertFalse(DummyAstStages.BAR.hasProcessed(root)); - } - - @Test - public void testDependencyUnion() { - - DummyNode root = - process("foo bar", - withRules( - new PredicateTestRule(DummyAstStages.FOO), - new PredicateTestRule(DummyAstStages.BAR) - ) - ); - - Assert.assertTrue(DummyAstStages.FOO.hasProcessed(root)); - Assert.assertTrue(DummyAstStages.BAR.hasProcessed(root)); - } - - @Test - public void testTransitiveDependency() { - - DummyNode root = process("foo bar", withRules(new PredicateTestRule(DummyAstStages.RUNS_FOO))); - - Assert.assertTrue(DummyAstStages.FOO.hasProcessed(root)); - Assert.assertFalse(DummyAstStages.BAR.hasProcessed(root)); - Assert.assertTrue(DummyAstStages.RUNS_FOO.hasProcessed(root)); - } - - @Test - public void testNoRecomputation() { - - PMDConfiguration configuration = new PMDConfiguration(); - RulesetStageDependencyHelper helper = new RulesetStageDependencyHelper(configuration); - - RuleSets ruleSets = withRules(new PredicateTestRule(DummyAstStages.RUNS_FOO)); - - List> stages1 = helper.testOnlyGetDependencies(ruleSets, version); - - process("foo bar", ruleSets); - - List> stages2 = helper.testOnlyGetDependencies(ruleSets, version); - - Assert.assertSame(stages1, stages2); - } - - @Test - public void testDependencyOrdering() { - - PMDConfiguration configuration = new PMDConfiguration(); - RulesetStageDependencyHelper helper = new RulesetStageDependencyHelper(configuration); - - RuleSets ruleSets = withRules( - new PredicateTestRule(DummyAstStages.FOO), - new PredicateTestRule(DummyAstStages.BAR) - ); - - RuleSets ruleSets2 = withRules( - new PredicateTestRule(DummyAstStages.BAR), - new PredicateTestRule(DummyAstStages.FOO) - ); - - List> stages1 = helper.testOnlyGetDependencies(ruleSets, version); - List> stages2 = helper.testOnlyGetDependencies(ruleSets2, version); - - Assert.assertNotSame(stages1, stages2); - Assert.assertEquals(stages1, stages2); - } - - - private static RuleSets withRules(Rule r, Rule... rs) { - List rsets = new ArrayList<>(); - rsets.add(RuleSet.forSingleRule(r)); - for (Rule rule : rs) { - rsets.add(RuleSet.forSingleRule(rule)); - } - - return new RuleSets(rsets); - } - - private static class PredicateTestRule extends AbstractRule { - - private final List dependencies; - - PredicateTestRule(DummyAstStages... dependencies) { - this.dependencies = Arrays.asList(dependencies); - } - - @Override - public Language getLanguage() { - return LanguageRegistry.findLanguageByTerseName("dummy"); - } - - @Override - public boolean dependsOn(AstProcessingStage stage) { - return dependencies.contains(stage); - } - - @Override - public void apply(Node target, RuleContext ctx) { - - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public boolean equals(Object o) { - return this == o; - } - } - - -} diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java index 55ff4de166..3b9d4f6d72 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java @@ -8,7 +8,6 @@ import org.checkerframework.checker.nullness.qual.NonNull; import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleViolation; -import net.sourceforge.pmd.lang.ast.DummyAstStages; import net.sourceforge.pmd.lang.ast.DummyRoot; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.Parser; @@ -38,9 +37,6 @@ public class DummyLanguageModule extends BaseLanguageModule { } public static class Handler extends AbstractPmdLanguageVersionHandler { - public Handler() { - super(DummyAstStages.class); - } @Override public RuleViolationFactory getRuleViolationFactory() { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/ast/DummyAstStages.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/ast/DummyAstStages.java deleted file mode 100644 index 1644db9433..0000000000 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/ast/DummyAstStages.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.ast; - -import java.util.Collections; -import java.util.List; - -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageRegistry; - -/** - * @author Clément Fournier - */ -public enum DummyAstStages implements AstProcessingStage { - FOO, - BAR, - RUNS_FOO { - @Override - public List getDependencies() { - return Collections.singletonList(FOO); - } - }; - - - @Override - public Language getLanguage() { - return LanguageRegistry.findLanguageByTerseName("dummy"); - } - - @Override - public List getDependencies() { - return Collections.emptyList(); - } - - public boolean hasProcessed(DummyNode node) { - return node.getUserData().containsKey(name() + "_STAGE"); - } - - @Override - public String getDisplayName() { - return name(); - } - - @Override - public void processAST(RootNode rootNode, AstAnalysisContext configuration) { - ((DummyNode) rootNode).getUserData().put(name() + "_STAGE", "done"); - } - -} diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AstDisambiguationPass.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AstDisambiguationPass.java index d698822019..6a4fe24939 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AstDisambiguationPass.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AstDisambiguationPass.java @@ -6,18 +6,17 @@ package net.sourceforge.pmd.lang.java.ast; import static net.sourceforge.pmd.lang.java.symbols.table.internal.JavaSemanticErrors.CANNOT_RESOLVE_AMBIGUOUS_NAME; -import static net.sourceforge.pmd.lang.java.symbols.table.internal.JavaSemanticErrors.CANNOT_RESOLVE_SYMBOL; import java.util.Iterator; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; +import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.NodeStream; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken; import net.sourceforge.pmd.lang.java.ast.ASTAssignableExpr.ASTNamedReferenceExpr; -import net.sourceforge.pmd.lang.java.internal.JavaAstProcessor; import net.sourceforge.pmd.lang.java.symbols.JClassSymbol; import net.sourceforge.pmd.lang.java.symbols.JTypeDeclSymbol; import net.sourceforge.pmd.lang.java.symbols.table.JSymbolTable; @@ -57,7 +56,7 @@ final class AstDisambiguationPass { */ public static void disambigWithCtx(NodeStream nodes, ReferenceCtx ctx) { assert ctx != null : "Null context"; - JavaAstProcessor.bench("AST disambiguation", () -> nodes.forEach(it -> it.acceptVisitor(DisambigVisitor.INSTANCE, ctx))); + TimeTracker.bench("AST disambiguation", () -> nodes.forEach(it -> it.acceptVisitor(DisambigVisitor.INSTANCE, ctx))); } @@ -196,7 +195,7 @@ final class AstDisambiguationPass { final JTypeMirror resolved = ctx.resolveSingleTypeName(type.getSymbolTable(), type.getSimpleName(), type); JTypeDeclSymbol sym; if (resolved == null) { - ctx.getLogger().warning(type, CANNOT_RESOLVE_SYMBOL, type.getSimpleName()); + ctx.reportCannotResolveSymbol(type, type.getSimpleName()); sym = setArity(type, ctx, type.getSimpleName()); } else { sym = resolved.getSymbol(); diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/JavaParser.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/JavaParser.java index c4c84e7b81..3d70e291c3 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/JavaParser.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/JavaParser.java @@ -11,6 +11,7 @@ import net.sourceforge.pmd.lang.ast.impl.javacc.JavaCharStream; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument; import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter; import net.sourceforge.pmd.lang.java.ast.internal.LanguageLevelChecker; +import net.sourceforge.pmd.lang.java.internal.JavaAstProcessor; /** * Adapter for the JavaParser, using the specified grammar version. @@ -21,9 +22,11 @@ import net.sourceforge.pmd.lang.java.ast.internal.LanguageLevelChecker; public class JavaParser extends JjtreeParserAdapter { private final LanguageLevelChecker checker; + private final boolean postProcess; - public JavaParser(LanguageLevelChecker checker) { + public JavaParser(LanguageLevelChecker checker, boolean postProcess) { this.checker = checker; + this.postProcess = postProcess; } @@ -44,9 +47,17 @@ public class JavaParser extends JjtreeParserAdapter { parser.setJdkVersion(checker.getJdkVersion()); parser.setPreview(checker.isPreviewEnabled()); - ASTCompilationUnit acu = parser.CompilationUnit(); - acu.setAstInfo(new AstInfo<>(task, acu, parser.getSuppressMap())); - checker.check(acu); - return acu; + ASTCompilationUnit root = parser.CompilationUnit(); + root.setAstInfo(new AstInfo<>(task, root, parser.getSuppressMap())); + checker.check(root); + + if (postProcess) { + JavaAstProcessor processor = JavaAstProcessor.create(task.getAuxclasspathClassLoader(), + task.getLanguageVersion(), + task.getReporter()); + processor.process(root); + } + + return root; } } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaAstProcessor.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaAstProcessor.java index b5c95310bc..335d3c8a53 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaAstProcessor.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaAstProcessor.java @@ -4,23 +4,23 @@ package net.sourceforge.pmd.lang.java.internal; +import static net.sourceforge.pmd.lang.java.symbols.table.internal.JavaSemanticErrors.CANNOT_RESOLVE_SYMBOL; + import java.util.IdentityHashMap; import java.util.Locale; import java.util.Map; -import java.util.function.Supplier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.event.Level; import net.sourceforge.pmd.benchmark.TimeTracker; -import net.sourceforge.pmd.benchmark.TimedOperation; -import net.sourceforge.pmd.benchmark.TimedOperationCategory; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.ast.NodeStream; import net.sourceforge.pmd.lang.ast.SemanticErrorReporter; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.InternalApiBridge; +import net.sourceforge.pmd.lang.java.ast.JavaNode; import net.sourceforge.pmd.lang.java.symbols.JClassSymbol; import net.sourceforge.pmd.lang.java.symbols.JTypeDeclSymbol; import net.sourceforge.pmd.lang.java.symbols.SymbolResolver; @@ -43,8 +43,6 @@ import net.sourceforge.pmd.lang.java.types.internal.infer.TypeInferenceLogger.Ve */ public final class JavaAstProcessor { - private static final Logger DEFAULT_LOG = LoggerFactory.getLogger(JavaAstProcessor.class); - private static final Map TYPE_SYSTEMS = new IdentityHashMap<>(); private static final Level INFERENCE_LOG_LEVEL; @@ -100,10 +98,31 @@ public final class JavaAstProcessor { } - public JClassSymbol findSymbolCannotFail(String name) { - JClassSymbol found = getSymResolver().resolveClassFromCanonicalName(name); - return found == null ? makeUnresolvedReference(name, 0) - : found; + /** + * Find a symbol from the auxclasspath. If not found, will create + * an unresolved symbol. + */ + public @NonNull JClassSymbol findSymbolCannotFail(String name) { + return findSymbolCannotFail(null, name); + } + + /** + * Find a symbol from the auxclasspath. If not found, will create + * an unresolved symbol, and may report the failure if the location is non-null. + */ + public @NonNull JClassSymbol findSymbolCannotFail(@Nullable JavaNode location, String canoName) { + JClassSymbol found = getSymResolver().resolveClassFromCanonicalName(canoName); + if (found == null) { + if (location != null) { + reportCannotResolveSymbol(location, canoName); + } + return makeUnresolvedReference(canoName, 0); + } + return found; + } + + public void reportCannotResolveSymbol(@NonNull JavaNode location, String canoName) { + getLogger().warning(location, CANNOT_RESOLVE_SYMBOL, canoName); } public JClassSymbol makeUnresolvedReference(String canonicalName, int typeArity) { @@ -138,7 +157,7 @@ public final class JavaAstProcessor { */ public void process(ASTCompilationUnit acu) { - SymbolResolver knownSyms = bench("Symbol resolution", () -> SymbolResolutionPass.traverse(this, acu)); + SymbolResolver knownSyms = TimeTracker.bench("1. Symbol resolution", () -> SymbolResolutionPass.traverse(this, acu)); // Now symbols are on the relevant nodes this.symResolver = SymbolResolver.layer(knownSyms, this.symResolver); @@ -147,21 +166,17 @@ public final class JavaAstProcessor { // as scopes depend on type resolution in some cases. InternalApiBridge.initTypeResolver(acu, this, typeInferenceLogger); - bench("2. Symbol table resolution", () -> SymbolTableResolver.traverse(this, acu)); - bench("3. AST disambiguation", () -> InternalApiBridge.disambigWithCtx(NodeStream.of(acu), ReferenceCtx.root(this, acu))); - bench("4. Comment assignment", () -> InternalApiBridge.assignComments(acu)); - bench("5. Usage resolution", () -> InternalApiBridge.usageResolution(this, acu)); - bench("6. Override resolution", () -> InternalApiBridge.overrideResolution(this, acu)); + TimeTracker.bench("2. Symbol table resolution", () -> SymbolTableResolver.traverse(this, acu)); + TimeTracker.bench("3. AST disambiguation", () -> InternalApiBridge.disambigWithCtx(NodeStream.of(acu), ReferenceCtx.root(this, acu))); + TimeTracker.bench("4. Comment assignment", () -> InternalApiBridge.assignComments(acu)); + TimeTracker.bench("5. Usage resolution", () -> InternalApiBridge.usageResolution(this, acu)); + TimeTracker.bench("6. Override resolution", () -> InternalApiBridge.overrideResolution(this, acu)); } public TypeSystem getTypeSystem() { return typeSystem; } - public static SemanticErrorReporter defaultLogger() { - return SemanticErrorReporter.reportToLogger(DEFAULT_LOG); - } - public static JavaAstProcessor create(SymbolResolver symResolver, TypeSystem typeSystem, LanguageVersion languageVersion, @@ -191,6 +206,13 @@ public final class JavaAstProcessor { ); } + + public static JavaAstProcessor create(ClassLoader classLoader, + LanguageVersion languageVersion, + SemanticErrorReporter logger) { + return create(classLoader, languageVersion, logger, defaultTypeInfLogger()); + } + public static JavaAstProcessor create(TypeSystem typeSystem, LanguageVersion languageVersion, SemanticErrorReporter semanticLogger, @@ -204,15 +226,4 @@ public final class JavaAstProcessor { ); } - public static void bench(String label, Runnable runnable) { - try (TimedOperation ignored = TimeTracker.startOperation(TimedOperationCategory.LANGUAGE_SPECIFIC_PROCESSING, label)) { - runnable.run(); - } - } - - public static T bench(String label, Supplier runnable) { - try (TimedOperation ignored = TimeTracker.startOperation(TimedOperationCategory.LANGUAGE_SPECIFIC_PROCESSING, label)) { - return runnable.get(); - } - } } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaLanguageHandler.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaLanguageHandler.java index c90973e476..8052595681 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaLanguageHandler.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaLanguageHandler.java @@ -50,7 +50,6 @@ public class JavaLanguageHandler extends AbstractPmdLanguageVersionHandler { } public JavaLanguageHandler(int jdkVersion, boolean preview) { - super(JavaProcessingStage.class); this.levelChecker = new LanguageLevelChecker<>(jdkVersion, preview, ReportingStrategy.reporterThatThrows()); } @@ -60,7 +59,11 @@ public class JavaLanguageHandler extends AbstractPmdLanguageVersionHandler { @Override public Parser getParser() { - return new JavaParser(levelChecker); + return new JavaParser(levelChecker, true); + } + + public JavaParser getParserWithoutProcessing() { + return new JavaParser(levelChecker, false); } @Override diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaProcessingStage.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaProcessingStage.java deleted file mode 100644 index 4c03dff3c0..0000000000 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/internal/JavaProcessingStage.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.java.internal; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import net.sourceforge.pmd.annotation.Experimental; -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.ast.AstAnalysisContext; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; -import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; -import net.sourceforge.pmd.lang.java.ast.JavaParser; -import net.sourceforge.pmd.lang.java.ast.internal.LanguageLevelChecker; -import net.sourceforge.pmd.lang.java.symboltable.SymbolFacade; - - -/** - * Java processing stages. - * - * @author Clément Fournier - * @since 7.0.0 - */ -@Experimental -public enum JavaProcessingStage implements AstProcessingStage { - - /** - * This acts as a merged stage, non-optional. Ideally this would be encapsulated - * in the {@link JavaParser}, like the {@link LanguageLevelChecker}. - */ - JAVA_PROCESSING("Java processing") { - @Override - public void processAST(RootNode rootNode, AstAnalysisContext configuration) { - JavaAstProcessor.create(configuration.getTypeResolutionClassLoader(), configuration.getLanguageVersion(), JavaAstProcessor.defaultLogger(), JavaAstProcessor.defaultTypeInfLogger()) - .process((ASTCompilationUnit) rootNode); - } - }, - - /** - * Symbol table analysis. - */ - SYMBOL_RESOLUTION("Symbol table") { - @Override - public void processAST(RootNode rootNode, AstAnalysisContext configuration) { - // kept for compatibility with existing tests - new SymbolFacade().initializeWith(configuration.getTypeResolutionClassLoader(), (ASTCompilationUnit) rootNode); - } - }; - - private final String displayName; - private final List dependencies; - - JavaProcessingStage(String displayName, JavaProcessingStage... dependencies) { - this.displayName = displayName; - this.dependencies = Collections.unmodifiableList(Arrays.asList(dependencies)); - } - - @Override - public List getDependencies() { - return dependencies; - } - - - @Override - public String getDisplayName() { - return displayName; - } - - - @Override - public final Language getLanguage() { - return LanguageRegistry.findLanguageByTerseName("java"); - } -} diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java index 73efb9c94e..0da448c81b 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java @@ -10,13 +10,11 @@ import org.checkerframework.checker.nullness.qual.Nullable; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.JavaLanguageModule; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTImportDeclaration; import net.sourceforge.pmd.lang.java.ast.JavaParserVisitor; -import net.sourceforge.pmd.lang.java.internal.JavaProcessingStage; import net.sourceforge.pmd.lang.rule.AbstractRule; @@ -52,12 +50,4 @@ public abstract class AbstractJavaRule extends AbstractRule implements JavaParse return false; } - @Override - public boolean dependsOn(AstProcessingStage stage) { - if (!(stage instanceof JavaProcessingStage)) { - throw new IllegalArgumentException("Processing stage wasn't a Java one: " + stage); - } - - return true; - } } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/ReferenceCtx.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/ReferenceCtx.java index 063f1613c8..800b67c249 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/ReferenceCtx.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/ReferenceCtx.java @@ -46,6 +46,10 @@ public final class ReferenceCtx { this.enclosingClass = enclosingClass; } + public void reportCannotResolveSymbol(JavaNode location, String simpleName) { + processor.reportCannotResolveSymbol(location, simpleName); + } + public static ReferenceCtx root(JavaAstProcessor processor, ASTCompilationUnit root) { return new ReferenceCtx(processor, root.getPackageName(), null); } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/SymTableFactory.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/SymTableFactory.java index 069e659158..46ffb2b987 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/SymTableFactory.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symbols/table/internal/SymTableFactory.java @@ -257,7 +257,7 @@ final class SymTableFactory { if (!anImport.isStatic()) { // Single-Type-Import Declaration - JClassSymbol type = processor.findSymbolCannotFail(anImport.getImportedName()); + JClassSymbol type = processor.findSymbolCannotFail(anImport, anImport.getImportedName()); importedTypes.append(type.getTypeSystem().typeOf(type, false)); } } 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 4de7893d34..4e5ef18906 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/ExcludeLinesTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/ExcludeLinesTest.java @@ -9,11 +9,11 @@ import static net.sourceforge.pmd.lang.ast.test.TestUtilsKt.assertSuppressed; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; -public class ExcludeLinesTest extends BaseNonParserTest { +public class ExcludeLinesTest extends BaseParserTest { @Test public void testAcceptance() { 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 24a56156da..baa95be954 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/ReportTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/ReportTest.java @@ -17,7 +17,7 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; public class ReportTest { - private final JavaParsingHelper java = JavaParsingHelper.WITH_PROCESSING; + private final JavaParsingHelper java = JavaParsingHelper.DEFAULT; @Test public void testBasic() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/BaseNonParserTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/BaseParserTest.java similarity index 66% rename from pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/BaseNonParserTest.java rename to pmd-java/src/test/java/net/sourceforge/pmd/lang/java/BaseParserTest.java index 67ee741d4a..a42dc34154 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/BaseNonParserTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/BaseParserTest.java @@ -1,13 +1,9 @@ -/** +/* * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ -package net.sourceforge.pmd.lang.java.symboltable; +package net.sourceforge.pmd.lang.java; -import java.util.List; - -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.ASTExpression; @@ -15,20 +11,18 @@ import net.sourceforge.pmd.lang.java.ast.ASTExpression; * Base class for tests that usually need processing stages to run when * parsing code. */ -public abstract class BaseNonParserTest { +public abstract class BaseParserTest { - protected final JavaParsingHelper java = JavaParsingHelper.WITH_PROCESSING.withResourceContext(getClass()); + protected final JavaParsingHelper java = JavaParsingHelper.DEFAULT.withResourceContext(getClass()); protected final JavaParsingHelper java5 = java.withDefaultVersion("1.5"); + protected final JavaParsingHelper java8 = java.withDefaultVersion("1.8"); + protected final JavaParsingHelper java9 = java.withDefaultVersion("9"); protected ASTCompilationUnit parseCode(final String code) { return java.parse(code); } - protected List getOrderedNodes(Class target, String code) { - return JavaParsingHelper.WITH_PROCESSING.getNodes(target, code); - } - /** * Parse and return an expression. Some variables are predeclared. */ diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaParsingHelper.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaParsingHelper.java index e7b507aeff..3e9a884637 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaParsingHelper.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaParsingHelper.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.lang.java; +import static net.sourceforge.pmd.lang.ast.Parser.ParserTask; + import java.io.PrintStream; import java.text.MessageFormat; import java.util.ArrayList; @@ -13,19 +15,17 @@ import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.nullness.qual.NonNull; -import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import net.sourceforge.pmd.internal.Slf4jSimpleConfiguration; -import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.LanguageVersionHandler; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.SemanticErrorReporter; import net.sourceforge.pmd.lang.ast.SemanticException; import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; +import net.sourceforge.pmd.lang.java.ast.JavaParser; import net.sourceforge.pmd.lang.java.internal.JavaAstProcessor; +import net.sourceforge.pmd.lang.java.internal.JavaLanguageHandler; import net.sourceforge.pmd.lang.java.types.TypeSystem; import net.sourceforge.pmd.lang.java.types.internal.infer.TypeInferenceLogger; import net.sourceforge.pmd.lang.java.types.internal.infer.TypeInferenceLogger.SimpleLogger; @@ -42,11 +42,13 @@ public class JavaParsingHelper extends BaseParsingHelper ops = java.getNodes(ASTFormalParameter.class, TEST1, "1.5"); - for (ASTFormalParameter b : ops) { - ASTVariableDeclaratorId variableDeclId = b.getFirstDescendantOfType(ASTVariableDeclaratorId.class); - if (!"x".equals(variableDeclId.getImage())) { - assertTrue(b.isVarargs()); - nrOfVarArgs++; - } else { - assertFalse(b.isVarargs()); - nrOfNoVarArgs++; - } - } - - // Ensure that both possibilities are tested - assertEquals(1, nrOfVarArgs); - assertEquals(1, nrOfNoVarArgs); - } - - private static final String TEST1 = "class Foo {\n void bar(int x, int... others) {}\n}"; -} diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTImportDeclarationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTImportDeclarationTest.java index 7547f00363..070170b319 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTImportDeclarationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTImportDeclarationTest.java @@ -12,6 +12,7 @@ import java.util.List; import org.junit.Test; import net.sourceforge.pmd.lang.ast.ParseException; +import net.sourceforge.pmd.lang.java.BaseParserTest; public class ASTImportDeclarationTest extends BaseParserTest { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTInitializerTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTInitializerTest.java index f333179d1b..cbb3527f99 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTInitializerTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTInitializerTest.java @@ -6,12 +6,13 @@ package net.sourceforge.pmd.lang.java.ast; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; + public class ASTInitializerTest extends BaseParserTest { @Test public void testDontCrashOnBlockStatement() { - java.parse(TEST1); + java.parse("public class Foo { { x = 5; } }"); } - private static final String TEST1 = "public class Foo {\n {\n x = 5;\n }\n}"; } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTModuleDeclarationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTModuleDeclarationTest.java index 0216dab627..4be1ebb900 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTModuleDeclarationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTModuleDeclarationTest.java @@ -12,18 +12,18 @@ import java.util.List; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; + public class ASTModuleDeclarationTest extends BaseParserTest { @Test public final void jdk9ModuleInfo() { ASTCompilationUnit ast = java9.parseResource("jdkversiontests/jdk9_module_info.java"); - List modules = ast.findDescendantsOfType(ASTModuleDeclaration.class); - assertEquals(1, modules.size()); - ASTModuleDeclaration module = modules.get(0); + ASTModuleDeclaration module = ast.descendants(ASTModuleDeclaration.class).firstOrThrow(); assertTrue(module.isOpen()); assertEquals("com.example.foo", module.getImage()); assertEquals(7, module.getNumChildren()); - List directives = module.findChildrenOfType(ASTModuleDirective.class); + List directives = module.children(ASTModuleDirective.class).toList(); assertEquals(7, directives.size()); // requires com.example.foo.http; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTPackageDeclarationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTPackageDeclarationTest.java index f9152ec1ba..5fa767ab6f 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTPackageDeclarationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTPackageDeclarationTest.java @@ -8,6 +8,8 @@ import static org.junit.Assert.assertEquals; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; + public class ASTPackageDeclarationTest extends BaseParserTest { private static final String PACKAGE_INFO_ANNOTATED = "@Deprecated\npackage net.sourceforge.pmd.foobar;\n"; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchLabelTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchLabelTest.java index abf5bb6c6c..72c8447bdb 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchLabelTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchLabelTest.java @@ -11,11 +11,13 @@ import java.util.List; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; + public class ASTSwitchLabelTest extends BaseParserTest { @Test public void testDefaultOff() { - List ops = java.getNodes(ASTSwitchLabel.class, TEST1); + List ops = java.getNodes(ASTSwitchLabel.class, "public class Foo {\n void bar() {\n switch (x) {\n case 1: y = 2;\n }\n }\n}"); assertFalse(ops.get(0).isDefault()); } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchStatementTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchStatementTest.java index 037de44c5b..f512d16415 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchStatementTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTSwitchStatementTest.java @@ -7,14 +7,16 @@ package net.sourceforge.pmd.lang.java.ast; import org.junit.Assert; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; + public class ASTSwitchStatementTest extends BaseParserTest { @Test public void exhaustiveEnumSwitchWithDefault() { - ASTSwitchStatement switchStatement = getNodes(ASTSwitchStatement.class, + ASTSwitchStatement switchStatement = java.parse( "import java.nio.file.AccessMode; class Foo { void bar(AccessMode m) {" + "switch (m) { case READ: break; default: break; } } }") - .get(0); + .descendants(ASTSwitchStatement.class).firstOrThrow(); Assert.assertFalse(switchStatement.isExhaustiveEnumSwitch()); // this should not throw a NPE... Assert.assertTrue(switchStatement.hasDefaultCase()); Assert.assertTrue(switchStatement.isFallthroughSwitch()); @@ -22,10 +24,9 @@ public class ASTSwitchStatementTest extends BaseParserTest { @Test public void defaultCaseWithArrowBlock() { - ASTSwitchStatement switchStatement = getNodes(ASTSwitchStatement.class, - "class Foo { void bar(int x) {" - + "switch (x) { default -> { } } } }") - .get(0); + ASTSwitchStatement switchStatement = + java.parse("class Foo { void bar(int x) {switch (x) { default -> { } } } }") + .descendants(ASTSwitchStatement.class).firstOrThrow(); Assert.assertFalse(switchStatement.isExhaustiveEnumSwitch()); Assert.assertTrue(switchStatement.iterator().hasNext()); Assert.assertTrue(switchStatement.hasDefaultCase()); @@ -34,10 +35,9 @@ public class ASTSwitchStatementTest extends BaseParserTest { @Test public void emptySwitch() { - ASTSwitchStatement switchStatement = getNodes(ASTSwitchStatement.class, - "class Foo { void bar(int x) {" - + "switch (x) { } } }") - .get(0); + ASTSwitchStatement switchStatement = + java.parse("class Foo { void bar(int x) {switch (x) { } } }") + .descendants(ASTSwitchStatement.class).firstOrThrow(); Assert.assertFalse(switchStatement.isExhaustiveEnumSwitch()); Assert.assertFalse(switchStatement.iterator().hasNext()); Assert.assertFalse(switchStatement.hasDefaultCase()); @@ -47,7 +47,7 @@ public class ASTSwitchStatementTest extends BaseParserTest { @Test public void defaultCaseWithArrowExprs() { ASTSwitchStatement switchStatement = - getNodes(ASTSwitchStatement.class, + java.parse( "import net.sourceforge.pmd.lang.java.rule.bestpractices.switchstmtsshouldhavedefault.SimpleEnum;\n" + "\n" + " public class Foo {\n" @@ -59,7 +59,7 @@ public class ASTSwitchStatementTest extends BaseParserTest { + " }\n" + " }\n" + " }") - .get(0); + .descendants(ASTSwitchStatement.class).firstOrThrow(); Assert.assertFalse(switchStatement.isExhaustiveEnumSwitch()); Assert.assertTrue(switchStatement.iterator().hasNext()); Assert.assertFalse(switchStatement.isFallthroughSwitch()); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorIdTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorIdTest.java index c9259722b5..2fe8636e5b 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorIdTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ASTVariableDeclaratorIdTest.java @@ -10,6 +10,7 @@ import static org.junit.Assert.assertTrue; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.internal.PrettyPrintingUtil; public class ASTVariableDeclaratorIdTest extends BaseParserTest { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/BaseParserTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/BaseParserTest.java deleted file mode 100644 index 3901cd87b0..0000000000 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/BaseParserTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.java.ast; - -import java.util.List; - -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.java.JavaParsingHelper; - -/** - * Base class for tests that usually need processing stages to run when - * parsing code. - */ -public abstract class BaseParserTest { - - protected final JavaParsingHelper java = JavaParsingHelper.JUST_PARSE.withResourceContext(getClass()); - protected final JavaParsingHelper java5 = java.withDefaultVersion("1.5"); - protected final JavaParsingHelper java8 = java.withDefaultVersion("1.8"); - protected final JavaParsingHelper java9 = java.withDefaultVersion("9"); - - - protected ASTCompilationUnit parseCode(final String code) { - return java.parse(code); - } - - protected List getNodes(Class target, String code) { - return JavaParsingHelper.WITH_PROCESSING.getNodes(target, code); - } -} diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentAssignmentTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentAssignmentTest.java index 7508ce63e4..604bf2d010 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentAssignmentTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentAssignmentTest.java @@ -13,9 +13,9 @@ import java.util.List; import org.junit.Assert; import org.junit.Test; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; +import net.sourceforge.pmd.lang.java.BaseParserTest; -public class CommentAssignmentTest extends BaseNonParserTest { +public class CommentAssignmentTest extends BaseParserTest { /** * Blank lines in comments should not raise an exception. See bug #1048. diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentTest.java index 70e381897e..9b603ee958 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/CommentTest.java @@ -9,9 +9,9 @@ import org.junit.Assert; import org.junit.Test; import net.sourceforge.pmd.PMD; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; +import net.sourceforge.pmd.lang.java.BaseParserTest; -public class CommentTest extends BaseNonParserTest { +public class CommentTest extends BaseParserTest { @Test public void testMultiLinesInSingleLine() { String comment = "/* single line. */"; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ConstantExpressionsTests.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ConstantExpressionsTests.java index 318c693a83..2138855725 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ConstantExpressionsTests.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ConstantExpressionsTests.java @@ -11,9 +11,9 @@ import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.function.Executable; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; +import net.sourceforge.pmd.lang.java.BaseParserTest; -public class ConstantExpressionsTests extends BaseNonParserTest { +public class ConstantExpressionsTests extends BaseParserTest { private Executable isConst(String expr, Object value) { return () -> { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/EncodingTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/EncodingTest.java index bc4ced4c2a..a4b04a4c25 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/EncodingTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/EncodingTest.java @@ -8,14 +8,15 @@ import static org.junit.Assert.assertEquals; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; + public class EncodingTest extends BaseParserTest { @Test public void testDecodingOfUTF8() { - ASTCompilationUnit acu = java.parse(TEST_UTF8); - String methodName = acu.getFirstDescendantOfType(ASTMethodDeclaration.class).getImage(); + ASTCompilationUnit acu = java.parse("class Foo { void é() {} }"); + String methodName = acu.descendants(ASTMethodDeclaration.class).firstOrThrow().getName(); assertEquals("é", methodName); } - private static final String TEST_UTF8 = "class Foo {\n void é() {}\n void fiddle() {}\n}"; } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/FormalCommentTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/FormalCommentTest.java index 5c8f8b11da..7e0642b6c9 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/FormalCommentTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/FormalCommentTest.java @@ -10,6 +10,7 @@ import org.junit.Assert; import org.junit.Test; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken; +import net.sourceforge.pmd.lang.java.BaseParserTest; public class FormalCommentTest extends BaseParserTest { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JDKVersionTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JDKVersionTest.java index 82fcdcc54e..832f51e87c 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JDKVersionTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JDKVersionTest.java @@ -18,7 +18,7 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; public class JDKVersionTest { - private final JavaParsingHelper java3 = JavaParsingHelper.JUST_PARSE + private final JavaParsingHelper java3 = JavaParsingHelper.DEFAULT .withDefaultVersion("1.3") .withResourceContext(JDKVersionTest.class, "jdkversiontests/"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java10Test.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java10Test.java index 9f9086f0aa..ec7780e573 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java10Test.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java10Test.java @@ -26,8 +26,8 @@ import net.sourceforge.pmd.lang.java.types.TypeTestUtil; public class Java10Test { private final JavaParsingHelper java10 = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("10") - .withResourceContext(Java10Test.class, "jdkversiontests/java10/"); + JavaParsingHelper.DEFAULT.withDefaultVersion("10") + .withResourceContext(Java10Test.class, "jdkversiontests/java10/"); private final JavaParsingHelper java9 = java10.withDefaultVersion("9"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java14Test.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java14Test.java index 0dfaa82373..836f0de1e3 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java14Test.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java14Test.java @@ -24,8 +24,8 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; @Ignore("Needs to be fixed for new AST structure. All of this is already much better tested in Kotlin, I don't want to port these tests...") public class Java14Test { private final JavaParsingHelper java14 = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("14") - .withResourceContext(Java14Test.class, "jdkversiontests/java14/"); + JavaParsingHelper.DEFAULT.withDefaultVersion("14") + .withResourceContext(Java14Test.class, "jdkversiontests/java14/"); private final JavaParsingHelper java13 = java14.withDefaultVersion("13"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java15TreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java15TreeDumpTest.java index ecb6cdbdb6..20df93fd03 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java15TreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java15TreeDumpTest.java @@ -13,8 +13,8 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; public class Java15TreeDumpTest extends BaseJavaTreeDumpTest { private final JavaParsingHelper java15 = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("15") - .withResourceContext(Java15TreeDumpTest.class, "jdkversiontests/java15/"); + JavaParsingHelper.DEFAULT.withDefaultVersion("15") + .withResourceContext(Java15TreeDumpTest.class, "jdkversiontests/java15/"); private final JavaParsingHelper java14 = java15.withDefaultVersion("14"); @Override diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java index 67c86b8817..858b597ffb 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java @@ -18,8 +18,8 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; public class Java16PreviewTreeDumpTest extends BaseTreeDumpTest { private final JavaParsingHelper java16p = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("16-preview") - .withResourceContext(Java16PreviewTreeDumpTest.class, "jdkversiontests/java16p/"); + JavaParsingHelper.DEFAULT.withDefaultVersion("16-preview") + .withResourceContext(Java16PreviewTreeDumpTest.class, "jdkversiontests/java16p/"); private final JavaParsingHelper java16 = java16p.withDefaultVersion("16"); public Java16PreviewTreeDumpTest() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java index 001a187131..7c852d2a53 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java @@ -18,8 +18,8 @@ import net.sourceforge.pmd.lang.java.types.JPrimitiveType; public class Java16TreeDumpTest extends BaseJavaTreeDumpTest { private final JavaParsingHelper java16 = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("16") - .withResourceContext(Java16TreeDumpTest.class, "jdkversiontests/java16/"); + JavaParsingHelper.DEFAULT.withDefaultVersion("16") + .withResourceContext(Java16TreeDumpTest.class, "jdkversiontests/java16/"); private final JavaParsingHelper java16p = java16.withDefaultVersion("16-preview"); private final JavaParsingHelper java15 = java16.withDefaultVersion("15"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17PreviewTreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17PreviewTreeDumpTest.java index 0e1e2eb5c9..86d198fc52 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17PreviewTreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17PreviewTreeDumpTest.java @@ -19,8 +19,8 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; public class Java17PreviewTreeDumpTest extends BaseTreeDumpTest { private final JavaParsingHelper java17p = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("17-preview") - .withResourceContext(Java17PreviewTreeDumpTest.class, "jdkversiontests/java17p/"); + JavaParsingHelper.DEFAULT.withDefaultVersion("17-preview") + .withResourceContext(Java17PreviewTreeDumpTest.class, "jdkversiontests/java17p/"); private final JavaParsingHelper java17 = java17p.withDefaultVersion("17"); public Java17PreviewTreeDumpTest() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17TreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17TreeDumpTest.java index 96c4390e0f..19356ba1fa 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17TreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java17TreeDumpTest.java @@ -16,8 +16,8 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; public class Java17TreeDumpTest extends BaseTreeDumpTest { private final JavaParsingHelper java17 = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("17") - .withResourceContext(Java17TreeDumpTest.class, "jdkversiontests/java17/"); + JavaParsingHelper.DEFAULT.withDefaultVersion("17") + .withResourceContext(Java17TreeDumpTest.class, "jdkversiontests/java17/"); private final JavaParsingHelper java17p = java17.withDefaultVersion("17-preview"); private final JavaParsingHelper java16 = java17.withDefaultVersion("16"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java8Test.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java8Test.java index 96064e75dd..c86f124f8f 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java8Test.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java8Test.java @@ -10,8 +10,8 @@ import net.sourceforge.pmd.lang.java.JavaParsingHelper; public class Java8Test { private final JavaParsingHelper java8 = - JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("8") - .withResourceContext(Java8Test.class); + JavaParsingHelper.DEFAULT.withDefaultVersion("8") + .withResourceContext(Java8Test.class); @Test public void interfaceMethodShouldBeParseable() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JavaQualifiedNameTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JavaQualifiedNameTest.java index a55fe2d048..3494b6eb00 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JavaQualifiedNameTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/JavaQualifiedNameTest.java @@ -24,7 +24,7 @@ public class JavaQualifiedNameTest { private List getNodes(Class target, String code) { - return JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("15").getNodes(target, code); + return JavaParsingHelper.DEFAULT.withDefaultVersion("15").getNodes(target, code); } @Test diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java index ce36be02e5..3a6161dbc8 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java @@ -23,7 +23,7 @@ import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; public class ParserCornersTest extends BaseJavaTreeDumpTest { - private final JavaParsingHelper java = JavaParsingHelper.WITH_PROCESSING.withResourceContext(getClass()); + private final JavaParsingHelper java = JavaParsingHelper.DEFAULT.withResourceContext(getClass()); private final JavaParsingHelper java4 = java.withDefaultVersion("1.4"); private final JavaParsingHelper java5 = java.withDefaultVersion("1.5"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/SimpleNodeTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/SimpleNodeTest.java index 08077df94a..f13a357ae9 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/SimpleNodeTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/SimpleNodeTest.java @@ -17,7 +17,7 @@ import org.junit.Test; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.test.TestUtilsKt; -import net.sourceforge.pmd.lang.java.JavaParsingHelper; +import net.sourceforge.pmd.lang.java.BaseParserTest; @Ignore("This test is Java specific even though parts of it should apply to any language implementation") // The Java specific parts depend on the grammar and are subject to breaking during the grammar update process @@ -174,7 +174,7 @@ public class SimpleNodeTest extends BaseParserTest { @Test public void testParentMethods() { - ASTCompilationUnit u = JavaParsingHelper.JUST_PARSE.parse(TEST1); + ASTCompilationUnit u = java.parse(TEST1); ASTMethodDeclarator d = u.getFirstDescendantOfType(ASTMethodDeclarator.class); assertSame("getFirstParentOfType ASTMethodDeclaration", d.getParent(), diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/TextBlockEscapeTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/TextBlockEscapeTest.java index cdedc88f8e..63f30f4510 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/TextBlockEscapeTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/TextBlockEscapeTest.java @@ -8,6 +8,8 @@ import static org.junit.Assert.assertEquals; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; + public class TextBlockEscapeTest extends BaseParserTest { @Test diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/internal/PrettyPrintingUtilTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/internal/PrettyPrintingUtilTest.java index fbb158d5d1..aaa272bf1c 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/internal/PrettyPrintingUtilTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/internal/PrettyPrintingUtilTest.java @@ -17,13 +17,13 @@ import org.hamcrest.Matcher; import org.hamcrest.MatcherAssert; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTMethodCall; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; import net.sourceforge.pmd.util.StringUtil; -public class PrettyPrintingUtilTest extends BaseNonParserTest { +public class PrettyPrintingUtilTest extends BaseParserTest { @Test public void displaySignatureTestWithExtraDimensions() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsProviderTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsProviderTest.java index 42e4b873b5..74f6f024e9 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsProviderTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsProviderTest.java @@ -24,7 +24,7 @@ import net.sourceforge.pmd.lang.metrics.Metric; */ public class JavaMetricsProviderTest { - private final JavaParsingHelper java8 = JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("1.8"); + private final JavaParsingHelper java8 = JavaParsingHelper.DEFAULT.withDefaultVersion("1.8"); @Test public void testComputeAllMetrics() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/MetricsMemoizationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/MetricsMemoizationTest.java index 8000b1952c..667cbf673f 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/MetricsMemoizationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/MetricsMemoizationTest.java @@ -15,12 +15,12 @@ import java.util.Random; import org.junit.Test; import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTAnyTypeDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration; import net.sourceforge.pmd.lang.java.ast.JavaVisitorBase; import net.sourceforge.pmd.lang.java.metrics.testdata.MetricsVisitorTestData; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; import net.sourceforge.pmd.lang.metrics.Metric; import net.sourceforge.pmd.lang.metrics.MetricOptions; import net.sourceforge.pmd.lang.metrics.MetricsUtil; @@ -28,7 +28,7 @@ import net.sourceforge.pmd.lang.metrics.MetricsUtil; /** * @author Clément Fournier */ -public class MetricsMemoizationTest extends BaseNonParserTest { +public class MetricsMemoizationTest extends BaseParserTest { private final Metric randomMetric = randomMetric(); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java index 494d91ffdb..1515e37f58 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java @@ -42,7 +42,7 @@ public class JavaRuleViolationTest { } private ASTCompilationUnit parse(final String code) { - return JavaParsingHelper.WITH_PROCESSING.parse(code); + return JavaParsingHelper.DEFAULT.parse(code); } /** 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 dcf626bd79..ef00d1de9d 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 @@ -126,7 +126,7 @@ public class XPathRuleTest extends RuleTst { @Test public void testFollowingSibling() throws Exception { final String source = "public interface dummy extends Foo, Bar, Baz {}"; - ASTCompilationUnit cu = JavaParsingHelper.WITH_PROCESSING.parse(source); + ASTCompilationUnit cu = JavaParsingHelper.DEFAULT.parse(source); String xpath = "//ExtendsList/ClassOrInterfaceType/following-sibling::ClassOrInterfaceType"; @@ -143,7 +143,7 @@ public class XPathRuleTest extends RuleTst { } private static Report getReportForTestString(Rule r, String test) { - return JavaParsingHelper.WITH_PROCESSING.executeRule(r, test); + return JavaParsingHelper.DEFAULT.executeRule(r, test); } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/codestyle/UselessParenthesesTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/codestyle/UselessParenthesesTest.java index 25c3814242..3e1bf44e0d 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/codestyle/UselessParenthesesTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/codestyle/UselessParenthesesTest.java @@ -19,7 +19,7 @@ public class UselessParenthesesTest extends PmdRuleTst { Executable testImpl(String expression, Necessity necessity) { return () -> { String file = "class Foo {{ int a,b,c,d; float f1, f2, f3; String s; Object e = " + expression + ";}}"; - ASTCompilationUnit acu = JavaParsingHelper.WITH_PROCESSING.parse(file); + ASTCompilationUnit acu = JavaParsingHelper.DEFAULT.parse(file); ASTExpression paren = acu.descendants(ASTExpression.class).crossFindBoundaries().first(ASTExpression::isParenthesized); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleUtilTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleUtilTest.java index 75d856dd94..0f3652301c 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleUtilTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleUtilTest.java @@ -14,12 +14,12 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTExpression; import net.sourceforge.pmd.lang.java.ast.ASTInfixExpression; import net.sourceforge.pmd.lang.java.ast.ASTVariableAccess; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; -public class JavaRuleUtilTest extends BaseNonParserTest { +public class JavaRuleUtilTest extends BaseParserTest { @Test public void testCamelCaseWords() { 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 4ea93fdb7f..b0e8901217 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 @@ -18,8 +18,8 @@ import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.lang.LanguageRegistry; 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.java.symboltable.BaseNonParserTest; import net.sourceforge.pmd.lang.rule.XPathRule; import net.sourceforge.pmd.lang.rule.xpath.PmdXPathException; import net.sourceforge.pmd.lang.rule.xpath.XPathVersion; @@ -28,7 +28,7 @@ import net.sourceforge.pmd.lang.rule.xpath.XPathVersion; * @author Clément Fournier * @since 7.0.0 */ -public class BaseXPathFunctionTest extends BaseNonParserTest { +public class BaseXPathFunctionTest extends BaseParserTest { private static final String VIOLATION_MESSAGE = "violation"; private static final String RULE_NAME_PLACEHOLDER = "$rule_name"; diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/AbruptCompletionTests.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/AbruptCompletionTests.java index c0d993aea9..048e702359 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/AbruptCompletionTests.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/AbruptCompletionTests.java @@ -13,16 +13,16 @@ import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.function.Executable; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.JavaParsingHelper; import net.sourceforge.pmd.lang.java.ast.ASTBlock; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTIfStatement; import net.sourceforge.pmd.lang.java.ast.ASTStatement; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; import junit.framework.AssertionFailedError; -public class AbruptCompletionTests extends BaseNonParserTest { +public class AbruptCompletionTests extends BaseParserTest { private final JavaParsingHelper java17 = java.withDefaultVersion("17"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/PatternBindingsTests.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/PatternBindingsTests.java index b5ade11b72..3183aab108 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/PatternBindingsTests.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symbols/table/internal/PatternBindingsTests.java @@ -16,15 +16,15 @@ import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.function.Executable; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.JavaParsingHelper; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTExpression; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.lang.java.symbols.table.internal.PatternBindingsUtil.BindSet; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; import net.sourceforge.pmd.util.CollectionUtil; -public class PatternBindingsTests extends BaseNonParserTest { +public class PatternBindingsTests extends BaseParserTest { private final JavaParsingHelper java15p = java.withDefaultVersion("17"); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/AcceptanceTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/AcceptanceTest.java index 5caf3c9f4d..acc562f48a 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/AcceptanceTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/AcceptanceTest.java @@ -17,6 +17,7 @@ import org.junit.Test; import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTBlock; import net.sourceforge.pmd.lang.java.ast.ASTCatchClause; import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration; @@ -30,7 +31,7 @@ import net.sourceforge.pmd.lang.symboltable.NameOccurrence; import net.sourceforge.pmd.lang.symboltable.Scope; @Ignore -public class AcceptanceTest extends BaseNonParserTest { +public class AcceptanceTest extends BaseParserTest { @Test public void testClashingSymbols() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ClassScopeTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ClassScopeTest.java index c7cda7ce2d..6351fe0c35 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ClassScopeTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ClassScopeTest.java @@ -17,6 +17,7 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; @@ -32,7 +33,7 @@ import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; @Ignore -public class ClassScopeTest extends BaseNonParserTest { +public class ClassScopeTest extends BaseParserTest { @Test public void testEnumsClassScope() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/GlobalScopeTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/GlobalScopeTest.java index 42a631f05e..f80b59cdec 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/GlobalScopeTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/GlobalScopeTest.java @@ -13,13 +13,14 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; import net.sourceforge.pmd.lang.symboltable.Scope; @Ignore -public class GlobalScopeTest extends BaseNonParserTest { +public class GlobalScopeTest extends BaseParserTest { @Test public void testClassDeclAppears() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/LocalScopeTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/LocalScopeTest.java index a7a41a0eff..83630f99bc 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/LocalScopeTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/LocalScopeTest.java @@ -13,6 +13,7 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTFormalParameter; import net.sourceforge.pmd.lang.java.ast.ASTLocalVariableDeclaration; @@ -21,7 +22,7 @@ import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; @Ignore -public class LocalScopeTest extends BaseNonParserTest { +public class LocalScopeTest extends BaseParserTest { @Test public void testLocalVariableDeclarationFound() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodNameDeclarationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodNameDeclarationTest.java index 48b3543079..828a5f972f 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodNameDeclarationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodNameDeclarationTest.java @@ -14,13 +14,14 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; @Ignore -public class MethodNameDeclarationTest extends BaseNonParserTest { +public class MethodNameDeclarationTest extends BaseParserTest { @Test public void testEquality() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodScopeTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodScopeTest.java index 34b6ccb5c6..0ca2f77957 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodScopeTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/MethodScopeTest.java @@ -13,13 +13,14 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; @Ignore -public class MethodScopeTest extends BaseNonParserTest { +public class MethodScopeTest extends BaseParserTest { @Test public void testMethodParameterOccurrenceRecorded() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/NameOccurrencesTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/NameOccurrencesTest.java index e2ac16f4f9..01d0a58caa 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/NameOccurrencesTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/NameOccurrencesTest.java @@ -14,11 +14,12 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTPrimaryExpression; @Ignore -public class NameOccurrencesTest extends BaseNonParserTest { +public class NameOccurrencesTest extends BaseParserTest { @Test public void testSuper() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeAndDeclarationFinderTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeAndDeclarationFinderTest.java index 58ec72fc41..4bd3abb318 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeAndDeclarationFinderTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeAndDeclarationFinderTest.java @@ -12,6 +12,7 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceBody; import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; @@ -21,7 +22,7 @@ import net.sourceforge.pmd.lang.java.ast.ASTPrimaryExpression; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; @Ignore -public class ScopeAndDeclarationFinderTest extends BaseNonParserTest { +public class ScopeAndDeclarationFinderTest extends BaseParserTest { /** * Unit test for https://sourceforge.net/p/pmd/bugs/1317/ diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeCreationVisitorTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeCreationVisitorTest.java index 193c660243..d748cf2883 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeCreationVisitorTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/ScopeCreationVisitorTest.java @@ -10,12 +10,13 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTBlock; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTIfStatement; @Ignore -public class ScopeCreationVisitorTest extends BaseNonParserTest { +public class ScopeCreationVisitorTest extends BaseParserTest { @Test public void testScopesAreCreated() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScopeTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScopeTest.java index 609d7fa4aa..befb8bb121 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScopeTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/SourceFileScopeTest.java @@ -15,12 +15,13 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.NameOccurrence; @Ignore -public class SourceFileScopeTest extends BaseNonParserTest { +public class SourceFileScopeTest extends BaseParserTest { @Test public void testClassDeclAppears() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableNameDeclarationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableNameDeclarationTest.java index c205e5f492..b682ba0add 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableNameDeclarationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/symboltable/VariableNameDeclarationTest.java @@ -15,13 +15,14 @@ import org.junit.Ignore; import org.junit.Test; import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.lang.symboltable.NameDeclaration; import net.sourceforge.pmd.lang.symboltable.Scope; @Ignore -public class VariableNameDeclarationTest extends BaseNonParserTest { +public class VariableNameDeclarationTest extends BaseParserTest { @Test public void testConstructor() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/GenericMethodReferenceTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/GenericMethodReferenceTest.java index bbf100514c..08c0232ec2 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/GenericMethodReferenceTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/GenericMethodReferenceTest.java @@ -20,7 +20,7 @@ public class GenericMethodReferenceTest { @Test public void typeResolveVariable() { - ASTCompilationUnit root = JavaParsingHelper.WITH_PROCESSING.parseClass(GenericMethodReference.class); + ASTCompilationUnit root = JavaParsingHelper.DEFAULT.parseClass(GenericMethodReference.class); root.descendants(ASTVariableDeclaratorId.class).forEach(variable -> { Assert.assertTrue(variable.getName().startsWith("supplier")); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/InvocationMatcherTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/InvocationMatcherTest.java index 626a0f6206..598d27eec3 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/InvocationMatcherTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/InvocationMatcherTest.java @@ -11,12 +11,12 @@ import org.hamcrest.MatcherAssert; import org.junit.Assert; import org.junit.Test; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTConstructorCall; import net.sourceforge.pmd.lang.java.ast.ASTMethodCall; import net.sourceforge.pmd.lang.java.ast.InvocationNode; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; -public class InvocationMatcherTest extends BaseNonParserTest { +public class InvocationMatcherTest extends BaseParserTest { @Test public void testSimpleMatcher() { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypeTestUtilTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypeTestUtilTest.java index fc98af1276..72ead82d26 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypeTestUtilTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypeTestUtilTest.java @@ -14,6 +14,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import net.sourceforge.pmd.lang.java.BaseParserTest; import net.sourceforge.pmd.lang.java.ast.ASTAnnotation; import net.sourceforge.pmd.lang.java.ast.ASTAnnotationTypeDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTAnonymousClassDeclaration; @@ -23,10 +24,9 @@ import net.sourceforge.pmd.lang.java.ast.ASTEnumDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTType; import net.sourceforge.pmd.lang.java.ast.TypeNode; -import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest; import net.sourceforge.pmd.lang.java.types.testdata.SomeClassWithAnon; -public class TypeTestUtilTest extends BaseNonParserTest { +public class TypeTestUtilTest extends BaseParserTest { @Rule public final ExpectedException expect = ExpectedException.none(); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypesTreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypesTreeDumpTest.java index 78c7214dcf..6f1180e1fb 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypesTreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/types/TypesTreeDumpTest.java @@ -31,7 +31,7 @@ public class TypesTreeDumpTest extends BaseTreeDumpTest { @Override public @NonNull BaseParsingHelper getParser() { - return JavaParsingHelper.WITH_PROCESSING.withResourceContext(getClass()); + return JavaParsingHelper.DEFAULT.withResourceContext(getClass()); } @Test diff --git a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclarationTest.kt b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclarationTest.kt index 331930a0e7..3dba0caf2a 100644 --- a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclarationTest.kt +++ b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclarationTest.kt @@ -219,6 +219,7 @@ class ASTMethodDeclarationTest : ParserTestSpec({ it::getFormalParameters shouldBe formalsList(1) { child { + it::isVarargs shouldBe true it::getModifiers shouldBe modifiers { annotation("Oha") } diff --git a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt index fa1a6e342a..31d1eb30ad 100644 --- a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt +++ b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt @@ -36,7 +36,7 @@ enum class JavaVersion : Comparable { val pmdVersion get() = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion(pmdName) - val parser: JavaParsingHelper = WITH_PROCESSING.withDefaultVersion(pmdName) + val parser: JavaParsingHelper = DEFAULT.withDefaultVersion(pmdName) operator fun not(): List = values().toList() - this diff --git a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/TestUtilitiesForTypes.kt b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/TestUtilitiesForTypes.kt index 955274f357..6dd913262b 100644 --- a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/TestUtilitiesForTypes.kt +++ b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/types/TestUtilitiesForTypes.kt @@ -28,7 +28,7 @@ import kotlin.test.assertTrue is done lazily. */ -val javaParser: JavaParsingHelper = JavaParsingHelper.WITH_PROCESSING +val javaParser: JavaParsingHelper = JavaParsingHelper.DEFAULT val testTypeSystem: TypeSystem get() = JavaParsingHelper.TEST_TYPE_SYSTEM diff --git a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/JsParsingHelper.java b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/JsParsingHelper.java index 055891146a..ac28fc7203 100644 --- a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/JsParsingHelper.java +++ b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/JsParsingHelper.java @@ -9,7 +9,7 @@ import net.sourceforge.pmd.lang.ecmascript.EcmascriptLanguageModule; public final class JsParsingHelper extends BaseParsingHelper { - public static final JsParsingHelper DEFAULT = new JsParsingHelper(Params.getDefaultProcess()); + public static final JsParsingHelper DEFAULT = new JsParsingHelper(Params.getDefault()); private JsParsingHelper(Params params) { super(EcmascriptLanguageModule.NAME, ASTAstRoot.class, params); diff --git a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/JspParsingHelper.java b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/JspParsingHelper.java index bc647b37c2..46110e66bc 100644 --- a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/JspParsingHelper.java +++ b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/JspParsingHelper.java @@ -9,7 +9,7 @@ import net.sourceforge.pmd.lang.jsp.JspLanguageModule; public final class JspParsingHelper extends BaseParsingHelper { - public static final JspParsingHelper DEFAULT = new JspParsingHelper(Params.getDefaultProcess()); + public static final JspParsingHelper DEFAULT = new JspParsingHelper(Params.getDefault()); private JspParsingHelper(Params params) { super(JspLanguageModule.NAME, ASTCompilationUnit.class, params); 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 59623e4661..268bcd9745 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 @@ -38,10 +38,7 @@ abstract class BaseParsingHelper, T : RootNode companion object { @JvmStatic - val defaultNoProcess = Params(false, null, null, "") - - @JvmStatic - val defaultProcess = Params(true, null, null, "") + val default = Params(true, null, null, "") } } @@ -124,7 +121,6 @@ abstract class BaseParsingHelper, T : RootNode ): T { val lversion = if (version == null) defaultVersion else getVersion(version) val handler = lversion.languageVersionHandler - val parser = handler.parser val source = DataSource.forString(sourceCode, fileName) val toString = DataSource.readToString(source, StandardCharsets.UTF_8) // this removed the BOM val task = Parser.ParserTask(lversion, fileName, toString, SemanticErrorReporter.noop()) @@ -132,35 +128,12 @@ abstract class BaseParsingHelper, T : RootNode handler.declareParserTaskProperties(it) it.setProperty(Parser.ParserTask.COMMENT_MARKER, params.suppressMarker) } - val rootNode = rootClass.cast(parser.parse(task)) - if (params.doProcess) { - postProcessing(handler, lversion, rootNode) - } - return rootNode + return doParse(params, task) } - /** - * Select the processing stages that this should run in [postProcessing], - * by default runs everything. - */ - protected open fun selectProcessingStages(handler: LanguageVersionHandler): List> = - handler.processingStages - - /** - * Called only if [Params.doProcess] is true. - */ - protected open fun postProcessing(handler: LanguageVersionHandler, lversion: LanguageVersion, rootNode: T) { - val astAnalysisContext = object : AstAnalysisContext { - override fun getTypeResolutionClassLoader(): ClassLoader = javaClass.classLoader - - override fun getLanguageVersion(): LanguageVersion = lversion - } - - val stages = selectProcessingStages(handler).sortedWith { o1, o2 -> o1.compare(o2) } - - stages.forEach { - it.processAST(rootNode, astAnalysisContext) - } + protected open fun doParse(params: Params, task: Parser.ParserTask): T { + val parser = task.languageVersion.languageVersionHandler.parser + return rootClass.cast(parser.parse(task)) } /** diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaHandler.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaHandler.java index 1fe768cdb8..2deb0547f9 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaHandler.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaHandler.java @@ -7,16 +7,9 @@ package net.sourceforge.pmd.lang.modelica; import net.sourceforge.pmd.lang.AbstractPmdLanguageVersionHandler; import net.sourceforge.pmd.lang.ast.Parser; import net.sourceforge.pmd.lang.modelica.ast.ModelicaParser; -import net.sourceforge.pmd.lang.modelica.internal.ModelicaProcessingStage; public class ModelicaHandler extends AbstractPmdLanguageVersionHandler { - public ModelicaHandler() { - super(ModelicaProcessingStage.class); - } - - - @Override public Parser getParser() { return new ModelicaParser(); diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java index 3712b7e6e1..2e7d2e0d79 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java @@ -4,10 +4,12 @@ package net.sourceforge.pmd.lang.modelica.ast; +import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.lang.ast.CharStream; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument; import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter; +import net.sourceforge.pmd.lang.modelica.resolver.ModelicaSymbolFacade; public class ModelicaParser extends JjtreeParserAdapter { @@ -19,7 +21,9 @@ public class ModelicaParser extends JjtreeParserAdapter { @Override protected ASTStoredDefinition parseImpl(CharStream cs, ParserTask task) throws ParseException { - return new ModelicaParserImpl(cs).StoredDefinition().makeTaskInfo(task); + ASTStoredDefinition root = new ModelicaParserImpl(cs).StoredDefinition().makeTaskInfo(task); + TimeTracker.bench("Modelica symbols", () -> ModelicaSymbolFacade.process(root)); + return root; } } diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/internal/ModelicaProcessingStage.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/internal/ModelicaProcessingStage.java deleted file mode 100644 index 30f6266a59..0000000000 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/internal/ModelicaProcessingStage.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.modelica.internal; - -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.ast.AstAnalysisContext; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; -import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.modelica.ModelicaLanguageModule; -import net.sourceforge.pmd.lang.modelica.ast.ASTStoredDefinition; -import net.sourceforge.pmd.lang.modelica.resolver.ModelicaSymbolFacade; - -/** - * @author Clément Fournier - */ -public enum ModelicaProcessingStage implements AstProcessingStage { - SYMBOL_RESOLUTION("Symbol resolution") { - @Override - public void processAST(RootNode rootNode, AstAnalysisContext configuration) { - new ModelicaSymbolFacade().initializeWith((ASTStoredDefinition) rootNode); - } - }; - - private final String displayName; - - ModelicaProcessingStage(String displayName) { - this.displayName = displayName; - } - - - @Override - public Language getLanguage() { - return LanguageRegistry.getLanguage(ModelicaLanguageModule.NAME); - } - - @Override - public String getDisplayName() { - return displayName; - } -} diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ModelicaSymbolFacade.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ModelicaSymbolFacade.java index cf91c2edda..6786d3193f 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ModelicaSymbolFacade.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ModelicaSymbolFacade.java @@ -4,10 +4,17 @@ package net.sourceforge.pmd.lang.modelica.resolver; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.modelica.ast.ASTStoredDefinition; -public class ModelicaSymbolFacade { - public void initializeWith(ASTStoredDefinition node) { +@InternalApi +public final class ModelicaSymbolFacade { + + private ModelicaSymbolFacade() { + // util class + } + + public static void process(ASTStoredDefinition node) { ScopeAndDeclarationFinder sc = new ScopeAndDeclarationFinder(); node.acceptVisitor(sc, null); } diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ScopeAndDeclarationFinder.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ScopeAndDeclarationFinder.java index 66a47e3cf9..fb3bceb9a9 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ScopeAndDeclarationFinder.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/resolver/ScopeAndDeclarationFinder.java @@ -14,7 +14,7 @@ import net.sourceforge.pmd.lang.modelica.ast.InternalModelicaNodeApi; import net.sourceforge.pmd.lang.modelica.ast.ModelicaNode; import net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitorAdapter; -public class ScopeAndDeclarationFinder extends ModelicaParserVisitorAdapter { +class ScopeAndDeclarationFinder extends ModelicaParserVisitorAdapter { private final Deque scopes = new ArrayDeque<>(); ScopeAndDeclarationFinder() { diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java index 417cd767fb..5950b7fe9c 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java @@ -6,11 +6,9 @@ package net.sourceforge.pmd.lang.modelica.rule; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.modelica.ModelicaLanguageModule; import net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitor; -import net.sourceforge.pmd.lang.modelica.internal.ModelicaProcessingStage; import net.sourceforge.pmd.lang.rule.AbstractRule; /** @@ -26,11 +24,4 @@ public abstract class AbstractModelicaRule extends AbstractRule implements Model target.acceptVisitor(this, ctx); } - @Override - public boolean dependsOn(AstProcessingStage stage) { - if (!(stage instanceof ModelicaProcessingStage)) { - throw new IllegalArgumentException("Processing stage wasn't a Modelica one: " + stage); - } - return true; - } } diff --git a/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/ModelicaParsingHelper.java b/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/ModelicaParsingHelper.java index de4c39c3bd..ddc3cde1ad 100644 --- a/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/ModelicaParsingHelper.java +++ b/pmd-modelica/src/test/java/net/sourceforge/pmd/lang/modelica/ModelicaParsingHelper.java @@ -11,7 +11,7 @@ import net.sourceforge.pmd.lang.modelica.ast.ASTStoredDefinition; public class ModelicaParsingHelper extends BaseParsingHelper { /** This runs all processing stages when parsing. */ - public static final ModelicaParsingHelper DEFAULT = new ModelicaParsingHelper(Params.getDefaultProcess()); + public static final ModelicaParsingHelper DEFAULT = new ModelicaParsingHelper(Params.getDefault()); private ModelicaParsingHelper(Params params) { super(ModelicaLanguageModule.NAME, ASTStoredDefinition.class, params); diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLHandler.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLHandler.java index a403100e40..5c6b7295e3 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLHandler.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLHandler.java @@ -16,11 +16,6 @@ import net.sourceforge.pmd.lang.plsql.ast.PLSQLParser; */ public class PLSQLHandler extends AbstractPmdLanguageVersionHandler { - - public PLSQLHandler() { - super(PlsqlProcessingStage.class); - } - @Override public Parser getParser() { return new PLSQLParser(); diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PlsqlProcessingStage.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PlsqlProcessingStage.java deleted file mode 100644 index 53f496db42..0000000000 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PlsqlProcessingStage.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.plsql; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import net.sourceforge.pmd.annotation.Experimental; -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.ast.AstAnalysisContext; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; -import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.plsql.ast.ASTInput; -import net.sourceforge.pmd.lang.plsql.symboltable.SymbolFacade; - - -/** - * PL-SQL AST processing stages. - * - * @author Clément Fournier - * @since 7.0.0 - */ -@Experimental -public enum PlsqlProcessingStage implements AstProcessingStage { - - /** - * Symbol table analysis. - */ - SYMBOL_RESOLUTION("Symbol table") { - @Override - public void processAST(RootNode rootNode, AstAnalysisContext configuration) { - new SymbolFacade().initializeWith((ASTInput) rootNode); - } - }; - - - private final String displayName; - private final List dependencies; - - - PlsqlProcessingStage(String displayName, PlsqlProcessingStage... dependencies) { - this.displayName = displayName; - this.dependencies = Collections.unmodifiableList(Arrays.asList(dependencies)); - } - - - @Override - public Language getLanguage() { - return LanguageRegistry.findLanguageByTerseName("plsql"); - } - - - @Override - public List getDependencies() { - return dependencies; - } - - - @Override - public String getDisplayName() { - return displayName; - } - - -} - diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/ast/PLSQLParser.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/ast/PLSQLParser.java index c15ab94e8d..611d7d077a 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/ast/PLSQLParser.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/ast/PLSQLParser.java @@ -6,10 +6,12 @@ package net.sourceforge.pmd.lang.plsql.ast; import org.checkerframework.checker.nullness.qual.Nullable; +import net.sourceforge.pmd.benchmark.TimeTracker; import net.sourceforge.pmd.lang.ast.CharStream; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument; import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter; +import net.sourceforge.pmd.lang.plsql.symboltable.SymbolFacade; public class PLSQLParser extends JjtreeParserAdapter { @@ -25,7 +27,9 @@ public class PLSQLParser extends JjtreeParserAdapter { @Override protected ASTInput parseImpl(CharStream cs, ParserTask task) throws ParseException { - return new PLSQLParserImpl(cs).Input().addTaskInfo(task); + ASTInput root = new PLSQLParserImpl(cs).Input().addTaskInfo(task); + TimeTracker.bench("PLSQL symbols", () -> SymbolFacade.process(root)); + return root; } } diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java index 7d5c66d05a..97e226c28e 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java @@ -7,10 +7,8 @@ package net.sourceforge.pmd.lang.plsql.rule; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.ast.AstProcessingStage; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.plsql.PLSQLLanguageModule; -import net.sourceforge.pmd.lang.plsql.PlsqlProcessingStage; import net.sourceforge.pmd.lang.plsql.ast.ASTInput; import net.sourceforge.pmd.lang.plsql.ast.ASTPackageBody; import net.sourceforge.pmd.lang.plsql.ast.ASTPackageSpecification; @@ -82,14 +80,6 @@ public abstract class AbstractPLSQLRule extends AbstractRule implements PLSQLPar return false; } - @Override - public boolean dependsOn(AstProcessingStage stage) { - if (!(stage instanceof PlsqlProcessingStage)) { - throw new IllegalArgumentException("Processing stage wasn't a " + PLSQLLanguageModule.NAME + " one: " + stage); - } - return true; - } - /* * Treat all Executable Code */ diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SymbolFacade.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SymbolFacade.java index 88f645dd9b..3cda6ef332 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SymbolFacade.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/symboltable/SymbolFacade.java @@ -6,8 +6,13 @@ package net.sourceforge.pmd.lang.plsql.symboltable; import net.sourceforge.pmd.lang.plsql.ast.ASTInput; -public class SymbolFacade { - public void initializeWith(ASTInput node) { +public final class SymbolFacade { + + private SymbolFacade() { + + } + + public static void process(ASTInput node) { ScopeAndDeclarationFinder sc = new ScopeAndDeclarationFinder(); node.acceptVisitor(sc, null); OccurrenceFinder of = new OccurrenceFinder(); diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/AbstractPLSQLParserTst.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/AbstractPLSQLParserTst.java index 9d49470e56..058bcb2125 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/AbstractPLSQLParserTst.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/AbstractPLSQLParserTst.java @@ -6,6 +6,6 @@ package net.sourceforge.pmd.lang.plsql; public abstract class AbstractPLSQLParserTst { - protected final PlsqlParsingHelper plsql = PlsqlParsingHelper.WITH_PROCESSING.withResourceContext(getClass()); + protected final PlsqlParsingHelper plsql = PlsqlParsingHelper.DEFAULT.withResourceContext(getClass()); } diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PlsqlParsingHelper.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PlsqlParsingHelper.java index c340aabaad..57400761e0 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PlsqlParsingHelper.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PlsqlParsingHelper.java @@ -9,10 +9,8 @@ import net.sourceforge.pmd.lang.plsql.ast.ASTInput; public class PlsqlParsingHelper extends BaseParsingHelper { - /** This just runs the parser and no processing stages. */ - public static final PlsqlParsingHelper JUST_PARSE = new PlsqlParsingHelper(Params.getDefaultNoProcess()); /** This runs all processing stages when parsing. */ - public static final PlsqlParsingHelper WITH_PROCESSING = new PlsqlParsingHelper(Params.getDefaultProcess()); + public static final PlsqlParsingHelper DEFAULT = new PlsqlParsingHelper(Params.getDefault()); private PlsqlParsingHelper(Params params) { super(PLSQLLanguageModule.NAME, ASTInput.class, params); diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/PlsqlTreeDumpTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/PlsqlTreeDumpTest.java index 3a4c1cc8f8..9e2e7c6699 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/PlsqlTreeDumpTest.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/PlsqlTreeDumpTest.java @@ -19,7 +19,7 @@ public class PlsqlTreeDumpTest extends BaseTreeDumpTest { @Override public BaseParsingHelper getParser() { - return PlsqlParsingHelper.WITH_PROCESSING.withResourceContext(getClass()); + return PlsqlParsingHelper.DEFAULT.withResourceContext(getClass()); } @Test diff --git a/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java index 7c4e8d4978..f2387cc649 100644 --- a/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java +++ b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java @@ -9,7 +9,7 @@ import net.sourceforge.pmd.lang.scala.ScalaLanguageModule; public final class ScalaParsingHelper extends BaseParsingHelper { - public static final ScalaParsingHelper DEFAULT = new ScalaParsingHelper(Params.getDefaultProcess()); + public static final ScalaParsingHelper DEFAULT = new ScalaParsingHelper(Params.getDefault()); private ScalaParsingHelper(Params params) { super(ScalaLanguageModule.NAME, ASTSource.class, params); diff --git a/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/ast/SwiftParsingHelper.java b/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/ast/SwiftParsingHelper.java index ebfb36b62d..bc1828ac0f 100644 --- a/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/ast/SwiftParsingHelper.java +++ b/pmd-swift/src/test/java/net/sourceforge/pmd/lang/swift/ast/SwiftParsingHelper.java @@ -15,7 +15,7 @@ import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwTopLevel; */ public class SwiftParsingHelper extends BaseParsingHelper { - public static final SwiftParsingHelper DEFAULT = new SwiftParsingHelper(Params.getDefaultNoProcess()); + public static final SwiftParsingHelper DEFAULT = new SwiftParsingHelper(Params.getDefault()); public SwiftParsingHelper(@NotNull Params params) { diff --git a/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/ast/VfParsingHelper.java b/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/ast/VfParsingHelper.java index bcb97098f5..bd9292b8bd 100644 --- a/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/ast/VfParsingHelper.java +++ b/pmd-visualforce/src/test/java/net/sourceforge/pmd/lang/vf/ast/VfParsingHelper.java @@ -9,7 +9,7 @@ import net.sourceforge.pmd.lang.vf.VfLanguageModule; public final class VfParsingHelper extends BaseParsingHelper { - public static final VfParsingHelper DEFAULT = new VfParsingHelper(Params.getDefaultProcess()); + public static final VfParsingHelper DEFAULT = new VfParsingHelper(Params.getDefault()); private VfParsingHelper(Params params) { super(VfLanguageModule.NAME, ASTCompilationUnit.class, params); diff --git a/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/ast/VmParsingHelper.java b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/ast/VmParsingHelper.java index 00a2319c63..38365e7270 100644 --- a/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/ast/VmParsingHelper.java +++ b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/ast/VmParsingHelper.java @@ -9,7 +9,7 @@ import net.sourceforge.pmd.lang.vm.VmLanguageModule; public final class VmParsingHelper extends BaseParsingHelper { - public static final VmParsingHelper DEFAULT = new VmParsingHelper(Params.getDefaultProcess()); + public static final VmParsingHelper DEFAULT = new VmParsingHelper(Params.getDefault()); private VmParsingHelper(Params params) { super(VmLanguageModule.NAME, ASTTemplate.class, params); diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParsingHelper.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParsingHelper.java index 8faa47e547..62974c6509 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParsingHelper.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParsingHelper.java @@ -14,9 +14,9 @@ import net.sourceforge.pmd.lang.xml.ast.internal.XmlParserImpl.RootXmlNode; */ public final class XmlParsingHelper extends BaseParsingHelper { - public static final XmlParsingHelper XML = new XmlParsingHelper(XmlLanguageModule.NAME, Params.getDefaultProcess()); - public static final XmlParsingHelper WSDL = new XmlParsingHelper(WsdlLanguageModule.NAME, Params.getDefaultProcess()); - public static final XmlParsingHelper POM = new XmlParsingHelper(PomLanguageModule.NAME, Params.getDefaultProcess()); + public static final XmlParsingHelper XML = new XmlParsingHelper(XmlLanguageModule.NAME, Params.getDefault()); + public static final XmlParsingHelper WSDL = new XmlParsingHelper(WsdlLanguageModule.NAME, Params.getDefault()); + public static final XmlParsingHelper POM = new XmlParsingHelper(PomLanguageModule.NAME, Params.getDefault()); private XmlParsingHelper(String langName, Params params) {