fix pmd-vf

needs a dependency mechanism
to prevent apex from being pruned
This commit is contained in:
Clément Fournier
2022-07-21 15:13:13 +02:00
parent 5c2260bd0f
commit 2cb54ff1bc
15 changed files with 124 additions and 29 deletions

View File

@@ -4,10 +4,10 @@
package net.sourceforge.pmd.lang.vf;
import net.sourceforge.pmd.processor.BatchLanguageProcessor;
import net.sourceforge.pmd.lang.LanguageVersionHandler;
import net.sourceforge.pmd.lang.ast.Parser;
import net.sourceforge.pmd.lang.vf.ast.VfParser;
import net.sourceforge.pmd.processor.BatchLanguageProcessor;
public class VfHandler extends BatchLanguageProcessor<VfLanguageProperties> implements LanguageVersionHandler {

View File

@@ -5,7 +5,9 @@
package net.sourceforge.pmd.lang.vf;
import net.sourceforge.pmd.lang.Language;
import net.sourceforge.pmd.lang.LanguagePropertyBundle;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.apex.ApexLanguageModule;
import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase;
@@ -18,10 +20,17 @@ public class VfLanguageModule extends SimpleLanguageModuleBase {
public static final String TERSE_NAME = "vf";
public VfLanguageModule() {
super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("page", "component"),
super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
.extensions("page", "component")
.dependsOnLanguage(ApexLanguageModule.TERSE_NAME),
p -> new VfHandler((VfLanguageProperties) p));
}
@Override
public LanguagePropertyBundle newPropertyBundle() {
return new VfLanguageProperties();
}
public static Language getInstance() {
return LanguageRegistry.PMD.getLanguageByFullName(NAME);
}

View File

@@ -40,7 +40,7 @@ class ApexClassPropertyTypes extends SalesforceFieldTypes {
private final ApexLanguageProcessor apexProcessor;
private final LanguageProcessorRegistry lpReg;
public ApexClassPropertyTypes(LanguageProcessorRegistry lpReg) {
ApexClassPropertyTypes(LanguageProcessorRegistry lpReg) {
this.apexProcessor = (ApexLanguageProcessor) lpReg.getProcessor(ApexLanguageModule.getInstance());
this.lpReg = lpReg;
}

View File

@@ -15,6 +15,7 @@ import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import org.junit.Test;
import net.sourceforge.pmd.lang.LanguageProcessorRegistry;
import net.sourceforge.pmd.lang.vf.VFTestUtils;
import apex.jorje.semantic.symbol.type.BasicType;
@@ -29,7 +30,9 @@ public class ApexClassPropertyTypesVisitorTest {
.toAbsolutePath();
ApexClassPropertyTypesVisitor visitor = new ApexClassPropertyTypesVisitor();
ApexClassPropertyTypes.parseApex(apexPath).acceptVisitor(visitor, null);
try (LanguageProcessorRegistry lpReg = VFTestUtils.fakeLpRegistry()) {
new ApexClassPropertyTypes(lpReg).parseApex(apexPath).acceptVisitor(visitor, null);
}
List<Pair<String, BasicType>> variables = visitor.getVariables();
assertEquals(7, variables.size());

View File

@@ -4,7 +4,11 @@
package net.sourceforge.pmd.lang.vf.ast;
import org.checkerframework.checker.nullness.qual.NonNull;
import net.sourceforge.pmd.lang.LanguageProcessorRegistry;
import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper;
import net.sourceforge.pmd.lang.vf.VFTestUtils;
import net.sourceforge.pmd.lang.vf.VfLanguageModule;
public final class VfParsingHelper extends BaseParsingHelper<VfParsingHelper, ASTCompilationUnit> {
@@ -15,6 +19,12 @@ public final class VfParsingHelper extends BaseParsingHelper<VfParsingHelper, AS
super(VfLanguageModule.NAME, ASTCompilationUnit.class, params);
}
@Override
protected @NonNull LanguageProcessorRegistry loadLanguages(@NonNull Params params) {
// We need to register both apex and VF, the default is just to register VF
return VFTestUtils.fakeLpRegistry();
}
@Override
protected VfParsingHelper clone(Params params) {
return new VfParsingHelper(params);