From 2431a41d74f9cfa03e7291849a0cc41ce5af51e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sun, 15 Nov 2020 17:03:52 +0100 Subject: [PATCH] Changes to VF, JSP, VM --- .../sourceforge/pmd/lang/jsp/JspHandler.java | 2 +- .../pmd/lang/jsp/ast/ASTCompilationUnit.java | 22 +++++++++++++++++++ .../pmd/lang/jsp/ast/JspParser.java | 9 ++------ .../pmd/lang/jsp/ast/XPathJspRuleTest.java | 22 ++----------------- .../sourceforge/pmd/lang/vf/VfHandler.java | 2 +- .../pmd/lang/vf/ast/ASTCompilationUnit.java | 21 ++++++++++++++++++ .../sourceforge/pmd/lang/vf/ast/VfParser.java | 9 ++------ .../sourceforge/pmd/lang/vm/VmHandler.java | 2 +- .../pmd/lang/vm/ast/ASTTemplate.java | 21 ++++++++++++++++++ .../sourceforge/pmd/lang/vm/ast/VmParser.java | 9 ++------ 10 files changed, 75 insertions(+), 44 deletions(-) diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspHandler.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspHandler.java index ebfa9b7785..578c7e186a 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspHandler.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspHandler.java @@ -18,7 +18,7 @@ public class JspHandler extends AbstractPmdLanguageVersionHandler { @Override public Parser getParser(ParserOptions parserOptions) { - return new JspParser(parserOptions); + return new JspParser(); } } diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/ASTCompilationUnit.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/ASTCompilationUnit.java index 0c1a148d33..ad65090897 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/ASTCompilationUnit.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/ASTCompilationUnit.java @@ -4,14 +4,36 @@ package net.sourceforge.pmd.lang.jsp.ast; +import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.Parser.ParserTask; import net.sourceforge.pmd.lang.ast.RootNode; public final class ASTCompilationUnit extends AbstractJspNode implements RootNode { + private LanguageVersion languageVersion; + private String filename; + ASTCompilationUnit(int id) { super(id); } + @Override + public LanguageVersion getLanguageVersion() { + return languageVersion; + } + + + @Override + public String getSourceCodeFile() { + return filename; + } + + ASTCompilationUnit addTaskInfo(ParserTask languageVersion) { + this.languageVersion = languageVersion.getLanguageVersion(); + this.filename = languageVersion.getFileDisplayName(); + return this; + } + @Override protected R acceptVisitor(JspVisitor visitor, P data) { return visitor.visit(this, data); diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/JspParser.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/JspParser.java index 33b7002294..0ce7dbefa9 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/JspParser.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/ast/JspParser.java @@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.jsp.ast; import org.checkerframework.checker.nullness.qual.Nullable; -import net.sourceforge.pmd.lang.ParserOptions; import net.sourceforge.pmd.lang.ast.CharStream; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument; @@ -17,10 +16,6 @@ import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter; */ public final class JspParser extends JjtreeParserAdapter { - public JspParser(ParserOptions parserOptions) { - super(parserOptions); - } - @Override protected JavaccTokenDocument newDocument(String fullText) { return new JavaccTokenDocument(fullText) { @@ -32,8 +27,8 @@ public final class JspParser extends JjtreeParserAdapter { } @Override - protected ASTCompilationUnit parseImpl(CharStream cs, ParserOptions options) throws ParseException { - return new JspParserImpl(cs).CompilationUnit(); + protected ASTCompilationUnit parseImpl(CharStream cs, ParserTask task) throws ParseException { + return new JspParserImpl(cs).CompilationUnit().addTaskInfo(task); } } diff --git a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java index 90b38f89a6..e0942e832b 100644 --- a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java +++ b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/ast/XPathJspRuleTest.java @@ -6,19 +6,11 @@ package net.sourceforge.pmd.lang.jsp.ast; import static org.junit.Assert.assertEquals; -import java.io.StringReader; - import org.junit.Test; -import net.sourceforge.pmd.PMD; -import net.sourceforge.pmd.PMDException; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.RuleSets; import net.sourceforge.pmd.RuleViolation; -import net.sourceforge.pmd.RulesetsFactoryUtils; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.jsp.JspLanguageModule; import net.sourceforge.pmd.lang.rule.XPathRule; @@ -29,24 +21,14 @@ public class XPathJspRuleTest extends RuleTst { /** * Test matching a XPath expression against a JSP source. - * @throws PMDException */ @Test - public void testExpressionMatching() throws PMDException { + public void testExpressionMatching() { Rule rule = new XPathRule(XPathVersion.XPATH_3_1, XPATH_EXPRESSION); rule.setMessage("Test"); rule.setLanguage(LanguageRegistry.getLanguage(JspLanguageModule.NAME)); - RuleSet rules = RulesetsFactoryUtils.defaultFactory().createSingleRuleRuleSet(rule); - RuleContext ctx = new RuleContext(); - Report report = new Report(); - ctx.setReport(report); - ctx.setSourceCodeFilename("n/a"); - ctx.setLanguageVersion(LanguageRegistry.getLanguage(JspLanguageModule.NAME).getDefaultVersion()); - - PMD p = new PMD(); - - p.getSourceCodeProcessor().processSourceCode(new StringReader(MATCH), new RuleSets(rules), ctx); + Report report = JspParsingHelper.DEFAULT.executeRule(rule, MATCH); assertEquals("One violation expected!", 1, report.getViolations().size()); diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfHandler.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfHandler.java index 734c742be1..fa953b9fef 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfHandler.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfHandler.java @@ -13,7 +13,7 @@ public class VfHandler extends AbstractPmdLanguageVersionHandler { @Override public Parser getParser(ParserOptions parserOptions) { - return new VfParser(parserOptions); + return new VfParser(); } } diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/ASTCompilationUnit.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/ASTCompilationUnit.java index e999cee515..028a83f0d3 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/ASTCompilationUnit.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/ASTCompilationUnit.java @@ -4,14 +4,35 @@ package net.sourceforge.pmd.lang.vf.ast; +import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.Parser.ParserTask; import net.sourceforge.pmd.lang.ast.RootNode; public final class ASTCompilationUnit extends AbstractVfNode implements RootNode { + private LanguageVersion languageVersion; + private String filename; + ASTCompilationUnit(int id) { super(id); } + @Override + public LanguageVersion getLanguageVersion() { + return languageVersion; + } + + @Override + public String getSourceCodeFile() { + return filename; + } + + ASTCompilationUnit addTaskInfo(ParserTask languageVersion) { + this.languageVersion = languageVersion.getLanguageVersion(); + this.filename = languageVersion.getFileDisplayName(); + return this; + } + @Override protected R acceptVfVisitor(VfVisitor visitor, P data) { return visitor.visit(this, data); diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/VfParser.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/VfParser.java index 1a288cc52b..639a583bc2 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/VfParser.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/ast/VfParser.java @@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.vf.ast; import org.checkerframework.checker.nullness.qual.Nullable; -import net.sourceforge.pmd.lang.ParserOptions; import net.sourceforge.pmd.lang.ast.CharStream; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument; @@ -17,10 +16,6 @@ import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter; */ public final class VfParser extends JjtreeParserAdapter { - public VfParser(ParserOptions parserOptions) { - super(parserOptions); - } - @Override protected JavaccTokenDocument newDocument(String fullText) { return new JavaccTokenDocument(fullText) { @@ -32,8 +27,8 @@ public final class VfParser extends JjtreeParserAdapter { } @Override - protected ASTCompilationUnit parseImpl(CharStream cs, ParserOptions options) throws ParseException { - return new VfParserImpl(cs).CompilationUnit(); + protected ASTCompilationUnit parseImpl(CharStream cs, ParserTask task) throws ParseException { + return new VfParserImpl(cs).CompilationUnit().addTaskInfo(task); } } diff --git a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmHandler.java b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmHandler.java index b6221bc874..8632d9d0bf 100644 --- a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmHandler.java +++ b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmHandler.java @@ -18,7 +18,7 @@ public class VmHandler extends AbstractPmdLanguageVersionHandler { @Override public Parser getParser(final ParserOptions parserOptions) { - return new VmParser(parserOptions); + return new VmParser(); } } diff --git a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/ASTTemplate.java b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/ASTTemplate.java index 246cc4cda5..3d72d5d549 100644 --- a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/ASTTemplate.java +++ b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/ASTTemplate.java @@ -4,14 +4,35 @@ package net.sourceforge.pmd.lang.vm.ast; +import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.Parser.ParserTask; import net.sourceforge.pmd.lang.ast.RootNode; public final class ASTTemplate extends AbstractVmNode implements RootNode { + private LanguageVersion languageVersion; + private String filename; + public ASTTemplate(int id) { super(id); } + @Override + public LanguageVersion getLanguageVersion() { + return languageVersion; + } + + @Override + public String getSourceCodeFile() { + return filename; + } + + ASTTemplate addTaskInfo(ParserTask languageVersion) { + this.languageVersion = languageVersion.getLanguageVersion(); + this.filename = languageVersion.getFileDisplayName(); + return this; + } + @Override protected R acceptVmVisitor(VmVisitor visitor, P data) { diff --git a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/VmParser.java b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/VmParser.java index 09f53ca99e..ceb5a36baa 100644 --- a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/VmParser.java +++ b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/ast/VmParser.java @@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.vm.ast; import org.checkerframework.checker.nullness.qual.Nullable; -import net.sourceforge.pmd.lang.ParserOptions; import net.sourceforge.pmd.lang.ast.CharStream; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken; @@ -18,18 +17,14 @@ import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter; */ public class VmParser extends JjtreeParserAdapter { - public VmParser(final ParserOptions parserOptions) { - super(parserOptions); - } - @Override protected JavaccTokenDocument newDocument(String fullText) { return new VmTokenDocument(fullText); } @Override - protected ASTTemplate parseImpl(CharStream cs, ParserOptions options) throws ParseException { - return new VmParserImpl(cs).Template(); + protected ASTTemplate parseImpl(CharStream cs, ParserTask task) throws ParseException { + return new VmParserImpl(cs).Template().addTaskInfo(task); }